From b052cda851060f668399291ae234ecf7395b7a1b Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Fri, 26 Jun 2026 04:19:03 +0000 Subject: [PATCH 01/12] feat: sync packages from constructive-db/pgpm-modules Synchronize all pgpm module packages to match the current state of pgpm-modules/ in constructive-db (main branch). Key changes: - Updated database-jobs (add_job, jobs table, principal_id support) - Added jwt-claims current_principal_id procedure - Updated metaschema-modules (new function_deployment_module, constraints) - Updated services (enforce_api_exposure trigger) - Updated package versions and control files across all modules - Removed uuid package (no longer in constructive-db) - Added new SQL bundle files matching constructive-db versions --- packages/achievements/README.md | 23 +- packages/achievements/package.json | 6 +- .../sql/pgpm-achievements--0.15.3.sql | 280 - packages/base32/README.md | 23 +- packages/base32/package.json | 6 +- packages/base32/sql/pgpm-base32--0.15.3.sql | 327 - packages/database-jobs/Makefile | 2 +- packages/database-jobs/README.md | 23 +- .../__tests__/__snapshots__/jobs.test.ts.snap | 1 + packages/database-jobs/__tests__/jobs.test.ts | 35 +- .../schemas/app_jobs/procedures/add_job.sql | 8 + .../schemas/app_jobs/tables/jobs/table.sql | 2 + packages/database-jobs/package.json | 6 +- .../database-jobs/pgpm-database-jobs.control | 2 +- ...6.3.sql => pgpm-database-jobs--0.22.0.sql} | 0 packages/defaults/README.md | 23 +- packages/defaults/package.json | 6 +- .../defaults/sql/pgpm-defaults--0.15.3.sql | 20 - packages/encrypted-secrets-table/Makefile | 2 +- packages/encrypted-secrets-table/README.md | 23 +- .../__snapshots__/secrets-table.test.ts.snap | 2 +- packages/encrypted-secrets-table/package.json | 6 +- .../pgpm-encrypted-secrets-table.control | 2 +- ... pgpm-encrypted-secrets-table--0.15.5.sql} | 0 packages/encrypted-secrets/README.md | 23 +- packages/encrypted-secrets/package.json | 6 +- .../sql/pgpm-encrypted-secrets--0.15.3.sql | 231 - packages/faker/README.md | 23 +- packages/faker/package.json | 6 +- packages/faker/sql/pgpm-faker--0.15.3.sql | 10404 ---------------- packages/geotypes/README.md | 23 +- packages/geotypes/package.json | 6 +- .../geotypes/sql/pgpm-geo-types--0.15.3.sql | 16 - packages/inflection-db/.npmignore | 2 - packages/inflection-db/Makefile | 3 +- packages/inflection-db/README.md | 23 +- packages/inflection-db/inflection-db.control | 2 +- packages/inflection-db/package.json | 38 +- ...b--0.26.4.sql => inflection-db--0.0.1.sql} | 0 packages/inflection/README.md | 23 +- packages/inflection/package.json | 6 +- .../sql/pgpm-inflection--0.15.3.sql | 482 - packages/jobs/Makefile | 2 +- packages/jobs/README.md | 23 +- packages/jobs/package.json | 6 +- packages/jobs/pgpm-jobs.control | 2 +- ...jobs--0.26.0.sql => pgpm-jobs--0.15.5.sql} | 0 packages/jwt-claims/README.md | 23 +- .../procedures/current_principal_id.sql | 34 + packages/jwt-claims/package.json | 6 +- packages/jwt-claims/pgpm.plan | 1 + .../procedures/current_principal_id.sql | 7 + .../procedures/current_principal_id.sql | 10 + packages/ltree-helpers/LICENSE | 22 - packages/ltree-helpers/README.md | 106 - .../__tests__/ltree-helpers.test.ts | 92 - packages/ltree-helpers/jest.config.js | 15 - packages/ltree-helpers/package.json | 6 +- .../sql/pgpm-ltree-helpers--0.21.0.sql | 28 - packages/measurements/README.md | 23 +- packages/measurements/package.json | 6 +- .../sql/pgpm-measurements--0.15.3.sql | 84 - packages/metaschema-modules/Makefile | 2 +- packages/metaschema-modules/README.md | 23 +- .../__snapshots__/modules.test.ts.snap | 357 - .../__tests__/modules.test.ts | 4 +- .../tables/agent_module/table.sql | 4 + .../tables/billing_module/table.sql | 4 + .../tables/compute_log_module/table.sql | 4 + .../tables/config_secrets_module/table.sql | 4 + .../tables/db_usage_module/table.sql | 4 + .../tables/events_module/table.sql | 4 + .../function_deployment_module/table.sql | 81 + .../constraints/one_platform_database.sql | 18 + .../tables/graph_module/table.sql | 7 +- .../tables/hierarchy_module/table.sql | 2 +- .../identity_providers_module/table.sql | 4 + .../tables/inference_log_module/table.sql | 4 + .../tables/invites_module/table.sql | 4 + .../tables/limits_module/table.sql | 4 + .../tables/memberships_module/table.sql | 4 + .../tables/merkle_store_module/table.sql | 5 + .../tables/namespace_module/table.sql | 6 + .../tables/notifications_module/table.sql | 4 + .../tables/permissions_module/table.sql | 4 + .../tables/plans_module/table.sql | 4 + .../tables/profiles_module/table.sql | 4 + .../tables/rate_limit_meters_module/table.sql | 4 + .../tables/storage_log_module/table.sql | 4 + .../tables/storage_module/table.sql | 8 +- .../tables/transfer_log_module/table.sql | 4 + .../metaschema-modules.control | 2 +- packages/metaschema-modules/package.json | 6 +- packages/metaschema-modules/pgpm.plan | 4 +- .../tables/agent_module/table.sql | 7 - .../tables/config_secrets_module/table.sql | 2 +- .../config_secrets_org_module/table.sql | 7 - .../tables/entity_type_provision/table.sql | 7 - .../function_deployment_module/table.sql | 7 + .../constraints/one_platform_database.sql | 7 + .../tables/graph_module/table.sql | 7 - .../tables/merkle_store_module/table.sql | 7 - .../tables/session_secrets_module/table.sql | 7 - .../tables/user_credentials_module/table.sql | 2 +- .../tables/user_settings_module/table.sql | 2 +- ...6.5.sql => metaschema-modules--0.15.5.sql} | 580 +- .../tables/agent_chat_module/table.sql | 20 + .../tables/agent_module/table.sql | 7 - .../tables/blueprint/table.sql | 5 + .../tables/compute_log_module/table.sql | 3 +- .../config_secrets_org_module/table.sql | 7 - .../tables/db_usage_module/table.sql | 9 +- .../tables/entity_type_provision/table.sql | 7 - .../function_deployment_module/table.sql | 14 + .../function_invocation_module/table.sql | 10 +- .../constraints/one_platform_database.sql | 11 + .../tables/graph_module/table.sql | 7 - .../tables/inference_log_module/table.sql | 3 +- .../tables/merkle_store_module/table.sql | 7 - .../tables/namespace_module/table.sql | 4 +- .../tables/profiles_module/table.sql | 3 +- .../tables/relation_provision/table.sql | 5 +- .../tables/secure_table_provision/table.sql | 3 +- .../tables/session_secrets_module/table.sql | 7 - .../tables/storage_log_module/table.sql | 2 +- .../tables/transfer_log_module/table.sql | 2 +- .../tables/user_settings_module/table.sql | 2 +- packages/metaschema-schema/Makefile | 2 +- packages/metaschema-schema/README.md | 30 +- .../metaschema-schema.control | 2 +- packages/metaschema-schema/package.json | 6 +- ...29.0.sql => metaschema-schema--0.15.5.sql} | 692 +- .../metaschema_public/tables/view/table.sql | 2 +- packages/object-store/README.md | 24 +- packages/object-store/package.json | 4 +- packages/object-tree/Makefile | 2 +- packages/object-tree/README.md | 24 +- packages/object-tree/object-tree.control | 2 +- packages/object-tree/package.json | 4 +- .../procedures/set_and_commit.sql | 1 - ...ee--0.26.2.sql => object-tree--0.15.5.sql} | 54 +- packages/partman/Makefile | 2 +- packages/partman/README.md | 25 +- packages/partman/package.json | 6 +- packages/partman/pgpm-partman.control | 2 +- ...an--0.26.1.sql => pgpm-partman--0.0.1.sql} | 33 +- packages/services/Makefile | 2 +- .../__snapshots__/services.test.ts.snap | 147 - packages/services/__tests__/services.test.ts | 210 - .../triggers/enforce_api_exposure.sql | 55 + packages/services/jest.config.js | 15 - packages/services/package.json | 4 +- packages/services/pgpm.plan | 1 + .../schemas/services_private/schema.sql | 7 - .../triggers/enforce_api_exposure.sql | 8 + .../revert/schemas/services_public/schema.sql | 7 - .../tables/api_modules/table.sql | 7 - .../tables/api_schemas/table.sql | 7 - .../services_public/tables/apis/table.sql | 7 - .../services_public/tables/apps/table.sql | 7 - .../services_public/tables/domains/table.sql | 7 - .../tables/site_metadata/table.sql | 7 - .../tables/site_modules/table.sql | 7 - .../tables/site_themes/table.sql | 7 - .../services_public/tables/sites/table.sql | 7 - packages/services/services.control | 2 +- ...rvices--0.26.3.sql => services--0.1.0.sql} | 45 +- .../triggers/enforce_api_exposure.sql | 10 + packages/stamps/README.md | 23 +- packages/stamps/package.json | 6 +- packages/stamps/sql/pgpm-stamps--0.15.3.sql | 33 - packages/totp/README.md | 23 +- packages/totp/package.json | 6 +- packages/totp/sql/pgpm-totp--0.15.3.sql | 173 - packages/types/README.md | 23 +- packages/types/package.json | 6 +- packages/utils/README.md | 23 +- packages/utils/package.json | 6 +- packages/utils/sql/pgpm-utils--0.15.3.sql | 64 - packages/uuid/.npmignore | 2 - packages/uuid/LICENSE | 22 - packages/uuid/Makefile | 6 - packages/uuid/README.md | 303 - packages/uuid/__tests__/uuid.test.ts | 90 - packages/uuid/deploy/extension/defaults.sql | 8 - .../procedures/pseudo_order_seed_uuid.sql | 50 - .../uuids/procedures/pseudo_order_uuid.sql | 27 - .../trigger_set_uuid_related_field.sql | 29 - .../procedures/trigger_set_uuid_seed.sql | 24 - packages/uuid/deploy/schemas/uuids/schema.sql | 16 - packages/uuid/jest.config.js | 15 - packages/uuid/package.json | 37 - packages/uuid/pgpm-uuid.control | 8 - packages/uuid/pgpm.plan | 9 - packages/uuid/revert/extension/defaults.sql | 5 - .../procedures/pseudo_order_seed_uuid.sql | 7 - .../uuids/procedures/pseudo_order_uuid.sql | 7 - .../trigger_set_uuid_related_field.sql | 7 - .../procedures/trigger_set_uuid_seed.sql | 7 - packages/uuid/revert/schemas/uuids/schema.sql | 7 - packages/uuid/sql/pgpm-uuid--0.15.3.sql | 72 - packages/uuid/verify/extension/defaults.sql | 5 - .../procedures/pseudo_order_seed_uuid.sql | 7 - .../uuids/procedures/pseudo_order_uuid.sql | 7 - .../trigger_set_uuid_related_field.sql | 7 - .../procedures/trigger_set_uuid_seed.sql | 7 - packages/uuid/verify/schemas/uuids/schema.sql | 7 - packages/verify/README.md | 25 +- packages/verify/package.json | 6 +- packages/verify/sql/pgpm-verify--0.15.3.sql | 372 - 210 files changed, 1230 insertions(+), 15868 deletions(-) delete mode 100644 packages/achievements/sql/pgpm-achievements--0.15.3.sql delete mode 100644 packages/base32/sql/pgpm-base32--0.15.3.sql rename packages/database-jobs/sql/{pgpm-database-jobs--0.26.3.sql => pgpm-database-jobs--0.22.0.sql} (100%) delete mode 100644 packages/defaults/sql/pgpm-defaults--0.15.3.sql rename packages/encrypted-secrets-table/sql/{pgpm-encrypted-secrets-table--0.26.0.sql => pgpm-encrypted-secrets-table--0.15.5.sql} (100%) delete mode 100644 packages/encrypted-secrets/sql/pgpm-encrypted-secrets--0.15.3.sql delete mode 100644 packages/faker/sql/pgpm-faker--0.15.3.sql delete mode 100644 packages/geotypes/sql/pgpm-geo-types--0.15.3.sql delete mode 100644 packages/inflection-db/.npmignore rename packages/inflection-db/sql/{inflection-db--0.26.4.sql => inflection-db--0.0.1.sql} (100%) delete mode 100644 packages/inflection/sql/pgpm-inflection--0.15.3.sql rename packages/jobs/sql/{pgpm-jobs--0.26.0.sql => pgpm-jobs--0.15.5.sql} (100%) create mode 100644 packages/jwt-claims/deploy/schemas/jwt_public/procedures/current_principal_id.sql create mode 100644 packages/jwt-claims/revert/schemas/jwt_public/procedures/current_principal_id.sql create mode 100644 packages/jwt-claims/verify/schemas/jwt_public/procedures/current_principal_id.sql delete mode 100644 packages/ltree-helpers/LICENSE delete mode 100644 packages/ltree-helpers/README.md delete mode 100644 packages/ltree-helpers/__tests__/ltree-helpers.test.ts delete mode 100644 packages/ltree-helpers/jest.config.js delete mode 100644 packages/ltree-helpers/sql/pgpm-ltree-helpers--0.21.0.sql delete mode 100644 packages/measurements/sql/pgpm-measurements--0.15.3.sql delete mode 100644 packages/metaschema-modules/__tests__/__snapshots__/modules.test.ts.snap create mode 100644 packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/function_deployment_module/table.sql create mode 100644 packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/function_module/constraints/one_platform_database.sql delete mode 100644 packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/agent_module/table.sql delete mode 100644 packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/config_secrets_org_module/table.sql delete mode 100644 packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/entity_type_provision/table.sql create mode 100644 packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/function_deployment_module/table.sql create mode 100644 packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/function_module/constraints/one_platform_database.sql delete mode 100644 packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/graph_module/table.sql delete mode 100644 packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/merkle_store_module/table.sql delete mode 100644 packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/session_secrets_module/table.sql rename packages/metaschema-modules/sql/{metaschema-modules--0.26.5.sql => metaschema-modules--0.15.5.sql} (90%) create mode 100644 packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/agent_chat_module/table.sql delete mode 100644 packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/agent_module/table.sql delete mode 100644 packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/config_secrets_org_module/table.sql delete mode 100644 packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/entity_type_provision/table.sql create mode 100644 packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/function_deployment_module/table.sql create mode 100644 packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/function_module/constraints/one_platform_database.sql delete mode 100644 packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/graph_module/table.sql delete mode 100644 packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/merkle_store_module/table.sql delete mode 100644 packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/session_secrets_module/table.sql rename packages/metaschema-schema/sql/{metaschema-schema--0.29.0.sql => metaschema-schema--0.15.5.sql} (89%) rename packages/object-tree/sql/{object-tree--0.26.2.sql => object-tree--0.15.5.sql} (83%) rename packages/partman/sql/{pgpm-partman--0.26.1.sql => pgpm-partman--0.0.1.sql} (79%) delete mode 100644 packages/services/__tests__/__snapshots__/services.test.ts.snap delete mode 100644 packages/services/__tests__/services.test.ts create mode 100644 packages/services/deploy/schemas/services_private/triggers/enforce_api_exposure.sql delete mode 100644 packages/services/jest.config.js delete mode 100644 packages/services/revert/schemas/services_private/schema.sql create mode 100644 packages/services/revert/schemas/services_private/triggers/enforce_api_exposure.sql delete mode 100644 packages/services/revert/schemas/services_public/schema.sql delete mode 100644 packages/services/revert/schemas/services_public/tables/api_modules/table.sql delete mode 100644 packages/services/revert/schemas/services_public/tables/api_schemas/table.sql delete mode 100644 packages/services/revert/schemas/services_public/tables/apis/table.sql delete mode 100644 packages/services/revert/schemas/services_public/tables/apps/table.sql delete mode 100644 packages/services/revert/schemas/services_public/tables/domains/table.sql delete mode 100644 packages/services/revert/schemas/services_public/tables/site_metadata/table.sql delete mode 100644 packages/services/revert/schemas/services_public/tables/site_modules/table.sql delete mode 100644 packages/services/revert/schemas/services_public/tables/site_themes/table.sql delete mode 100644 packages/services/revert/schemas/services_public/tables/sites/table.sql rename packages/services/sql/{services--0.26.3.sql => services--0.1.0.sql} (96%) create mode 100644 packages/services/verify/schemas/services_private/triggers/enforce_api_exposure.sql delete mode 100644 packages/stamps/sql/pgpm-stamps--0.15.3.sql delete mode 100644 packages/totp/sql/pgpm-totp--0.15.3.sql delete mode 100644 packages/utils/sql/pgpm-utils--0.15.3.sql delete mode 100644 packages/uuid/.npmignore delete mode 100644 packages/uuid/LICENSE delete mode 100644 packages/uuid/Makefile delete mode 100644 packages/uuid/README.md delete mode 100644 packages/uuid/__tests__/uuid.test.ts delete mode 100644 packages/uuid/deploy/extension/defaults.sql delete mode 100644 packages/uuid/deploy/schemas/uuids/procedures/pseudo_order_seed_uuid.sql delete mode 100644 packages/uuid/deploy/schemas/uuids/procedures/pseudo_order_uuid.sql delete mode 100644 packages/uuid/deploy/schemas/uuids/procedures/trigger_set_uuid_related_field.sql delete mode 100644 packages/uuid/deploy/schemas/uuids/procedures/trigger_set_uuid_seed.sql delete mode 100644 packages/uuid/deploy/schemas/uuids/schema.sql delete mode 100644 packages/uuid/jest.config.js delete mode 100644 packages/uuid/package.json delete mode 100644 packages/uuid/pgpm-uuid.control delete mode 100644 packages/uuid/pgpm.plan delete mode 100644 packages/uuid/revert/extension/defaults.sql delete mode 100644 packages/uuid/revert/schemas/uuids/procedures/pseudo_order_seed_uuid.sql delete mode 100644 packages/uuid/revert/schemas/uuids/procedures/pseudo_order_uuid.sql delete mode 100644 packages/uuid/revert/schemas/uuids/procedures/trigger_set_uuid_related_field.sql delete mode 100644 packages/uuid/revert/schemas/uuids/procedures/trigger_set_uuid_seed.sql delete mode 100644 packages/uuid/revert/schemas/uuids/schema.sql delete mode 100644 packages/uuid/sql/pgpm-uuid--0.15.3.sql delete mode 100644 packages/uuid/verify/extension/defaults.sql delete mode 100644 packages/uuid/verify/schemas/uuids/procedures/pseudo_order_seed_uuid.sql delete mode 100644 packages/uuid/verify/schemas/uuids/procedures/pseudo_order_uuid.sql delete mode 100644 packages/uuid/verify/schemas/uuids/procedures/trigger_set_uuid_related_field.sql delete mode 100644 packages/uuid/verify/schemas/uuids/procedures/trigger_set_uuid_seed.sql delete mode 100644 packages/uuid/verify/schemas/uuids/schema.sql delete mode 100644 packages/verify/sql/pgpm-verify--0.15.3.sql diff --git a/packages/achievements/README.md b/packages/achievements/README.md index 313e71151..a3c95892b 100644 --- a/packages/achievements/README.md +++ b/packages/achievements/README.md @@ -275,29 +275,14 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - ## Disclaimer AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. diff --git a/packages/achievements/package.json b/packages/achievements/package.json index 8eaa74ddd..2fdc595d1 100644 --- a/packages/achievements/package.json +++ b/packages/achievements/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/achievements", - "version": "0.28.3", + "version": "0.15.5", "description": "Achievement system for tracking user progress and milestones", "author": "Dan Lynch ", "contributors": [ @@ -25,7 +25,7 @@ "@pgpm/verify": "workspace:*" }, "devDependencies": { - "pgpm": "^4.23.2" + "pgpm": "^4.28.7" }, "repository": { "type": "git", @@ -35,4 +35,4 @@ "bugs": { "url": "https://github.com/constructive-io/pgpm-modules/issues" } -} +} \ No newline at end of file diff --git a/packages/achievements/sql/pgpm-achievements--0.15.3.sql b/packages/achievements/sql/pgpm-achievements--0.15.3.sql deleted file mode 100644 index 07b94c52a..000000000 --- a/packages/achievements/sql/pgpm-achievements--0.15.3.sql +++ /dev/null @@ -1,280 +0,0 @@ -\echo Use "CREATE EXTENSION pgpm-achievements" to load this file. \quit -CREATE SCHEMA IF NOT EXISTS status_private; - -GRANT USAGE ON SCHEMA status_private TO authenticated, anonymous; - -ALTER DEFAULT PRIVILEGES IN SCHEMA status_private - GRANT EXECUTE ON FUNCTIONS TO authenticated; - -CREATE SCHEMA IF NOT EXISTS status_public; - -GRANT USAGE ON SCHEMA status_public TO authenticated, anonymous; - -ALTER DEFAULT PRIVILEGES IN SCHEMA status_public - GRANT EXECUTE ON FUNCTIONS TO authenticated; - -CREATE TABLE status_public.user_steps ( - id uuid PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id uuid NOT NULL, - name text NOT NULL, - count int NOT NULL DEFAULT 1, - created_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP -); - -COMMENT ON TABLE status_public.user_steps IS 'The user achieving a requirement for a level. Log table that has every single step ever taken.'; -COMMENT ON COLUMN status_public.user_steps.id IS 'Unique identifier for this step record'; -COMMENT ON COLUMN status_public.user_steps.user_id IS 'User who performed this step'; -COMMENT ON COLUMN status_public.user_steps.name IS 'Name of the level requirement this step counts toward'; -COMMENT ON COLUMN status_public.user_steps.count IS 'Number of units this step contributes (default 1)'; -COMMENT ON COLUMN status_public.user_steps.created_at IS 'Timestamp when this step was recorded'; - -CREATE INDEX ON status_public.user_steps (user_id, name); - -CREATE FUNCTION status_private.user_completed_step(step text, user_id uuid DEFAULT jwt_public.current_user_id()) RETURNS void AS $EOFCODE$ - INSERT INTO status_public.user_steps ( name, user_id, count ) - VALUES ( step, user_id, 1 ); -$EOFCODE$ LANGUAGE sql VOLATILE SECURITY DEFINER; - -CREATE FUNCTION status_private.user_incompleted_step(step text, user_id uuid DEFAULT jwt_public.current_user_id()) RETURNS void AS $EOFCODE$ -BEGIN - DELETE FROM status_public.user_steps s - WHERE s.user_id = user_incompleted_step.user_id - AND s.name = step; - DELETE FROM status_public.user_achievements a - WHERE a.user_id = user_incompleted_step.user_id - AND a.name = step; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE SECURITY DEFINER; - -CREATE FUNCTION status_private.tg_achievement() RETURNS trigger AS $EOFCODE$ -DECLARE - is_null boolean; - task_name text; -BEGIN - IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN - task_name = TG_ARGV[1]::text; - EXECUTE format('SELECT ($1).%s IS NULL', TG_ARGV[0]) - USING NEW INTO is_null; - IF (is_null IS FALSE) THEN - PERFORM status_private.user_completed_step(task_name); - END IF; - RETURN NEW; - END IF; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION status_private.tg_achievement_toggle() RETURNS trigger AS $EOFCODE$ -DECLARE - is_null boolean; - task_name text; -BEGIN - IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN - task_name = TG_ARGV[1]::text; - EXECUTE format('SELECT ($1).%s IS NULL', TG_ARGV[0]) - USING NEW INTO is_null; - IF (is_null IS TRUE) THEN - PERFORM status_private.user_incompleted_step(task_name); - ELSE - PERFORM status_private.user_completed_step(task_name); - END IF; - RETURN NEW; - END IF; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION status_private.tg_achievement_boolean() RETURNS trigger AS $EOFCODE$ -DECLARE - is_true boolean; - task_name text; -BEGIN - IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN - task_name = TG_ARGV[1]::text; - EXECUTE format('SELECT ($1).%s IS TRUE', TG_ARGV[0]) - USING NEW INTO is_true; - IF (is_true IS TRUE) THEN - PERFORM status_private.user_completed_step(task_name); - END IF; - RETURN NEW; - END IF; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION status_private.tg_achievement_toggle_boolean() RETURNS trigger AS $EOFCODE$ -DECLARE - is_true boolean; - task_name text; -BEGIN - IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN - task_name = TG_ARGV[1]::text; - EXECUTE format('SELECT ($1).%s IS TRUE', TG_ARGV[0]) - USING NEW INTO is_true; - IF (is_true IS TRUE) THEN - PERFORM status_private.user_completed_step(task_name); - ELSE - PERFORM status_private.user_incompleted_step(task_name); - END IF; - RETURN NEW; - END IF; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE TABLE status_public.user_achievements ( - id uuid PRIMARY KEY DEFAULT uuid_generate_v4(), - user_id uuid NOT NULL, - name text NOT NULL, - count int NOT NULL DEFAULT 0, - created_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP, - CONSTRAINT user_achievements_unique_key - UNIQUE (user_id, name) -); - -COMMENT ON TABLE status_public.user_achievements IS 'This table represents the users progress for particular level requirements, tallying the total count. This table is updated via triggers and should not be updated maually.'; -COMMENT ON COLUMN status_public.user_achievements.id IS 'Unique identifier for this achievement progress record'; -COMMENT ON COLUMN status_public.user_achievements.user_id IS 'User whose progress is being tracked'; -COMMENT ON COLUMN status_public.user_achievements.name IS 'Name of the level requirement this progress relates to'; -COMMENT ON COLUMN status_public.user_achievements.count IS 'Accumulated count toward the requirement (updated by triggers)'; -COMMENT ON COLUMN status_public.user_achievements.created_at IS 'Timestamp when this progress record was first created'; - -CREATE INDEX ON status_public.user_achievements (user_id, name); - -CREATE FUNCTION status_private.upsert_achievement(vuser_id uuid, vname text, vcount int) RETURNS void AS $EOFCODE$ -BEGIN - INSERT INTO status_public.user_achievements (user_id, name, count) - VALUES - (vuser_id, vname, GREATEST(vcount, 0)) - ON CONFLICT ON CONSTRAINT user_achievements_unique_key - DO UPDATE SET - -- look ma! you can actually do aliases inside on conflict - count = user_achievements.count + EXCLUDED.count - ; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE TABLE status_public.levels ( - name text NOT NULL PRIMARY KEY -); - -COMMENT ON TABLE status_public.levels IS 'Levels for achievement'; -COMMENT ON COLUMN status_public.levels.name IS 'Unique level name used as the primary key (e.g. bronze, silver, gold)'; - -GRANT SELECT ON status_public.levels TO PUBLIC; - -CREATE TABLE status_public.level_requirements ( - id uuid PRIMARY KEY DEFAULT uuid_generate_v4(), - name text NOT NULL, - level text NOT NULL, - required_count int DEFAULT 1, - priority int DEFAULT 100, - UNIQUE (name, level) -); - -COMMENT ON TABLE status_public.level_requirements IS 'Requirements to achieve a level'; -COMMENT ON COLUMN status_public.level_requirements.id IS 'Unique identifier for this requirement'; -COMMENT ON COLUMN status_public.level_requirements.name IS 'Requirement name (e.g. posts_created, logins); matches user_steps.name'; -COMMENT ON COLUMN status_public.level_requirements.level IS 'Level this requirement belongs to (references levels.name)'; -COMMENT ON COLUMN status_public.level_requirements.required_count IS 'Number of steps needed to satisfy this requirement (default 1)'; -COMMENT ON COLUMN status_public.level_requirements.priority IS 'Display/evaluation order; lower numbers are checked first (default 100)'; - -CREATE INDEX ON status_public.level_requirements (name, level, priority); - -GRANT SELECT ON status_public.levels TO authenticated; - -CREATE FUNCTION status_public.steps_required(vlevel text, vrole_id uuid DEFAULT jwt_public.current_user_id()) RETURNS SETOF status_public.level_requirements AS $EOFCODE$ -BEGIN - RETURN QUERY - SELECT - level_requirements.id, - level_requirements.name, - level_requirements.level, - -1*(coalesce(user_achievements.count,0)-level_requirements.required_count) as required_count, - level_requirements.priority - FROM - status_public.level_requirements - FULL OUTER JOIN status_public.user_achievements ON ( - user_achievements.name = level_requirements.name - AND user_achievements.user_id =vrole_id - ) - JOIN status_public.levels ON (level_requirements.level = levels.name) - WHERE - level_requirements.level = vlevel - AND -1*(coalesce(user_achievements.count,0)-level_requirements.required_count) > 0 - ORDER BY priority ASC -; -END; -$EOFCODE$ LANGUAGE plpgsql STABLE; - -CREATE FUNCTION status_public.user_achieved(vlevel text, vrole_id uuid DEFAULT jwt_public.current_user_id()) RETURNS boolean AS $EOFCODE$ -DECLARE - c int; -BEGIN - SELECT COUNT(*) FROM - status_public.steps_required( - vlevel, - vrole_id - ) - INTO c; - - RETURN c <= 0; -END; -$EOFCODE$ LANGUAGE plpgsql STABLE; - -ALTER TABLE status_public.user_achievements - ENABLE ROW LEVEL SECURITY; - -CREATE POLICY can_select_user_achievements - ON status_public.user_achievements - AS PERMISSIVE - FOR SELECT - TO PUBLIC - USING ( - jwt_public.current_user_id() = user_id - ); - -CREATE POLICY can_insert_user_achievements - ON status_public.user_achievements - AS PERMISSIVE - FOR INSERT - TO PUBLIC - WITH CHECK ( - false - ); - -CREATE POLICY can_update_user_achievements - ON status_public.user_achievements - AS PERMISSIVE - FOR UPDATE - TO PUBLIC - USING ( - false - ); - -CREATE POLICY can_delete_user_achievements - ON status_public.user_achievements - AS PERMISSIVE - FOR DELETE - TO PUBLIC - USING ( - false - ); - -GRANT INSERT ON status_public.user_achievements TO authenticated; - -GRANT SELECT ON status_public.user_achievements TO authenticated; - -GRANT UPDATE ON status_public.user_achievements TO authenticated; - -GRANT DELETE ON status_public.user_achievements TO authenticated; - -CREATE FUNCTION status_private.tg_update_achievements_tg() RETURNS trigger AS $EOFCODE$ -DECLARE -BEGIN - PERFORM status_private.upsert_achievement(NEW.user_id, NEW.name, NEW.count); - RETURN NEW; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE SECURITY DEFINER; - -CREATE TRIGGER update_achievements_tg - AFTER INSERT - ON status_public.user_steps - FOR EACH ROW - EXECUTE PROCEDURE status_private.tg_update_achievements_tg(); diff --git a/packages/base32/README.md b/packages/base32/README.md index 58e1d8f7d..c80ea018f 100644 --- a/packages/base32/README.md +++ b/packages/base32/README.md @@ -251,29 +251,14 @@ https://www.youtube.com/watch?v=Va8FLD-iuTg ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - ## Disclaimer AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. diff --git a/packages/base32/package.json b/packages/base32/package.json index cce7fe39d..e675a3469 100644 --- a/packages/base32/package.json +++ b/packages/base32/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/base32", - "version": "0.28.3", + "version": "0.15.5", "description": "Base32 encoding and decoding functions for PostgreSQL", "author": "Dan Lynch ", "contributors": [ @@ -24,7 +24,7 @@ "@pgpm/verify": "workspace:*" }, "devDependencies": { - "pgpm": "^4.23.2" + "pgpm": "^4.28.7" }, "repository": { "type": "git", @@ -34,4 +34,4 @@ "bugs": { "url": "https://github.com/constructive-io/pgpm-modules/issues" } -} +} \ No newline at end of file diff --git a/packages/base32/sql/pgpm-base32--0.15.3.sql b/packages/base32/sql/pgpm-base32--0.15.3.sql deleted file mode 100644 index e510c3e77..000000000 --- a/packages/base32/sql/pgpm-base32--0.15.3.sql +++ /dev/null @@ -1,327 +0,0 @@ -\echo Use "CREATE EXTENSION pgpm-base32" to load this file. \quit -CREATE SCHEMA base32; - -CREATE FUNCTION base32.binary_to_int(input text) RETURNS int AS $EOFCODE$ -DECLARE - i int; - buf text; -BEGIN - buf = 'SELECT B''' || input || '''::int'; - EXECUTE buf INTO i; - RETURN i; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION base32.to_ascii(input text) RETURNS int[] AS $EOFCODE$ -DECLARE - i int; - output int[]; -BEGIN - FOR i IN 1 .. character_length(input) LOOP - output = array_append(output, ascii(substring(input from i for 1))); - END LOOP; - RETURN output; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION base32.to_binary(input int) RETURNS text AS $EOFCODE$ -DECLARE - i int = 1; - j int = 0; - output char[] = ARRAY['x', 'x', 'x', 'x', 'x', 'x', 'x', 'x']; -BEGIN - WHILE i < 256 LOOP - output[8-j] = (CASE WHEN (input & i) > 0 THEN '1' ELSE '0' END)::char; - i = i << 1; - j = j + 1; - END LOOP; - RETURN array_to_string(output, ''); -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION base32.to_binary(input int[]) RETURNS text[] AS $EOFCODE$ -DECLARE - i int; - output text[]; -BEGIN - FOR i IN 1 .. cardinality(input) LOOP - output = array_append(output, base32.to_binary(input[i])); - END LOOP; - RETURN output; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION base32.to_groups(input text[]) RETURNS text[] AS $EOFCODE$ -DECLARE - i int; - output text[]; - len int = cardinality(input); -BEGIN - IF ( len % 5 = 0 ) THEN - RETURN input; - END IF; - FOR i IN 1 .. 5 - (len % 5) LOOP - input = array_append(input, 'xxxxxxxx'); - END LOOP; - RETURN input; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION base32.string_nchars(text, int) RETURNS text[] AS $EOFCODE$ -SELECT ARRAY(SELECT substring($1 from n for $2) - FROM generate_series(1, length($1), $2) n); -$EOFCODE$ LANGUAGE sql IMMUTABLE; - -CREATE FUNCTION base32.to_chunks(input text[]) RETURNS text[] AS $EOFCODE$ -DECLARE - i int; - output text[]; - str text; - len int = cardinality(input); -BEGIN - RETURN base32.string_nchars(array_to_string(input, ''), 5); -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION base32.fill_chunks(input text[]) RETURNS text[] AS $EOFCODE$ -DECLARE - i int; - output text[]; - chunk text; - len int = cardinality(input); -BEGIN - FOR i IN 1 .. len LOOP - chunk = input[i]; - IF (chunk ~* '[0-1]+') THEN - chunk = replace(chunk, 'x', '0'); - END IF; - output = array_append(output, chunk); - END LOOP; - RETURN output; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION base32.to_decimal(input text[]) RETURNS text[] AS $EOFCODE$ -DECLARE - i int; - output text[]; - chunk text; - buf text; - len int = cardinality(input); -BEGIN - FOR i IN 1 .. len LOOP - chunk = input[i]; - IF (chunk ~* '[x]+') THEN - chunk = '='; - ELSE - chunk = base32.binary_to_int(input[i])::text; - END IF; - output = array_append(output, chunk); - END LOOP; - RETURN output; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION base32.base32_alphabet(input int) RETURNS char(1) AS $EOFCODE$ -DECLARE - alphabet text[] = ARRAY[ - 'A', 'B', 'C', 'D', 'E', 'F', - 'G', 'H', 'I', 'J', 'K', 'L', - 'M', 'N', 'O', 'P', 'Q', 'R', - 'S', 'T', 'U', 'V', 'W', 'X', - 'Y', 'Z', '2', '3', '4', '5', - '6', '7' - ]::text; -BEGIN - RETURN alphabet[input+1]; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION base32.to_base32(input text[]) RETURNS text AS $EOFCODE$ -DECLARE - i int; - output text[]; - chunk text; - buf text; - len int = cardinality(input); -BEGIN - FOR i IN 1 .. len LOOP - chunk = input[i]; - IF (chunk = '=') THEN - chunk = '='; - ELSE - chunk = base32.base32_alphabet(chunk::int); - END IF; - output = array_append(output, chunk); - END LOOP; - RETURN array_to_string(output, ''); -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION base32.encode(input text) RETURNS text AS $EOFCODE$ -BEGIN - IF (character_length(input) = 0) THEN - RETURN ''; - END IF; - - RETURN - base32.to_base32( - base32.to_decimal( - base32.fill_chunks( - base32.to_chunks( - base32.to_groups( - base32.to_binary( - base32.to_ascii( - input - ) - ) - ) - ) - ) - ) - ); -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION base32.base32_alphabet_to_decimal(input text) RETURNS text AS $EOFCODE$ -DECLARE - alphabet text = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'; - alpha int; -BEGIN - alpha = position(input in alphabet) - 1; - IF (alpha < 0) THEN - RETURN '='; - END IF; - RETURN alpha::text; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION base32.base32_to_decimal(input text) RETURNS text[] AS $EOFCODE$ -DECLARE - i int; - output text[]; -BEGIN - input = upper(input); - FOR i IN 1 .. character_length(input) LOOP - output = array_append(output, base32.base32_alphabet_to_decimal(substring(input from i for 1))); - END LOOP; - RETURN output; -END; -$EOFCODE$ LANGUAGE plpgsql STABLE; - -CREATE FUNCTION base32.decimal_to_chunks(input text[]) RETURNS text[] AS $EOFCODE$ -DECLARE - i int; - part text; - output text[]; -BEGIN - FOR i IN 1 .. cardinality(input) LOOP - part = input[i]; - IF (part = '=') THEN - output = array_append(output, 'xxxxx'); - ELSE - output = array_append(output, right(base32.to_binary(part::int), 5)); - END IF; - END LOOP; - RETURN output; -END; -$EOFCODE$ LANGUAGE plpgsql STABLE; - -CREATE FUNCTION base32.base32_alphabet_to_decimal_int(input text) RETURNS int AS $EOFCODE$ -DECLARE - alphabet text = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'; - alpha int; -BEGIN - alpha = position(input in alphabet) - 1; - RETURN alpha; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION base32.zero_fill(a int, b int) RETURNS bigint AS $EOFCODE$ -DECLARE - bin text; - m int; -BEGIN - - IF (b >= 32 OR b < -32) THEN - m = b/32; - b = b-(m*32); - END IF; - - IF (b < 0) THEN - b = 32 + b; - END IF; - - IF (b = 0) THEN - return ((a>>1)&2147483647)*2::bigint+((a>>b)&1); - END IF; - - IF (a < 0) THEN - a = (a >> 1); - a = a & 2147483647; -- 0x7fffffff - a = a | 1073741824; -- 0x40000000 - a = (a >> (b - 1)); - ELSE - a = (a >> b); - END IF; - - RETURN a; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION base32.valid(input text) RETURNS boolean AS $EOFCODE$ -BEGIN - IF (upper(input) ~* '^[A-Z2-7]+=*$') THEN - RETURN true; - END IF; - RETURN false; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION base32.decode(input text) RETURNS text AS $EOFCODE$ -DECLARE - i int; - arr int[]; - output text[]; - len int; - num int; - - value int = 0; - index int = 0; - bits int = 0; -BEGIN - len = character_length(input); - IF (len = 0) THEN - RETURN ''; - END IF; - - IF (NOT base32.valid(input)) THEN - RAISE EXCEPTION 'INVALID_BASE32'; - END IF; - - input = replace(input, '=', ''); - input = upper(input); - len = character_length(input); - num = len * 5 / 8; - - select array(select * from generate_series(1,num)) - INTO arr; - - FOR i IN 1 .. len LOOP - value = (value << 5) | base32.base32_alphabet_to_decimal_int(substring(input from i for 1)); - bits = bits + 5; - IF (bits >= 8) THEN - arr[index] = base32.zero_fill(value, (bits - 8)) & 255; -- arr[index] = (value >>> (bits - 8)) & 255; - index = index + 1; - bits = bits - 8; - END IF; - END LOOP; - - len = cardinality(arr); - FOR i IN 0 .. len-2 LOOP - output = array_append(output, chr(arr[i])); - END LOOP; - - RETURN array_to_string(output, ''); -END; -$EOFCODE$ LANGUAGE plpgsql STABLE; \ No newline at end of file diff --git a/packages/database-jobs/Makefile b/packages/database-jobs/Makefile index a7d586e4e..854429578 100644 --- a/packages/database-jobs/Makefile +++ b/packages/database-jobs/Makefile @@ -1,5 +1,5 @@ EXTENSION = pgpm-database-jobs -DATA = sql/pgpm-database-jobs--0.26.3.sql +DATA = sql/pgpm-database-jobs--0.22.0.sql PG_CONFIG = pg_config PGXS := $(shell $(PG_CONFIG) --pgxs) diff --git a/packages/database-jobs/README.md b/packages/database-jobs/README.md index 738414b09..1015d10e3 100644 --- a/packages/database-jobs/README.md +++ b/packages/database-jobs/README.md @@ -348,29 +348,14 @@ The test suite validates: ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - ## Disclaimer AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. diff --git a/packages/database-jobs/__tests__/__snapshots__/jobs.test.ts.snap b/packages/database-jobs/__tests__/__snapshots__/jobs.test.ts.snap index 23879d2ab..a28de0acb 100644 --- a/packages/database-jobs/__tests__/__snapshots__/jobs.test.ts.snap +++ b/packages/database-jobs/__tests__/__snapshots__/jobs.test.ts.snap @@ -18,6 +18,7 @@ exports[`scheduled jobs schedule jobs 1`] = ` "payload": { "just": "run it", }, + "principal_id": null, "priority": 0, "task_identifier": "my_job", } diff --git a/packages/database-jobs/__tests__/jobs.test.ts b/packages/database-jobs/__tests__/jobs.test.ts index 44297918a..453de4c04 100644 --- a/packages/database-jobs/__tests__/jobs.test.ts +++ b/packages/database-jobs/__tests__/jobs.test.ts @@ -65,20 +65,19 @@ describe('scheduled jobs', () => { const start = new Date(Date.now() + 10000); // 10s const end = new Date(start.getTime() + 180000); // +3min - // Set JWT claims for the session (required by add_scheduled_job) - await pg.any(`SELECT set_config('jwt.claims.database_id', $1, false)`, [database_id]); - const [result] = await pg.any( `SELECT * FROM app_jobs.add_scheduled_job( - identifier := $1::text, - payload := $2::json, - schedule_info := $3::json, - job_key := $4::text, - queue_name := $5::text, - max_attempts := $6::integer, - priority := $7::integer + db_id := $1::uuid, + identifier := $2::text, + payload := $3::json, + schedule_info := $4::json, + job_key := $5::text, + queue_name := $6::text, + max_attempts := $7::integer, + priority := $8::integer )`, [ + database_id, 'my_job', { just: 'run it' }, { start, end, rule: '*/1 * * * *' }, @@ -102,15 +101,17 @@ describe('scheduled jobs', () => { const [result2] = await pg.any( `SELECT * FROM app_jobs.add_scheduled_job( - identifier := $1, - payload := $2, - schedule_info := $3, - job_key := $4, - queue_name := $5, - max_attempts := $6, - priority := $7 + db_id := $1, + identifier := $2, + payload := $3, + schedule_info := $4, + job_key := $5, + queue_name := $6, + max_attempts := $7, + priority := $8 )`, [ + database_id, 'my_job', { just: 'run it' }, { start, end, rule: '*/1 * * * *' }, diff --git a/packages/database-jobs/deploy/schemas/app_jobs/procedures/add_job.sql b/packages/database-jobs/deploy/schemas/app_jobs/procedures/add_job.sql index 5cf035d14..825e1f189 100644 --- a/packages/database-jobs/deploy/schemas/app_jobs/procedures/add_job.sql +++ b/packages/database-jobs/deploy/schemas/app_jobs/procedures/add_job.sql @@ -4,6 +4,7 @@ -- requires: schemas/app_jobs/tables/job_queues/table -- requires: pgpm-jwt-claims:schemas/jwt_private/procedures/current_database_id -- requires: pgpm-jwt-claims:schemas/jwt_public/procedures/current_user_id +-- requires: pgpm-jwt-claims:schemas/jwt_public/procedures/current_principal_id BEGIN; CREATE FUNCTION app_jobs.add_job ( @@ -24,16 +25,20 @@ DECLARE v_job app_jobs.jobs; v_database_id uuid; v_actor_id uuid; + v_principal_id uuid; BEGIN -- Read context from JWT claims v_database_id := jwt_private.current_database_id(); v_actor_id := jwt_public.current_user_id(); + v_principal_id := jwt_public.current_principal_id(); + IF job_key IS NOT NULL THEN -- Upsert job INSERT INTO app_jobs.jobs ( database_id, actor_id, + principal_id, entity_id, organization_id, entity_type, @@ -47,6 +52,7 @@ BEGIN ) VALUES ( v_database_id, v_actor_id, + v_principal_id, add_job.entity_id, add_job.organization_id, add_job.entity_type, @@ -93,6 +99,7 @@ BEGIN INSERT INTO app_jobs.jobs ( database_id, actor_id, + principal_id, entity_id, organization_id, entity_type, @@ -105,6 +112,7 @@ BEGIN ) VALUES ( v_database_id, v_actor_id, + v_principal_id, add_job.entity_id, add_job.organization_id, add_job.entity_type, diff --git a/packages/database-jobs/deploy/schemas/app_jobs/tables/jobs/table.sql b/packages/database-jobs/deploy/schemas/app_jobs/tables/jobs/table.sql index e562e5911..399a8e5a0 100644 --- a/packages/database-jobs/deploy/schemas/app_jobs/tables/jobs/table.sql +++ b/packages/database-jobs/deploy/schemas/app_jobs/tables/jobs/table.sql @@ -6,6 +6,7 @@ CREATE TABLE app_jobs.jobs ( id bigserial PRIMARY KEY, database_id uuid, actor_id uuid, + principal_id uuid, entity_id uuid, organization_id uuid, entity_type text, @@ -33,6 +34,7 @@ COMMENT ON TABLE app_jobs.jobs IS 'Background job queue: each row is a pending o COMMENT ON COLUMN app_jobs.jobs.id IS 'Auto-incrementing job identifier'; COMMENT ON COLUMN app_jobs.jobs.database_id IS 'Database this job belongs to (nullable for system-level jobs without tenant context)'; COMMENT ON COLUMN app_jobs.jobs.actor_id IS 'User who triggered this job, read from JWT claims at enqueue time'; +COMMENT ON COLUMN app_jobs.jobs.principal_id IS 'Principal that triggered this job; equals actor_id for human-triggered jobs, differs when an agent/API-key acts on behalf of a user'; COMMENT ON COLUMN app_jobs.jobs.entity_id IS 'Entity (org/team) this job is scoped to for billing; NULL means platform-level (resolved via database_id → owner_id)'; COMMENT ON COLUMN app_jobs.jobs.organization_id IS 'Top-level organization for this entity; resolved at enqueue time via get_organization_id(entity_type, entity_id)'; COMMENT ON COLUMN app_jobs.jobs.entity_type IS 'Entity type prefix (org, team, app, etc.) for interpreting entity_id'; diff --git a/packages/database-jobs/package.json b/packages/database-jobs/package.json index 68469d93e..ab82c4e83 100644 --- a/packages/database-jobs/package.json +++ b/packages/database-jobs/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/database-jobs", - "version": "0.28.3", + "version": "0.22.0", "description": "Database-specific job handling and queue management", "author": "Dan Lynch ", "contributors": [ @@ -21,7 +21,7 @@ "test:watch": "jest --watch" }, "devDependencies": { - "pgpm": "^4.23.2" + "pgpm": "^4.28.7" }, "dependencies": { "@pgpm/jwt-claims": "workspace:*", @@ -35,4 +35,4 @@ "bugs": { "url": "https://github.com/constructive-io/pgpm-modules/issues" } -} +} \ No newline at end of file diff --git a/packages/database-jobs/pgpm-database-jobs.control b/packages/database-jobs/pgpm-database-jobs.control index 22f6e534c..3ccad9d76 100644 --- a/packages/database-jobs/pgpm-database-jobs.control +++ b/packages/database-jobs/pgpm-database-jobs.control @@ -1,6 +1,6 @@ # pgpm-database-jobs extension comment = 'pgpm-database-jobs extension' -default_version = '0.26.3' +default_version = '0.22.0' module_pathname = '$libdir/pgpm-database-jobs' requires = 'plpgsql,pgcrypto,pgpm-verify,pgpm-jwt-claims' relocatable = false diff --git a/packages/database-jobs/sql/pgpm-database-jobs--0.26.3.sql b/packages/database-jobs/sql/pgpm-database-jobs--0.22.0.sql similarity index 100% rename from packages/database-jobs/sql/pgpm-database-jobs--0.26.3.sql rename to packages/database-jobs/sql/pgpm-database-jobs--0.22.0.sql diff --git a/packages/defaults/README.md b/packages/defaults/README.md index 98ca45fbe..9d4d094ca 100644 --- a/packages/defaults/README.md +++ b/packages/defaults/README.md @@ -266,29 +266,14 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - ## Disclaimer AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. diff --git a/packages/defaults/package.json b/packages/defaults/package.json index e63539ea2..061f88571 100644 --- a/packages/defaults/package.json +++ b/packages/defaults/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/defaults", - "version": "0.28.3", + "version": "0.15.5", "description": "Security defaults and baseline configurations", "author": "Dan Lynch ", "contributors": [ @@ -24,7 +24,7 @@ "@pgpm/verify": "workspace:*" }, "devDependencies": { - "pgpm": "^4.23.2" + "pgpm": "^4.28.7" }, "repository": { "type": "git", @@ -34,4 +34,4 @@ "bugs": { "url": "https://github.com/constructive-io/pgpm-modules/issues" } -} +} \ No newline at end of file diff --git a/packages/defaults/sql/pgpm-defaults--0.15.3.sql b/packages/defaults/sql/pgpm-defaults--0.15.3.sql deleted file mode 100644 index ee8b7591e..000000000 --- a/packages/defaults/sql/pgpm-defaults--0.15.3.sql +++ /dev/null @@ -1,20 +0,0 @@ -\echo Use "CREATE EXTENSION pgpm-defaults" to load this file. \quit -DO $EOFCODE$ -DECLARE - sql text; -BEGIN - SELECT - format('REVOKE ALL ON DATABASE %I FROM PUBLIC', current_database()) INTO sql; - EXECUTE sql; -END -$EOFCODE$; - -ALTER DEFAULT PRIVILEGES - REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC RESTRICT; - -REVOKE CREATE ON SCHEMA public FROM PUBLIC RESTRICT; - -GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO authenticated, anonymous, administrator; - -ALTER DEFAULT PRIVILEGES IN SCHEMA public - GRANT EXECUTE ON FUNCTIONS TO authenticated, anonymous, administrator; \ No newline at end of file diff --git a/packages/encrypted-secrets-table/Makefile b/packages/encrypted-secrets-table/Makefile index 4df484802..75a049d29 100644 --- a/packages/encrypted-secrets-table/Makefile +++ b/packages/encrypted-secrets-table/Makefile @@ -1,5 +1,5 @@ EXTENSION = pgpm-encrypted-secrets-table -DATA = sql/pgpm-encrypted-secrets-table--0.26.0.sql +DATA = sql/pgpm-encrypted-secrets-table--0.15.5.sql PG_CONFIG = pg_config PGXS := $(shell $(PG_CONFIG) --pgxs) diff --git a/packages/encrypted-secrets-table/README.md b/packages/encrypted-secrets-table/README.md index dabef193f..8c74e5223 100644 --- a/packages/encrypted-secrets-table/README.md +++ b/packages/encrypted-secrets-table/README.md @@ -293,29 +293,14 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - ## Disclaimer AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. diff --git a/packages/encrypted-secrets-table/__tests__/__snapshots__/secrets-table.test.ts.snap b/packages/encrypted-secrets-table/__tests__/__snapshots__/secrets-table.test.ts.snap index aa6ea3076..bb2e1d3b3 100644 --- a/packages/encrypted-secrets-table/__tests__/__snapshots__/secrets-table.test.ts.snap +++ b/packages/encrypted-secrets-table/__tests__/__snapshots__/secrets-table.test.ts.snap @@ -4,7 +4,7 @@ exports[`encrypted secrets table should have secrets_table with correct structur { "columns": [ { - "column_default": "uuidv7()", + "column_default": "uuid_generate_v4()", "column_name": "id", "data_type": "uuid", "is_nullable": "NO", diff --git a/packages/encrypted-secrets-table/package.json b/packages/encrypted-secrets-table/package.json index ff70d3af7..56efadaa4 100644 --- a/packages/encrypted-secrets-table/package.json +++ b/packages/encrypted-secrets-table/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/encrypted-secrets-table", - "version": "0.28.3", + "version": "0.15.5", "description": "Table-based encrypted secrets storage and retrieval", "author": "Dan Lynch ", "contributors": [ @@ -24,7 +24,7 @@ "@pgpm/verify": "workspace:*" }, "devDependencies": { - "pgpm": "^4.23.2" + "pgpm": "^4.28.7" }, "repository": { "type": "git", @@ -34,4 +34,4 @@ "bugs": { "url": "https://github.com/constructive-io/pgpm-modules/issues" } -} +} \ No newline at end of file diff --git a/packages/encrypted-secrets-table/pgpm-encrypted-secrets-table.control b/packages/encrypted-secrets-table/pgpm-encrypted-secrets-table.control index 13a73a197..9a646ee30 100644 --- a/packages/encrypted-secrets-table/pgpm-encrypted-secrets-table.control +++ b/packages/encrypted-secrets-table/pgpm-encrypted-secrets-table.control @@ -1,6 +1,6 @@ # pgpm-encrypted-secrets-table extension comment = 'pgpm-encrypted-secrets-table extension' -default_version = '0.26.0' +default_version = '0.15.5' module_pathname = '$libdir/pgpm-encrypted-secrets-table' requires = 'pgcrypto,plpgsql,pgpm-verify' relocatable = false diff --git a/packages/encrypted-secrets-table/sql/pgpm-encrypted-secrets-table--0.26.0.sql b/packages/encrypted-secrets-table/sql/pgpm-encrypted-secrets-table--0.15.5.sql similarity index 100% rename from packages/encrypted-secrets-table/sql/pgpm-encrypted-secrets-table--0.26.0.sql rename to packages/encrypted-secrets-table/sql/pgpm-encrypted-secrets-table--0.15.5.sql diff --git a/packages/encrypted-secrets/README.md b/packages/encrypted-secrets/README.md index 4f40ccb8d..13d4098c0 100644 --- a/packages/encrypted-secrets/README.md +++ b/packages/encrypted-secrets/README.md @@ -497,29 +497,14 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - ## Disclaimer AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. diff --git a/packages/encrypted-secrets/package.json b/packages/encrypted-secrets/package.json index d65b3f4e3..dbbb8b478 100644 --- a/packages/encrypted-secrets/package.json +++ b/packages/encrypted-secrets/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/encrypted-secrets", - "version": "0.28.3", + "version": "0.15.5", "description": "Encrypted secrets management for PostgreSQL", "author": "Dan Lynch ", "contributors": [ @@ -25,7 +25,7 @@ "@pgpm/verify": "workspace:*" }, "devDependencies": { - "pgpm": "^4.23.2" + "pgpm": "^4.28.7" }, "repository": { "type": "git", @@ -35,4 +35,4 @@ "bugs": { "url": "https://github.com/constructive-io/pgpm-modules/issues" } -} +} \ No newline at end of file diff --git a/packages/encrypted-secrets/sql/pgpm-encrypted-secrets--0.15.3.sql b/packages/encrypted-secrets/sql/pgpm-encrypted-secrets--0.15.3.sql deleted file mode 100644 index 0aa1dffda..000000000 --- a/packages/encrypted-secrets/sql/pgpm-encrypted-secrets--0.15.3.sql +++ /dev/null @@ -1,231 +0,0 @@ -\echo Use "CREATE EXTENSION pgpm-encrypted-secrets" to load this file. \quit -CREATE SCHEMA encrypted_secrets; - -CREATE FUNCTION encrypted_secrets.encrypt_field_bytea_to_text(secret_value bytea) RETURNS text AS $EOFCODE$ - SELECT - convert_from(encrypt_field_bytea_to_text.secret_value, 'SQL_ASCII'); -$EOFCODE$ LANGUAGE sql IMMUTABLE; - -CREATE FUNCTION encrypted_secrets.encrypt_field_crypt_verify(secrets_owned_field uuid, secret_value_field text, secret_verify_value text) RETURNS bool AS $EOFCODE$ - DECLARE - result bool; - rec secrets_schema.secrets_table; - s_value text; - BEGIN - - SELECT * FROM secrets_schema.secrets_table s - WHERE s.secrets_owned_field = encrypt_field_crypt_verify.secrets_owned_field - INTO rec; - - EXECUTE format('SELECT ($1).%s::text', secret_value_field) - USING rec - INTO s_value; - - SELECT - s_value = crypt(secret_verify_value, s_value) - INTO result; - - RETURN result; -END; -$EOFCODE$ LANGUAGE plpgsql STABLE; - -CREATE FUNCTION encrypted_secrets.encrypt_field_crypt() RETURNS trigger AS $EOFCODE$ -BEGIN - NEW.field_name = crypt(NEW.field_name::text, gen_salt('bf')); - RETURN NEW; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION encrypted_secrets.encrypt_field_pgp_get(secret_value bytea, secret_encode text) RETURNS text AS $EOFCODE$ - SELECT - convert_from(decode(pgp_sym_decrypt(encrypt_field_pgp_get.secret_value, encrypt_field_pgp_get.secret_encode), 'hex'), 'SQL_ASCII'); -$EOFCODE$ LANGUAGE sql; - -CREATE FUNCTION encrypted_secrets.encrypt_field_pgp_getter(secrets_owned_field uuid, secret_value_field text, secret_encode_field text) RETURNS text AS $EOFCODE$ - DECLARE - result text; - rec secrets_schema.secrets_table; - s_value bytea; - s_enc text; - BEGIN - - SELECT * FROM secrets_schema.secrets_table s - WHERE s.secrets_owned_field = encrypt_field_pgp_getter.secrets_owned_field - INTO rec; - - EXECUTE format('SELECT ($1).%s::text', secret_value_field) - USING rec - INTO s_value; - - EXECUTE format('SELECT ($1).%s::text', secret_encode_field) - USING rec - INTO s_enc; - - SELECT - convert_from(decode(pgp_sym_decrypt(s_value, s_enc), 'hex'), 'SQL_ASCII') - INTO result; - - RETURN result; -END; -$EOFCODE$ LANGUAGE plpgsql STABLE; - -CREATE FUNCTION encrypted_secrets.encrypt_field_pgp() RETURNS trigger AS $EOFCODE$ -BEGIN - NEW.field_name = pgp_sym_encrypt(encode(NEW.field_name::bytea, 'hex'), NEW.encode_field::text, 'compress-algo=1, cipher-algo=aes256'); - RETURN NEW; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION encrypted_secrets.encrypt_field_set(secret_value text) RETURNS bytea AS $EOFCODE$ - SELECT encrypt_field_set.secret_value::bytea; -$EOFCODE$ LANGUAGE sql; - -CREATE FUNCTION encrypted_secrets.secrets_getter(secrets_owned_field uuid, secret_name text, default_value text DEFAULT NULL) RETURNS text AS $EOFCODE$ -DECLARE - v_secret secrets_schema.secrets_table; -BEGIN - SELECT - * - FROM - secrets_schema.secrets_table s - WHERE - s.name = secrets_getter.secret_name - AND s.secrets_owned_field = secrets_getter.secrets_owned_field - INTO v_secret; - - IF (NOT FOUND OR v_secret IS NULL) THEN - RETURN secrets_getter.default_value; - END IF; - - IF (v_secret.secrets_enc_field = 'crypt') THEN - RETURN convert_from(v_secret.secrets_value_field, 'SQL_ASCII'); - ELSIF (v_secret.secrets_enc_field = 'pgp') THEN - RETURN convert_from(decode(pgp_sym_decrypt(v_secret.secrets_value_field, v_secret.secrets_owned_field::text), 'hex'), 'SQL_ASCII'); - END IF; - - RETURN convert_from(v_secret.secrets_value_field, 'SQL_ASCII'); - -END -$EOFCODE$ LANGUAGE plpgsql STABLE; - -CREATE FUNCTION encrypted_secrets.secrets_upsert(v_secrets_owned_field uuid, secret_name text, secret_value text, field_encoding text DEFAULT 'pgp') RETURNS boolean AS $EOFCODE$ -BEGIN - INSERT INTO secrets_schema.secrets_table (secrets_owned_field, name, secrets_value_field, secrets_enc_field) - VALUES (v_secrets_owned_field, secrets_upsert.secret_name, secrets_upsert.secret_value::bytea, secrets_upsert.field_encoding) - ON CONFLICT (secrets_owned_field, name) - DO - UPDATE - SET - -- don't change this, cannot use EXCLUDED, don't know why, but you have to set to the ::bytea - secrets_value_field = secrets_upsert.secret_value::bytea, - secrets_enc_field = EXCLUDED.secrets_enc_field; - RETURN TRUE; -END -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -GRANT EXECUTE ON FUNCTION encrypted_secrets.secrets_upsert TO authenticated; - -CREATE FUNCTION encrypted_secrets.secrets_verify(secrets_owned_field uuid, secret_name text, secret_value text) RETURNS boolean AS $EOFCODE$ -DECLARE - v_secret_text text; - v_secret secrets_schema.secrets_table; -BEGIN - SELECT - * - FROM - encrypted_secrets.secrets_getter (secrets_verify.secrets_owned_field, secrets_verify.secret_name) - INTO v_secret_text; - - SELECT - * - FROM - secrets_schema.secrets_table s - WHERE - s.name = secrets_verify.secret_name - AND s.secrets_owned_field = secrets_verify.secrets_owned_field INTO v_secret; - - IF (v_secret.secrets_enc_field = 'crypt') THEN - RETURN v_secret_text = crypt(secrets_verify.secret_value::bytea::text, v_secret_text); - ELSIF (v_secret.secrets_enc_field = 'pgp') THEN - RETURN secrets_verify.secret_value = v_secret_text; - END IF; - - RETURN secrets_verify.secret_value = v_secret_text; -END -$EOFCODE$ LANGUAGE plpgsql STABLE; - -GRANT EXECUTE ON FUNCTION encrypted_secrets.secrets_verify TO authenticated; - -CREATE FUNCTION encrypted_secrets.secrets_table_upsert(secrets_owned_field uuid, data pg_catalog.json) RETURNS void AS $EOFCODE$ -DECLARE - rec secrets_schema.secrets_table; - _sql text; - key text; - - fields text[] = ARRAY[]::text[]; - values text[] = ARRAY[]::text[]; - pairs text[] = ARRAY[]::text[]; -BEGIN - - SELECT * FROM secrets_schema.secrets_table s - WHERE s.secrets_owned_field = secrets_table_upsert.secrets_owned_field - INTO rec; - - IF (FOUND) THEN - - FOR key IN SELECT json_object_keys(data) - LOOP - pairs = array_append(pairs, format('%s=%s', key, quote_literal(data->>key))); - END LOOP; - - _sql = 'UPDATE secrets_schema.secrets_table SET '; -- it's already quoted! look at I above... - _sql = _sql || format('%s', array_to_string(pairs, ',')); - _sql = _sql || ' WHERE secrets_owned_field='; - _sql = _sql || quote_literal(secrets_owned_field); - _sql = _sql || ';'; - - ELSE - - values = array_append(values, quote_literal(secrets_owned_field)); - fields = array_append(fields, 'secrets_owned_field'); - - FOR key IN SELECT json_object_keys(data) - LOOP - values = array_append(values, quote_literal(data->>key)); - fields = array_append(fields, key); - END LOOP; - - _sql = 'INSERT INTO secrets_schema.secrets_table ('; -- it's already quoted! look at I above... - _sql = _sql || format('%s)', array_to_string(fields, ',')); - _sql = _sql || ' VALUES ('; - _sql = _sql || format('%s)', array_to_string(values, ',')); - _sql = _sql || ';'; - - END IF; - - EXECUTE _sql; - -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -GRANT EXECUTE ON FUNCTION encrypted_secrets.secrets_table_upsert TO authenticated; - -CREATE FUNCTION encrypted_secrets.secrets_delete(secrets_owned_field uuid, secret_name text) RETURNS void AS $EOFCODE$ -BEGIN - DELETE FROM secrets_schema.secrets_table s - WHERE s.secrets_owned_field = secrets_delete.secrets_owned_field - AND s.name = secrets_delete.secret_name; -END -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION encrypted_secrets.secrets_delete(secrets_owned_field uuid, secret_names text[]) RETURNS void AS $EOFCODE$ -BEGIN - DELETE FROM secrets_schema.secrets_table s - WHERE s.secrets_owned_field = secrets_delete.secrets_owned_field - AND s.name = ANY(secrets_delete.secret_names); -END -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -GRANT EXECUTE ON FUNCTION encrypted_secrets.secrets_delete(uuid, text) TO authenticated; - -GRANT EXECUTE ON FUNCTION encrypted_secrets.secrets_delete(uuid, text[]) TO authenticated; \ No newline at end of file diff --git a/packages/faker/README.md b/packages/faker/README.md index 673c0f4e5..567b5e260 100644 --- a/packages/faker/README.md +++ b/packages/faker/README.md @@ -520,29 +520,14 @@ None - this is a pure plpgsql implementation. ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - ## Disclaimer AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. diff --git a/packages/faker/package.json b/packages/faker/package.json index df8e4732b..ec047606e 100644 --- a/packages/faker/package.json +++ b/packages/faker/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/faker", - "version": "0.28.3", + "version": "0.15.5", "description": "Fake data generation utilities for testing and development", "author": "Dan Lynch ", "contributors": [ @@ -25,7 +25,7 @@ "@pgpm/verify": "workspace:*" }, "devDependencies": { - "pgpm": "^4.23.2" + "pgpm": "^4.28.7" }, "repository": { "type": "git", @@ -35,4 +35,4 @@ "bugs": { "url": "https://github.com/constructive-io/pgpm-modules/issues" } -} +} \ No newline at end of file diff --git a/packages/faker/sql/pgpm-faker--0.15.3.sql b/packages/faker/sql/pgpm-faker--0.15.3.sql deleted file mode 100644 index be0a321ef..000000000 --- a/packages/faker/sql/pgpm-faker--0.15.3.sql +++ /dev/null @@ -1,10404 +0,0 @@ -\echo Use "CREATE EXTENSION pgpm-faker" to load this file. \quit -CREATE SCHEMA faker; - -CREATE TABLE faker.dictionary ( - id uuid PRIMARY KEY DEFAULT uuid_generate_v4(), - type text, - word text -); - -CREATE INDEX faker_type_idx ON faker.dictionary (type); - -CREATE FUNCTION faker.word_type() RETURNS text AS $EOFCODE$ -SELECT (CASE (RANDOM() * 2)::INT - WHEN 0 THEN 'adjectives' - WHEN 1 THEN 'colors' - WHEN 2 THEN 'animals' - END); -$EOFCODE$ LANGUAGE sql; - -CREATE FUNCTION faker.word(wordtype text DEFAULT NULL) RETURNS text AS $EOFCODE$ -DECLARE - vword text; - vtype text; -BEGIN - IF (wordtype IS NOT NULL) THEN - vtype = wordtype; - ELSE - vtype = faker.word_type(); - END IF; - -SELECT word FROM faker.dictionary -WHERE type = vtype -OFFSET floor( random() * (select count(*) from faker.dictionary WHERE type = vtype ) ) LIMIT 1 -INTO vword; - -RETURN vword; - -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.word(wordtypes text[]) RETURNS text AS $EOFCODE$ -BEGIN - RETURN faker.word(wordtypes[faker.integer(1, cardinality(wordtypes))]::text); -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.gender(gender text DEFAULT NULL) RETURNS text AS $EOFCODE$ -DECLARE -BEGIN - IF (gender IS NOT NULL) THEN - RETURN gender; - END IF; - RETURN (CASE (RANDOM() * 1)::INT - WHEN 0 THEN 'M' - WHEN 1 THEN 'F' - END); -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.username() RETURNS text AS $EOFCODE$ -DECLARE -BEGIN - RETURN (CASE (RANDOM() * 2)::INT - WHEN 0 THEN faker.word() || (RANDOM() * 100)::INT - WHEN 1 THEN faker.word() || '.' || faker.word() || (RANDOM() * 100)::INT - WHEN 2 THEN faker.word() - END); -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.name(gender text DEFAULT NULL) RETURNS text AS $EOFCODE$ -DECLARE - -BEGIN - IF (gender IS NULL) THEN - gender = faker.gender(); - END IF; - - IF (gender = 'M') THEN - RETURN initcap(faker.word('boys')); - ELSE - RETURN initcap(faker.word('girls')); - END IF; - -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.surname() RETURNS text AS $EOFCODE$ -BEGIN - RETURN initcap(faker.word('surname')); -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.fullname(gender text DEFAULT NULL) RETURNS text AS $EOFCODE$ -BEGIN - RETURN initcap(faker.name(gender)) || ' ' || initcap(faker.word('surname')); -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.business() RETURNS text AS $EOFCODE$ -BEGIN - RETURN (CASE (RANDOM() * 4)::INT - WHEN 0 THEN array_to_string( ARRAY[faker.word('bizname'), faker.word('bizsurname') || ',', faker.word('bizsuffix')]::text[], ' ') - WHEN 1 THEN array_to_string( ARRAY[faker.word('bizname'), faker.word('bizsurname')]::text[], ' ') - WHEN 2 THEN array_to_string( ARRAY[faker.word('bizname'), faker.word('bizsurname')]::text[], ' ') - WHEN 3 THEN array_to_string( ARRAY[faker.word('bizname') || faker.word('bizpostfix'), faker.word('bizsurname') ]::text[], ' ') - WHEN 4 THEN array_to_string( ARRAY[faker.word('bizname') || faker.word('bizpostfix'), faker.word('bizsurname') || ',', faker.word('bizsuffix')]::text[], ' ') - END); -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.city(state text DEFAULT NULL) RETURNS text AS $EOFCODE$ -DECLARE - vcity text; -BEGIN - -IF (state IS NOT NULL) THEN - - SELECT city FROM faker.cities - WHERE cities.state = city.state - OFFSET floor( random() * (select count(*) from faker.cities WHERE cities.state = city.state ) ) LIMIT 1 - INTO vcity; - -ELSE - - SELECT city FROM faker.cities - OFFSET floor( random() * (select count(*) from faker.cities ) ) LIMIT 1 - INTO vcity; - -END IF; - - -RETURN vcity; - -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.zip(city text DEFAULT NULL) RETURNS int AS $EOFCODE$ -DECLARE - vzips int[]; -BEGIN - -IF (city IS NOT NULL) THEN - - SELECT zips FROM faker.cities - WHERE cities.city = zip.city - OFFSET floor( random() * (select count(*) from faker.cities WHERE cities.city = zip.city ) ) LIMIT 1 - INTO vzips; - -ELSE - - SELECT zips FROM faker.cities - OFFSET floor( random() * (select count(*) from faker.cities ) ) LIMIT 1 - INTO vzips; - -END IF; - - -RETURN vzips[ faker.integer(1, cardinality(vzips)) ]; - -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.lnglat(x1 double precision, y1 double precision, x2 double precision, y2 double precision) RETURNS point AS $EOFCODE$ -DECLARE - vlat float; - vlng float; -BEGIN - -RETURN Point( - faker.float(least(x1, x2), greatest(x1, x2)), - faker.float(least(y1, y2), greatest(y1, y2)) -); - -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.lnglat(city text DEFAULT NULL) RETURNS point AS $EOFCODE$ -DECLARE - vlat float; - vlng float; -BEGIN - -IF (city IS NOT NULL) THEN - SELECT lat, lng FROM faker.cities - WHERE cities.city = lnglat.city - OFFSET floor( random() * (select count(*) from faker.cities WHERE cities.city = lnglat.city ) ) LIMIT 1 - INTO vlat, vlng; -ELSE - SELECT lat, lng FROM faker.cities - OFFSET floor( random() * (select count(*) from faker.cities ) ) LIMIT 1 - INTO vlat, vlng; -END IF; - -RETURN Point(vlng, vlat); - -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.phone() RETURNS text AS $EOFCODE$ -BEGIN - - RETURN concat('+1 ', - - '(', - - array_to_string(ARRAY[ - faker.integer(0,9), - faker.integer(0,9), - faker.integer(0,9) - ]::text[], ''), - - ') ', - - array_to_string(ARRAY[ - faker.integer(0,9), - faker.integer(0,9), - faker.integer(0,9) - ]::text[], ''), - - '-', - - array_to_string(ARRAY[ - faker.integer(0,9), - faker.integer(0,9), - faker.integer(0,9), - faker.integer(0,9) - ]::text[], '') - - ); - -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.street() RETURNS text AS $EOFCODE$ -BEGIN - RETURN faker.word('street'); -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.state(state text DEFAULT NULL) RETURNS text AS $EOFCODE$ -DECLARE - vstate text; -BEGIN - -IF (state IS NULL) THEN - SELECT distinct(c.state) FROM faker.cities c - OFFSET floor( random() * (select count(distinct(c2.state)) from faker.cities c2 ) ) LIMIT 1 - INTO vstate; -ELSE - vstate = state; -END IF; - -RETURN vstate; - -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.address(state text DEFAULT NULL, city text DEFAULT NULL) RETURNS text AS $EOFCODE$ -DECLARE - vcity text; - vstate text; - vstreet text; - vstreetnum int; - vzips int[]; - vzip int; -BEGIN - -IF (state IS NULL) THEN - vstate = faker.state(); -ELSE - vstate = state; -END IF; - -SELECT c.city, c.zips FROM faker.cities c -WHERE c.state = vstate -OFFSET floor( random() * (select count(*) from faker.cities WHERE cities.state = vstate ) ) LIMIT 1 -INTO vcity, vzips; - -vstreetnum = faker.integer(1, 3000); -vstreet = faker.street(); -vzip = vzips[ faker.integer(1, cardinality(vzips)) ]; - -RETURN concat(vstreetnum::text, ' ', vstreet, E'\n', vcity, ', ', vstate, ' ', vzip::text); - -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.tags(min int DEFAULT 1, max int DEFAULT 5, dict text DEFAULT 'tag') RETURNS citext[] AS $EOFCODE$ -DECLARE - words text[]; - lim int = faker.integer(min,max); -BEGIN - -SELECT ARRAY ( - SELECT word FROM faker.dictionary - WHERE type = dict - OFFSET floor( random() * (select count(*) from faker.dictionary WHERE type = dict ) ) LIMIT lim -) INTO words; - -RETURN words::citext[]; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.sentence(unit text DEFAULT 'word', min int DEFAULT 7, max int DEFAULT 20, cat text[] DEFAULT CAST(ARRAY['lorem'] AS text[]), period text DEFAULT '.') RETURNS text AS $EOFCODE$ -DECLARE - num int = faker.integer(min, max); - txt text; - vtype text; - n int; - c int; -BEGIN - - IF (unit = 'word') THEN - txt = initcap(faker.word(cat)); - FOR n IN - SELECT * FROM generate_series(1, num) g(n) - LOOP - txt = txt || ' ' || faker.word(cat); - END LOOP; - RETURN txt || period; - ELSEIF (unit = 'char' OR unit = 'chars') THEN - txt = initcap(faker.word(cat)); - c = char_length(txt); - IF (c = num) THEN - RETURN concat(txt, period); - END IF; - IF (c > num) THEN - RETURN substring(txt from 1 for num) || period; - END IF; - WHILE (c < num) - LOOP - txt = txt || ' ' || faker.word(cat); - c = char_length(txt); - END LOOP; - IF (c = num) THEN - RETURN txt || period; - END IF; - IF (c > num) THEN - RETURN substring(txt from 1 for num) || period; - END IF; - RETURN txt || period; - END IF; - RAISE EXCEPTION 'faker.sentence() bad input'; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.paragraph(unit text DEFAULT 'word', min int DEFAULT 7, max int DEFAULT 20, cat text[] DEFAULT CAST(ARRAY['lorem'] AS text[])) RETURNS text AS $EOFCODE$ -DECLARE - num int = faker.integer(min, max); - txt text; - words text[]; - n int; - needscaps boolean = false; -BEGIN - txt = faker.sentence(unit, min, max, cat, ''); - words = string_to_array(txt, ' '); - txt = ''; - - FOR n IN - SELECT * FROM generate_series(1, cardinality(words)) g(n) - LOOP - IF (needscaps IS TRUE) THEN - txt = concat(txt, ' ', initcap(words[n])); - ELSE - txt = concat(txt, ' ', words[n]); - END IF; - - IF (faker.integer(1,100) > 70) THEN - txt = txt || '.'; - needscaps = true; - ELSE - needscaps = false; - END IF; - - END LOOP; - - IF (trim(txt) ~ '\.$') THEN - RETURN trim(txt); - ELSE - RETURN trim(txt || '.'); - END IF; - -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.email() RETURNS text AS $EOFCODE$ -SELECT - faker.word() || (RANDOM() * 100)::INT || '@' || ( - CASE (RANDOM() * 3)::INT - WHEN 0 THEN 'gmail' - WHEN 1 THEN 'hotmail' - WHEN 2 THEN 'yahoo' - WHEN 3 THEN faker.word() - END - ) || '.com' AS email -$EOFCODE$ LANGUAGE sql; - -CREATE FUNCTION faker.uuid() RETURNS uuid AS $EOFCODE$ -SELECT - uuid_generate_v4(); -$EOFCODE$ LANGUAGE sql; - -CREATE FUNCTION faker.token(bytes int DEFAULT 16) RETURNS text AS $EOFCODE$ -SELECT - encode( gen_random_bytes( bytes ), 'hex' ) -$EOFCODE$ LANGUAGE sql; - -CREATE FUNCTION faker.password() RETURNS text AS $EOFCODE$ -DECLARE - chars text[] = regexp_split_to_array('!@#$%^&*():";''<>?,./~`'::text, ''); - num_special int = faker.integer(0, 4); - n int = 0; - pass text; -BEGIN - - IF (num_special = 0) THEN - pass = encode( gen_random_bytes( 16 ), 'hex' ); - ELSE - pass = encode( gen_random_bytes( 4 ), 'hex' ); - FOR n IN - SELECT * FROM generate_series(1, num_special) g(n) - LOOP - pass = pass || - encode( gen_random_bytes( faker.integer(1,4) ), 'hex' ) || - chars[ faker.integer(1, cardinality(chars)) ] || - encode( gen_random_bytes( faker.integer(1,4) ), 'hex' ); - - END LOOP; - END IF; - - - RETURN pass; - -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.hostname() RETURNS text AS $EOFCODE$ -SELECT - faker.word() || '.' || ( - CASE (RANDOM() * 4)::INT - WHEN 0 THEN 'com' - WHEN 1 THEN 'net' - WHEN 2 THEN 'io' - WHEN 3 THEN 'org' - WHEN 4 THEN 'co' - END - ) -$EOFCODE$ LANGUAGE sql; - -CREATE FUNCTION faker.time_unit() RETURNS text AS $EOFCODE$ -SELECT - ( - CASE (RANDOM() * 5)::INT - WHEN 0 THEN 'millisecond' - WHEN 1 THEN 'second' - WHEN 2 THEN 'minute' - WHEN 3 THEN 'hour' - WHEN 4 THEN 'day' - WHEN 5 THEN 'week' - END - ) -$EOFCODE$ LANGUAGE sql; - -CREATE FUNCTION faker."float"(min double precision DEFAULT 0, max double precision DEFAULT 100) RETURNS double precision AS $EOFCODE$ -DECLARE - num float; - high float; - low float; -BEGIN - high = greatest(min, max); - low = least(min, max); - num = (RANDOM() * ( high - low )) + low; - RETURN num; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker."integer"(min int DEFAULT 0, max int DEFAULT 100) RETURNS int AS $EOFCODE$ -DECLARE - num int; -BEGIN - min = ceil(min); - max = floor(max); - num = floor(RANDOM() * ( max - min + 1 )) + min; - RETURN num; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.date(min int DEFAULT 1, max int DEFAULT 100, future boolean DEFAULT false) RETURNS date AS $EOFCODE$ -DECLARE - d date; - num int = faker.integer(min, max); -BEGIN -IF (future) THEN - d = now()::date + num; -ELSE - d = now()::date - num; -END IF; -RETURN d; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.birthdate(min int DEFAULT 1, max int DEFAULT 100) RETURNS date AS $EOFCODE$ -DECLARE - d date; - years int = faker.integer(min, max); - days int = faker.integer(1, 365); - itv interval; -BEGIN - itv = concat(years, ' years')::interval + concat(days, ' days')::interval; - d = now()::date - itv; - RETURN d; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker."interval"() RETURNS interval AS $EOFCODE$ -DECLARE - ival text; -BEGIN - SELECT faker.time_unit() INTO ival; - ival = (RANDOM() * 100)::text || ' ' || ival; - RETURN ival::interval; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker."interval"(min int, max int) RETURNS interval AS $EOFCODE$ -SELECT (faker.integer(min, max)::text || ' ' || 'seconds')::interval; -$EOFCODE$ LANGUAGE sql VOLATILE; - -CREATE FUNCTION faker."boolean"() RETURNS boolean AS $EOFCODE$ -BEGIN - RETURN ( - CASE (RANDOM() * 1)::INT - WHEN 0 THEN TRUE - WHEN 1 THEN FALSE - END - ); -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.timestamptz(future boolean DEFAULT false) RETURNS timestamptz AS $EOFCODE$ -DECLARE - ival interval; - t timestamptz; -BEGIN - ival = faker.interval(); - IF (future) THEN - SELECT now() + ival INTO t; - ELSE - SELECT now() - ival INTO t; - END IF; - RETURN t; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.mime() RETURNS text AS $EOFCODE$ - SELECT faker.word('mime'); -$EOFCODE$ LANGUAGE sql; - -CREATE FUNCTION faker.ext(mime text DEFAULT faker.mime()) RETURNS text AS $EOFCODE$ -DECLARE - ext text; -BEGIN - IF (mime IS NULL) THEN - ext = faker.word(faker.mime()); - ELSE - ext = faker.word(mime); - END IF; - RETURN ext; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.image_mime() RETURNS text AS $EOFCODE$ -SELECT - ( - CASE (RANDOM() * 3)::INT - WHEN 0 THEN 'image/svg+xml' - WHEN 1 THEN 'image/png' - WHEN 2 THEN 'image/gif' - WHEN 3 THEN 'image/jpeg' - END - ) -$EOFCODE$ LANGUAGE sql; - -CREATE FUNCTION faker.image(width int DEFAULT NULL, height int DEFAULT NULL) RETURNS image AS $EOFCODE$ -DECLARE - w int; - h int; - obj jsonb = '{}'::jsonb; - url text; -BEGIN - IF (width IS NULL) THEN - w = faker.integer(800,1200); - ELSE - w = width; - END IF; - IF (height IS NULL) THEN - h = faker.integer(800,1200); - ELSE - h = height; - END IF; - - url = concat('https://picsum.photos/', w::text, '/', h::text); - - obj = jsonb_set(obj, '{url}', to_jsonb(url)); - obj = jsonb_set(obj, '{mime}', to_jsonb(faker.image_mime())); - - RETURN obj; - -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.profilepic() RETURNS image AS $EOFCODE$ -DECLARE - obj jsonb = '{}'::jsonb; - vurl text = ''; - gndr text = 'women'; -BEGIN - IF ((RANDOM() * 2)::INT = 0) THEN - gndr = 'men'; - END IF; - vurl = concat('https://randomuser.me/api/portraits/', gndr, '/', faker.integer(1, 99) , '.jpg'); - obj = jsonb_set(obj, '{url}', to_jsonb(vurl::text)); - obj = jsonb_set(obj, '{mime}', to_jsonb('image/jpeg'::text)); - RETURN obj; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.profilepic(gender text) RETURNS image AS $EOFCODE$ -DECLARE - obj jsonb = '{}'::jsonb; - vurl text = ''; - gndr text = 'women'; -BEGIN - IF (gender = 'M') THEN - gndr = 'men'; - END IF; - vurl = concat('https://randomuser.me/api/portraits/', gndr, '/', faker.integer(1, 99) , '.jpg'); - obj = jsonb_set(obj, '{url}', to_jsonb(vurl::text)); - obj = jsonb_set(obj, '{mime}', to_jsonb('image/jpeg'::text)); - RETURN obj; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.file(mime text DEFAULT NULL) RETURNS text AS $EOFCODE$ -BEGIN - RETURN concat(faker.word(), '.', faker.ext(mime)); -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.url(mime text DEFAULT NULL) RETURNS url AS $EOFCODE$ -DECLARE - obj jsonb = '{}'::jsonb; - url text; -BEGIN - url = concat('https://', faker.hostname(), '/', faker.file(mime)); - RETURN url; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.upload(mime text DEFAULT NULL) RETURNS upload AS $EOFCODE$ -BEGIN - RETURN faker.url(mime); -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.ip(mime text DEFAULT NULL) RETURNS text AS $EOFCODE$ -BEGIN - RETURN - array_to_string(ARRAY[ - faker.integer(0,255), - faker.integer(0,255), - faker.integer(0,255), - faker.integer(0,255) - ]::text[], '.'); -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION faker.attachment(mime text DEFAULT NULL) RETURNS attachment AS $EOFCODE$ -BEGIN - IF (mime IS NULL) THEN - mime = faker.mime(); - END IF; - RETURN faker.url(mime); -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE TABLE faker.cities ( - id uuid PRIMARY KEY DEFAULT uuid_generate_v4(), - city text, - state text, - zips int[], - lat double precision, - lng double precision -); - -CREATE INDEX faker_city_idx1 ON faker.cities (city); - -CREATE INDEX faker_city_idx2 ON faker.cities (state); - -CREATE INDEX faker_city_idx3 ON faker.cities USING gin (zips); - -INSERT INTO faker.cities ( - city, - state, - zips, - lat, - lng -) VALUES - ('New York', 'NY', ARRAY[11226, 11225, 11224, 11222], 40.6943, -73.9249), - ('Los Angeles', 'CA', ARRAY[90291, 90293, 90292, 91316, 91311, 90037, 90031, 90008, 90004, 90005, 90006, 90007, 90001, 90002, 90003, 90710, 90089, 91344, 91345, 91340, 91342, 91343, 90035, 90034, 90036, 90033, 90032, 90039, 90247, 90248, 91436, 91371, 91605, 91604, 91607, 91601, 91602, 90402, 90068, 90069, 90062, 90063, 90061, 90066, 90067, 90064, 90065, 91326, 91324, 91325, 90013, 90012, 90011, 90010, 90017, 90016, 90015, 90014, 90019, 90090, 90095, 90094, 91042, 91040, 91411, 91352, 91356, 90041, 90042, 90043, 90044, 90045, 90046, 90047, 90048, 90049, 90018, 91423, 90210, 91303, 91304, 91306, 91307, 90079, 90071, 90077, 90059, 91608, 91606, 91331, 91330, 91335, 90026, 90027, 90024, 90025, 90023, 90020, 90021, 90028, 90029, 90272, 90732, 90731, 90230, 91406, 91405, 91403, 91402, 91401, 91367, 91364, 90038, 90057, 90058, 90744, 90501, 90502, 90009, 90030, 90050, 90051, 90054, 90055, 90070, 90072, 90074, 90075, 90076, 90080, 90082, 90083, 90084, 90086, 90087, 90088, 90093, 90099, 90134, 90189, 90213, 90294, 90296, 90733, 90734, 90748, 91041, 91043, 91305, 91308, 91309, 91313, 91327, 91328, 91329, 91333, 91334, 91337, 91346, 91353, 91357, 91365, 91392, 91393, 91394, 91395, 91396, 91404, 91407, 91408, 91409, 91410, 91412, 91413, 91416, 91426, 91470, 91482, 91495, 91496, 91499, 91603, 91609, 91610, 91611, 91612, 91614, 91615, 91616, 91617, 91618], 34.1139, -118.4068), - ('Chicago', 'IL', ARRAY[60649, 60641, 60640, 60643], 41.8373, -87.6862), - ('Miami', 'FL', ARRAY[33125, 33126, 33127, 33128], 25.7839, -80.2102), - ('Dallas', 'TX', ARRAY[75098, 75233, 75254, 75251], 32.7936, -96.7662), - ('Philadelphia', 'PA', ARRAY[19151, 19150, 19153, 19152], 40.0077, -75.1339), - ('Houston', 'TX', ARRAY[77068, 77061, 77060, 77063], 29.7863, -95.3889), - ('Atlanta', 'GA', ARRAY[30331, 30332, 30309, 30308], 33.7627, -84.4224), - ('Washington', 'DC', ARRAY[20011, 20012, 20015, 20228], 38.9047, -77.0163), - ('Boston', 'MA', ARRAY[2121, 2122, 2124, 2125], 42.3188, -71.0846), - ('Phoenix', 'AZ', ARRAY[85009, 85006, 85007, 85004], 33.5722, -112.0891), - ('Seattle', 'WA', ARRAY[98108, 98104, 98107, 98106], 47.6211, -122.3244), - ('San Francisco', 'CA', ARRAY[94131, 94132, 94133, 94134], 37.7562, -122.4430), - ('Detroit', 'MI', ARRAY[48208, 48201, 48207, 48205], 42.3834, -83.1024), - ('San Diego', 'CA', ARRAY[92108, 92103, 92111, 92154], 32.8312, -117.1225), - ('Minneapolis', 'MN', ARRAY[55409, 55408, 55407, 55406], 44.9635, -93.2678), - ('Tampa', 'FL', ARRAY[33629, 33621, 33620, 33619], 27.9942, -82.4451), - ('Denver', 'CO', ARRAY[80230, 80231, 80236, 80237], 39.7621, -104.8759), - ('Brooklyn', 'NY', ARRAY[11213, 11216, 11233, 11238], 40.6501, -73.9496), - ('Queens', 'NY', ARRAY[11362, 11363, 11364, 11354], 40.7498, -73.7976), - ('Riverside', 'CA', ARRAY[92503, 92501, 92505, 92504], 33.9381, -117.3948), - ('Baltimore', 'MD', ARRAY[21211, 21210, 21213, 21212], 39.3051, -76.6144), - ('Las Vegas', 'NV', ARRAY[89106, 89104, 89102, 89101], 36.2333, -115.2654), - ('Portland', 'OR', ARRAY[97221, 97220, 97229, 97203], 45.5372, -122.6500), - ('San Antonio', 'TX', ARRAY[78259, 78258, 78252, 78251], 29.4658, -98.5253), - ('St. Louis', 'MO', ARRAY[63111, 63112, 63113, 63115], 38.6358, -90.2451), - ('Sacramento', 'CA', ARRAY[95838, 95832, 95833, 95831], 38.5667, -121.4683), - ('Orlando', 'FL', ARRAY[32827, 32824, 32822, 32804], 28.4772, -81.3369), - ('San Jose', 'CA', ARRAY[95128, 95124, 95125, 95123], 37.3019, -121.8486), - ('Cleveland', 'OH', ARRAY[44128, 44119, 44113, 44112], 41.4767, -81.6804), - ('Pittsburgh', 'PA', ARRAY[15217, 15214, 15212, 15213], 40.4396, -79.9762), - ('Austin', 'TX', ARRAY[78748, 78741, 78742, 78745], 30.3004, -97.7522), - ('Cincinnati', 'OH', ARRAY[45213, 45212, 45211, 45217], 39.1413, -84.5061), - ('Kansas City', 'MO', ARRAY[64163, 64165, 64167, 64053], 39.1239, -94.5541), - ('Manhattan', 'NY', ARRAY[10027, 10030, 10037, 10039], 40.7834, -73.9662), - ('Indianapolis', 'IN', ARRAY[46219, 46217, 46214, 46260], 39.7771, -86.1458), - ('Columbus', 'OH', ARRAY[43109, 43054, 43220, 43221], 39.9862, -82.9850), - ('Charlotte', 'NC', ARRAY[28262, 28105, 28280, 28282], 35.2080, -80.8304), - ('Virginia Beach', 'VA', ARRAY[23451, 23453, 23452, 23455], 36.7335, -76.0435), - ('Bronx', 'NY', ARRAY[10457, 10460, 10458, 10467], 40.8501, -73.8662), - ('Milwaukee', 'WI', ARRAY[53202, 53207, 53206, 53205], 43.0642, -87.9673), - ('Providence', 'RI', ARRAY[2906, 2907, 2905, 2908], 41.8230, -71.4187), - ('Jacksonville', 'FL', ARRAY[32225, 32226, 32227, 32220], 30.3322, -81.6749), - ('Salt Lake City', 'UT', ARRAY[84115, 84113, 84112, 84111], 40.7777, -111.9306), - ('Nashville', 'TN', ARRAY[37138, 37076, 37072, 37205], 36.1715, -86.7843), - ('Richmond', 'VA', ARRAY[23223, 23220, 23221, 23226], 37.5295, -77.4756), - ('Memphis', 'TN', ARRAY[38127, 38107, 38106, 38105], 35.1046, -89.9773), - ('Raleigh', 'NC', ARRAY[27616, 27615, 27614, 27613], 35.8325, -78.6435), - ('New Orleans', 'LA', ARRAY[70130, 70131, 70114, 70115], 30.0687, -89.9288), - ('Louisville', 'KY', ARRAY[40245, 40241, 40218, 40219], 38.1663, -85.6485), - ('Oklahoma City', 'OK', ARRAY[73013, 73099, 73097, 73119], 35.4676, -97.5136), - ('Bridgeport', 'CT', ARRAY[6604, 6607, 6606, 6608], 41.1918, -73.1953), - ('Buffalo', 'NY', ARRAY[14209, 14202, 14203, 14201], 42.9016, -78.8487), - ('Fort Worth', 'TX', ARRAY[76040, 76134, 76135, 76137], 32.7811, -97.3473), - ('Hartford', 'CT', ARRAY[6105, 6103, 6120, 6112], 41.7661, -72.6834), - ('Tucson', 'AZ', ARRAY[85707, 85706, 85756, 85723], 32.1545, -110.8782), - ('Omaha', 'NE', ARRAY[68117, 68118, 68107, 68104], 41.2627, -96.0522), - ('El Paso', 'TX', ARRAY[79902, 79903, 79904, 79905], 31.8479, -106.4309), - ('Honolulu', 'HI', ARRAY[96850, 96822, 96826, 96813], 21.3294, -157.8460), - ('McAllen', 'TX', ARRAY[78504, 78503, 78501, 78502], 26.2273, -98.2471), - ('Albuquerque', 'NM', ARRAY[87120, 87123, 87112, 87113], 35.1053, -106.6464), - ('Birmingham', 'AL', ARRAY[35214, 35215, 35217, 35210], 33.5277, -86.7987), - ('Sarasota', 'FL', ARRAY[34234, 34237, 34236, 34239], 27.3386, -82.5431), - ('Dayton', 'OH', ARRAY[45402, 45403, 45406, 45404], 39.7797, -84.1998), - ('Rochester', 'NY', ARRAY[14609, 14606, 14604, 14605], 43.1680, -77.6162), - ('Fresno', 'CA', ARRAY[93650, 93702, 93703, 93701], 36.7831, -119.7941), - ('Allentown', 'PA', ARRAY[18104, 18101, 18103, 18102], 40.5961, -75.4756), - ('Tulsa', 'OK', ARRAY[74134, 74135, 74132, 74130], 36.1284, -95.9042), - ('Cape Coral', 'FL', ARRAY[33990, 33993, 33914, 33909], 26.6446, -81.9956), - ('Concord', 'CA', ARRAY[94519, 94521, 94520, 94522], 37.9722, -122.0016), - ('Colorado Springs', 'CO', ARRAY[80909, 80904, 80905, 80906], 38.8674, -104.7606), - ('Charleston', 'SC', ARRAY[29424, 29455, 29407, 29401], 32.8153, -79.9628), - ('Springfield', 'MA', ARRAY[1118, 1119, 1199, 1129], 42.1155, -72.5395), - ('Grand Rapids', 'MI', ARRAY[49507, 49506, 49505, 49504], 42.9620, -85.6562), - ('Mission Viejo', 'CA', ARRAY[92691], 33.6095, -117.6550), - ('Albany', 'NY', ARRAY[12209, 12204, 12206, 12207], 42.6664, -73.7987), - ('Knoxville', 'TN', ARRAY[37912, 37909, 37902, 37924], 35.9692, -83.9496), - ('Bakersfield', 'CA', ARRAY[93307, 93304, 93305, 93301], 35.3529, -119.0359), - ('Ogden', 'UT', ARRAY[84401, 84403, 84201, 84244], 41.2278, -111.9682), - ('Baton Rouge', 'LA', ARRAY[70808, 70809, 70802, 70803], 30.4418, -91.1310), - ('Akron', 'OH', ARRAY[44307, 44304, 44305, 44302], 41.0798, -81.5219), - ('New Haven', 'CT', ARRAY[6511, 6510, 6513, 6512], 41.3112, -72.9246), - ('Columbia', 'SC', ARRAY[29203, 29205, 29201, 29207], 34.0376, -80.9037), - ('Mesa', 'AZ', ARRAY[85209, 85201, 85202, 85203], 33.4017, -111.7180), - ('Palm Bay', 'FL', ARRAY[32905, 32907, 32976, 32948], 27.9550, -80.6627), - ('Provo', 'UT', ARRAY[84606, 84601, 84603, 84605], 40.2457, -111.6457), - ('Worcester', 'MA', ARRAY[1608, 1609, 1602, 1603], 42.2705, -71.8079), - ('Murrieta', 'CA', ARRAY[92562, 92564], 33.5720, -117.1909), - ('Greenville', 'SC', ARRAY[29607, 29605, 29601, 29609], 34.8353, -82.3647), - ('Wichita', 'KS', ARRAY[67235, 67260, 67217, 67216], 37.6896, -97.3442), - ('Toledo', 'OH', ARRAY[43611, 43613, 43612, 43614], 41.6639, -83.5822), - ('Staten Island', 'NY', ARRAY[10303, 10310, 10306, 10307], 40.5834, -74.1496), - ('Des Moines', 'IA', ARRAY[50312, 50314, 50316, 50317], 41.5725, -93.6105), - ('Long Beach', 'CA', ARRAY[90804, 90805, 90806, 90807], 33.7981, -118.1675), - ('Port St. Lucie', 'FL', ARRAY[34984, 34983, 34987, 34952], 27.2796, -80.3883), - ('Denton', 'TX', ARRAY[76205, 76201, 76208, 76209], 33.2176, -97.1419), - ('Madison', 'WI', ARRAY[53704, 53705, 53703, 53726], 43.0826, -89.3931), - ('Reno', 'NV', ARRAY[89523, 89439, 89503, 89502], 39.5497, -119.8483), - ('Harrisburg', 'PA', ARRAY[17102, 17103, 17104, 17120], 40.2752, -76.8843), - ('Little Rock', 'AR', ARRAY[72210, 72212, 72223, 72209], 34.7256, -92.3576), - ('Oakland', 'CA', ARRAY[94705, 94704, 94611, 94610], 37.7903, -122.2165), - ('Durham', 'NC', ARRAY[27705, 27704, 27707, 27701], 35.9794, -78.9031), - ('Winston-Salem', 'NC', ARRAY[27127, 27040, 27107, 27106], 36.1029, -80.2611), - ('Bonita Springs', 'FL', ARRAY[34134, 34135, 34136], 26.3559, -81.7861), - ('Indio', 'CA', ARRAY[92201, 92203, 92202], 33.7346, -116.2346), - ('Palm Coast', 'FL', ARRAY[32136, 32137, 32135, 32142], 29.5392, -81.2460), - ('Chattanooga', 'TN', ARRAY[37416, 37410, 37411, 37419], 35.0657, -85.2488), - ('Spokane', 'WA', ARRAY[99203, 99202, 99205, 99204], 47.6671, -117.4330), - ('Syracuse', 'NY', ARRAY[13214, 13290, 13224, 13207], 43.0409, -76.1438), - ('Lancaster', 'PA', ARRAY[17602, 17601, 17604, 17607], 40.0421, -76.3012), - ('Arlington', 'TX', ARRAY[76006, 76001, 76002, 76018], 32.6998, -97.1250), - ('Stockton', 'CA', ARRAY[95212, 95210, 95211, 95209], 37.9765, -121.3109), - ('Poughkeepsie', 'NY', ARRAY[12603, 12602], 41.6949, -73.9210), - ('Augusta', 'GA', ARRAY[30815, 30812, 30907, 30906], 33.3645, -82.0708), - ('Boise', 'ID', ARRAY[83702, 83705, 83704, 83709], 43.6007, -116.2312), - ('Oxnard', 'CA', ARRAY[93036, 93030, 93033, 93031], 34.1963, -119.1815), - ('Scranton', 'PA', ARRAY[18508, 18510, 18503, 18505], 41.4044, -75.6649), - ('Modesto', 'CA', ARRAY[95356, 95355, 95354, 95351], 37.6374, -121.0028), - ('Kissimmee', 'FL', ARRAY[34743, 34744, 34746, 34742], 28.3042, -81.4164), - ('Aurora', 'CO', ARRAY[80137, 80045, 80018, 80019], 39.7087, -104.7273), - ('Youngstown', 'OH', ARRAY[44503, 44504, 44505, 44506], 41.0993, -80.6463), - ('Fayetteville', 'AR', ARRAY[72703, 72701], 36.0713, -94.1660), - ('Anaheim', 'CA', ARRAY[92806, 92807, 92804, 92805], 33.8390, -117.8572), - ('Pensacola', 'FL', ARRAY[32504, 32503, 32502, 32513], 30.4427, -87.1886), - ('Victorville', 'CA', ARRAY[92395, 92392, 92393], 34.5277, -117.3536), - ('Lancaster', 'CA', ARRAY[93534, 93536, 93539, 93584], 34.6935, -118.1753), - ('Greensboro', 'NC', ARRAY[27455, 27214, 27408, 27409], 36.0956, -79.8269), - ('Corpus Christi', 'TX', ARRAY[78408, 78409, 78406, 78407], 27.7260, -97.3755), - ('Fort Wayne', 'IN', ARRAY[46845, 46818, 46814, 46815], 41.0886, -85.1437), - ('Santa Ana', 'CA', ARRAY[92701, 92705, 92704, 92707], 33.7366, -117.8819), - ('Flint', 'MI', ARRAY[48551, 48504, 48505, 48506], 43.0235, -83.6922), - ('San Juan', 'PR', ARRAY[913, 911, 917, 915], 18.4037, -66.0636), - ('Fayetteville', 'NC', ARRAY[28305, 28306, 28307, 28301], 35.0846, -78.9776), - ('Jackson', 'MS', ARRAY[39206, 39204, 39203, 39202], 32.3163, -90.2124), - ('Santa Rosa', 'CA', ARRAY[95409, 95403, 95401, 95407], 38.4458, -122.7067), - ('Lansing', 'MI', ARRAY[48915, 48912, 48911, 48910], 42.7142, -84.5601), - ('Ann Arbor', 'MI', ARRAY[48104, 48105, 48108, 48109], 42.2755, -83.7312), - ('Henderson', 'NV', ARRAY[89052, 89002, 89074, 89015], 36.0133, -115.0380), - ('Huntsville', 'AL', ARRAY[35803, 35802, 35805, 35806], 34.6988, -86.6412), - ('Lexington', 'KY', ARRAY[40506, 40508, 40509, 40504], 38.0423, -84.4587), - ('Mobile', 'AL', ARRAY[36607, 36604, 36605, 36602], 30.6783, -88.1162), - ('Fort Collins', 'CO', ARRAY[80528, 80526, 80524, 80525], 40.5478, -105.0656), - ('Asheville', 'NC', ARRAY[28805, 28804, 28803, 28801], 35.5704, -82.5536), - ('Santa Clarita', 'CA', ARRAY[91351, 91350, 91355, 91354], 34.4175, -118.4964), - ('St. Paul', 'MN', ARRAY[55117, 55116, 55119, 55130], 44.9477, -93.1040), - ('Antioch', 'CA', ARRAY[94509], 37.9789, -121.7958), - ('Lakeland', 'FL', ARRAY[33803, 33801, 33805, 33815], 28.0556, -81.9545), - ('Trenton', 'NJ', ARRAY[8611, 8618, 8629, 8609], 40.2236, -74.7641), - ('Lincoln', 'NE', ARRAY[68524, 68526, 68520, 68521], 40.8090, -96.6788), - ('Springfield', 'MO', ARRAY[65802, 65803, 65804, 65806], 37.1943, -93.2916), - ('Plano', 'TX', ARRAY[75023, 75025, 75024, 75074], 33.0502, -96.7487), - ('Irvine', 'CA', ARRAY[92614, 92612, 92618, 92620], 33.6772, -117.7738), - ('Davenport', 'IA', ARRAY[52803, 52801, 52806, 52807], 41.5563, -90.6052), - ('Rockford', 'IL', ARRAY[61109, 61108, 61104, 61107], 42.2597, -89.0641), - ('Newark', 'NJ', ARRAY[7102, 7105, 7104, 7107], 40.7245, -74.1725), - ('South Bend', 'IN', ARRAY[46635, 46628, 46616, 46614], 41.6767, -86.2696), - ('Shreveport', 'LA', ARRAY[71101, 71103, 71104, 71105], 32.4656, -93.7956), - ('Savannah', 'GA', ARRAY[31409, 31408, 31401, 31405], 32.0281, -81.1784), - ('Myrtle Beach', 'SC', ARRAY[29577], 33.7096, -78.8843), - ('Chula Vista', 'CA', ARRAY[91910, 91913, 91915, 91914], 32.6281, -117.0145), - ('Eugene', 'OR', ARRAY[97404, 97401, 97403, 97402], 44.0563, -123.1173), - ('Canton', 'OH', ARRAY[44710, 44702, 44703, 44706], 40.8075, -81.3677), - ('Lubbock', 'TX', ARRAY[79423, 79424, 79416, 79412], 33.5659, -101.8878), - ('Reading', 'PA', ARRAY[19601, 19602, 19611, 19603], 40.3400, -75.9267), - ('Winter Haven', 'FL', ARRAY[33880, 33884, 33882, 33883], 28.0118, -81.7017), - ('Salem', 'OR', ARRAY[97301, 97306, 97304, 97317], 44.9231, -123.0246), - ('St. Petersburg', 'FL', ARRAY[33702, 33762, 33713, 33712], 27.7931, -82.6652), - ('Lafayette', 'LA', ARRAY[70507, 70506, 70503, 70501], 30.2084, -92.0323), - ('Laredo', 'TX', ARRAY[78045, 78043, 78040, 78041], 27.5629, -99.4875), - ('Jersey City', 'NJ', ARRAY[7311, 7302, 7307, 7306], 40.7161, -74.0682), - ('Concord', 'NC', ARRAY[28027, 28026], 35.3933, -80.6366), - ('Columbus', 'GA', ARRAY[31820, 31909, 31904, 31905], 32.5100, -84.8771), - ('Chandler', 'AZ', ARRAY[85249, 85226, 85224, 85225], 33.2826, -111.8516), - ('McKinney', 'TX', ARRAY[75070, 75071, 75072], 33.2015, -96.6669), - ('Scottsdale', 'AZ', ARRAY[85258, 85251, 85250, 85257], 33.6872, -111.8651), - ('Killeen', 'TX', ARRAY[76543, 76542, 76549, 76540], 31.0754, -97.7296), - ('Tallahassee', 'FL', ARRAY[32312, 32399, 32304, 32303], 30.4551, -84.2526), - ('Peoria', 'IL', ARRAY[61606, 61615, 61614, 61605], 40.7520, -89.6153), - ('Wilmington', 'NC', ARRAY[28401, 28405, 28403, 28412], 34.2100, -77.8866), - ('Montgomery', 'AL', ARRAY[36112, 36113, 36110, 36111], 32.3473, -86.2666), - ('Gilbert', 'AZ', ARRAY[85234, 85297, 85296, 85295], 33.3101, -111.7463), - ('Glendale', 'AZ', ARRAY[85303, 85302, 85304, 85306], 33.5791, -112.2311), - ('North Las Vegas', 'NV', ARRAY[89031, 89030, 89086, 89084], 36.2880, -115.0901), - ('Anchorage', 'AK', ARRAY[99515, 99517, 99516, 99513], 61.1508, -149.1091), - ('Chesapeake', 'VA', ARRAY[23324, 23323, 23322, 23321], 36.6778, -76.3024), - ('Barnstable Town', 'MA', ARRAY[2637, 2630, 2632, 2601], 41.6722, -70.3599), - ('Norfolk', 'VA', ARRAY[23508, 23507, 23504, 23503], 36.8945, -76.2590), - ('Fremont', 'CA', ARRAY[94538, 94539, 94555, 94537], 37.5265, -121.9852), - ('Kennewick', 'WA', ARRAY[99336, 99338], 46.1978, -119.1732), - ('Garland', 'TX', ARRAY[75041, 75040, 75043, 75042], 32.9100, -96.6305), - ('Irving', 'TX', ARRAY[75061, 75060, 75038, 75039], 32.8584, -96.9702), - ('Visalia', 'CA', ARRAY[93291, 93292, 93278, 93279], 36.3276, -119.3269), - ('Atlantic City', 'NJ', ARRAY[8404, 8405], 39.3797, -74.4527), - ('Nashua', 'NH', ARRAY[3063, 3060, 3064, 3061], 42.7491, -71.4910), - ('Paradise', 'NV', ARRAY[89102, 89109, 89183, 89169], 36.0807, -115.1369), - ('Hialeah', 'FL', ARRAY[33016, 33010, 33012, 33013], 25.8696, -80.3046), - ('York', 'PA', ARRAY[17401, 17403], 39.9651, -76.7315), - ('Arlington', 'VA', ARRAY[22203, 22202, 22201, 22207], 38.8786, -77.1011), - ('Evansville', 'IN', ARRAY[47714, 47715, 47710, 47711], 37.9881, -87.5341), - ('Avondale', 'AZ', ARRAY[85392, 85039], 33.3858, -112.3236), - ('Brownsville', 'TX', ARRAY[78520, 78526, 78575, 78578], 25.9980, -97.4565), - ('Gulfport', 'MS', ARRAY[39503, 39507, 39502, 39505], 30.4271, -89.0703), - ('Appleton', 'WI', ARRAY[54915, 54913, 54911, 54912], 44.2779, -88.3891), - ('Bremerton', 'WA', ARRAY[98314, 98310, 98367, 98337], 47.5436, -122.7122), - ('Hickory', 'NC', ARRAY[28602, 28603], 35.7425, -81.3230), - ('Tacoma', 'WA', ARRAY[98421, 98402, 98403, 98404], 47.2431, -122.4531), - ('San Bernardino', 'CA', ARRAY[92407, 92405, 92408, 92404], 34.1417, -117.2946), - ('College Station', 'TX', ARRAY[77840, 77841, 77842, 77843], 30.5852, -96.2960), - ('Kalamazoo', 'MI', ARRAY[49006, 49007, 49008, 49074], 42.2749, -85.5882), - ('Thousand Oaks', 'CA', ARRAY[91360, 91361, 91362, 91319], 34.1914, -118.8755), - ('Roanoke', 'VA', ARRAY[24015, 24016, 24017, 24011], 37.2785, -79.9580), - ('Fontana', 'CA', ARRAY[92336, 92337, 92331, 92334], 34.0968, -117.4599), - ('Moreno Valley', 'CA', ARRAY[92553, 92555, 92557, 92554], 33.9244, -117.2045), - ('North Port', 'FL', ARRAY[34287, 34288, 34289, 34293], 27.0577, -82.1975), - ('Fargo', 'ND', ARRAY[58104, 58103, 58105, 58106], 46.8652, -96.8292), - ('Green Bay', 'WI', ARRAY[54302, 54304, 54303, 54301], 44.5150, -87.9896), - ('Amarillo', 'TX', ARRAY[79109, 79101, 79102, 79103], 35.1988, -101.8311), - ('Portland', 'ME', ARRAY[4102, 4103, 4108, 4019], 43.6773, -70.2715), - ('Santa Barbara', 'CA', ARRAY[93101, 93103, 93109, 93102], 34.4285, -119.7202), - ('Gainesville', 'FL', ARRAY[32607, 32612, 32653, 32608], 29.6804, -82.3458), - ('Olympia', 'WA', ARRAY[98502, 98506, 98504, 98507], 47.0417, -122.8959), - ('Frisco', 'TX', ARRAY[75035, 75033, 75036], 33.1555, -96.8215), - ('Yonkers', 'NY', ARRAY[10703, 10701, 10705, 10704], 40.9466, -73.8674), - ('Norwich', 'CT', ARRAY[6389, 6360], 41.5495, -72.0882), - ('Spring Valley', 'NV', ARRAY[89147, 89146, 89148, 89113], 36.0987, -115.2619), - ('Glendale', 'CA', ARRAY[91214, 91046, 91201, 91204], 34.1818, -118.2468), - ('Huntington Beach', 'CA', ARRAY[92647, 92648, 92649, 90742], 33.6960, -118.0025), - ('Deltona', 'FL', ARRAY[32738, 32728, 32739], 28.9050, -81.2137), - ('Aurora', 'IL', ARRAY[60504, 60505, 60502, 60503], 41.7637, -88.2901), - ('Tempe', 'AZ', ARRAY[85282, 85283, 85284, 85252], 33.3881, -111.9318), - ('Overland Park', 'KS', ARRAY[66210, 66211, 66212, 66213], 38.8870, -94.6870), - ('Grand Prairie', 'TX', ARRAY[75050, 75051, 75054, 75053], 32.6872, -97.0209), - ('Sunrise Manor', 'NV', ARRAY[89142, 89110, 89115, 89156], 36.1785, -115.0490), - ('Waco', 'TX', ARRAY[76710, 76711, 76712, 76708], 31.5598, -97.1881), - ('Salinas', 'CA', ARRAY[93905, 93906, 93902, 93915], 36.6884, -121.6317), - ('Waterbury', 'CT', ARRAY[6702, 6704, 6706, 6705], 41.5583, -73.0361), - ('Clarksville', 'TN', ARRAY[37043, 37042, 37040, 37044], 36.5695, -87.3420), - ('Cedar Rapids', 'IA', ARRAY[52405, 52402, 52401, 52411], 41.9665, -91.6782), - ('Sioux Falls', 'SD', ARRAY[57104, 57105, 57106, 57107], 43.5397, -96.7320), - ('Huntington', 'WV', ARRAY[25702, 25701, 25705, 25704], 38.4109, -82.4344), - ('Ontario', 'CA', ARRAY[91761, 91764, 91743, 91758], 34.0393, -117.6064), - ('Hagerstown', 'MD', ARRAY[21742, 21741, 21747, 21749], 39.6401, -77.7217), - ('Erie', 'PA', ARRAY[16510, 16511, 16508, 16502], 42.1168, -80.0733), - ('Vancouver', 'WA', ARRAY[98664, 98665, 98660, 98661], 45.6366, -122.5967), - ('Nampa', 'ID', ARRAY[83686, 83687], 43.5845, -116.5631), - ('Spartanburg', 'SC', ARRAY[29301, 29307, 29306, 29305], 34.9437, -81.9257), - ('Gastonia', 'NC', ARRAY[28056, 28052, 28053, 28055], 35.2494, -81.1853), - ('Fort Lauderdale', 'FL', ARRAY[33304, 33305, 33306, 33308], 26.1412, -80.1464), - ('Lorain', 'OH', ARRAY[44053, 44055], 41.4409, -82.1840), - ('Murfreesboro', 'TN', ARRAY[37130, 37129, 37128, 37127], 35.8492, -86.4119), - ('High Point', 'NC', ARRAY[27235, 27262, 27263, 27265], 35.9907, -79.9938), - ('Newport News', 'VA', ARRAY[23603, 23608, 23604, 23605], 37.1051, -76.5185), - ('Rancho Cucamonga', 'CA', ARRAY[91701, 91739, 91737, 91729], 34.1248, -117.5666), - ('Hemet', 'CA', ARRAY[92543], 33.7341, -116.9969), - ('Santa Cruz', 'CA', ARRAY[95064, 95060, 95062, 95061], 36.9789, -122.0346), - ('Danbury', 'CT', ARRAY[6811, 6813, 96810], 41.4016, -73.4710), - ('Peoria', 'AZ', ARRAY[85383, 85382, 85373, 85345], 33.7844, -112.2989), - ('Oceanside', 'CA', ARRAY[92057, 92058, 92056, 92049], 33.2247, -117.3083), - ('Elk Grove', 'CA', ARRAY[95758, 95624, 94624, 95759], 38.4160, -121.3842), - ('Pembroke Pines', 'FL', ARRAY[33028, 33024, 33026, 33023], 26.0128, -80.3382), - ('Vallejo', 'CA', ARRAY[94590, 94591, 94589], 38.1133, -122.2358), - ('Garden Grove', 'CA', ARRAY[92843, 92840, 92841, 92845], 33.7787, -117.9601), - ('Medford', 'OR', ARRAY[97501], 42.3372, -122.8537), - ('Cary', 'NC', ARRAY[27511, 27518, 27519, 27513], 35.7820, -78.8191), - ('Marysville', 'WA', ARRAY[98270], 48.0809, -122.1561), - ('Corona', 'CA', ARRAY[92880, 92881, 92879, 92877], 33.8616, -117.5649), - ('Ocala', 'FL', ARRAY[34474, 34471, 34470], 29.1780, -82.1511), - ('Fredericksburg', 'VA', ARRAY[22403, 22412], 38.2992, -77.4872), - ('Gainesville', 'GA', ARRAY[30507, 30504], 34.2903, -83.8301), - ('Bayamón', 'PR', ARRAY[957, 956, 934, 960], 18.3793, -66.1635), - ('Enterprise', 'NV', ARRAY[89183, 89054, 89139, 89141], 36.0164, -115.2208), - ('Manchester', 'NH', ARRAY[3104, 3101, 3103, 3102], 42.9848, -71.4447), - ('Champaign', 'IL', ARRAY[61820, 61821, 61824, 61825], 40.1144, -88.2735), - ('Alexandria', 'VA', ARRAY[22301, 22304, 22305, 22311], 38.8185, -77.0861), - ('Hayward', 'CA', ARRAY[94542, 94545, 94544, 94543], 37.6328, -122.0772), - ('Springfield', 'IL', ARRAY[62712, 62702, 62703, 62701], 39.7710, -89.6538), - ('Lakewood', 'CO', ARRAY[80232, 80235, 80214, 80215], 39.6977, -105.1168), - ('Lafayette', 'IN', ARRAY[47905, 47904, 47901, 47902], 40.3990, -86.8594), - ('Frederick', 'MD', ARRAY[21703, 21702, 21701, 21709], 39.4336, -77.4141), - ('Lake Charles', 'LA', ARRAY[70607, 70601, 70615, 70602], 30.2012, -93.2122), - ('Odessa', 'TX', ARRAY[79762, 79763, 79765, 79768], 31.8831, -102.3406), - ('Tuscaloosa', 'AL', ARRAY[35476, 35405, 35404, 35406], 33.2348, -87.5267), - ('Warner Robins', 'GA', ARRAY[31005, 31093, 31099], 32.5970, -83.6529), - ('Palmdale', 'CA', ARRAY[93550, 93591, 93551, 93590], 34.5944, -118.1057), - ('Hollywood', 'FL', ARRAY[33024, 33023, 33021, 33020], 26.0294, -80.1679), - ('Midland', 'TX', ARRAY[79706, 79707, 79705, 79703], 32.0249, -102.1137), - ('Leesburg', 'FL', ARRAY[34762, 34736, 34749, 34789], 28.7657, -81.8996), - ('Port Arthur', 'TX', ARRAY[77640, 77642, 77611, 77641], 29.8554, -93.9264), - ('Muskegon', 'MI', ARRAY[49440, 49441, 49443], 43.2281, -86.2563), - ('Macon', 'GA', ARRAY[31052, 31210, 31211, 31213], 32.8065, -83.6974), - ('Kansas City', 'KS', ARRAY[66102, 66103, 66104, 66105], 39.1234, -94.7443), - ('Sunnyvale', 'CA', ARRAY[94089, 94085, 94086, 94087], 37.3836, -122.0256), - ('Pomona', 'CA', ARRAY[91767, 91768, 91769], 34.0585, -117.7626), - ('Escondido', 'CA', ARRAY[92025, 92026, 92027, 92030], 33.1347, -117.0722), - ('Pasadena', 'TX', ARRAY[77059, 77586, 77506, 77507], 29.6583, -95.1499), - ('New Bedford', 'MA', ARRAY[2744, 2745, 2746, 2741], 41.6697, -70.9428), - ('Fairfield', 'CA', ARRAY[94533, 94534, 94535], 38.2592, -122.0324), - ('Naperville', 'IL', ARRAY[60563, 60564, 60565, 60566], 41.7483, -88.1657), - ('Bellevue', 'WA', ARRAY[98005, 98006, 98007, 98008], 47.5951, -122.1535), - ('Binghamton', 'NY', ARRAY[13905, 13901, 13903], 42.1014, -75.9093), - ('Elkhart', 'IN', ARRAY[46517, 46516, 46515], 41.6916, -85.9628), - ('Topeka', 'KS', ARRAY[66622, 66609, 66608, 66607], 39.0346, -95.6955), - ('Joliet', 'IL', ARRAY[60586, 60432, 60433, 60431], 41.5189, -88.1499), - ('Beaumont', 'TX', ARRAY[77705, 77706, 77707, 77701], 30.0849, -94.1451), - ('Paterson', 'NJ', ARRAY[7522, 7514, 7513, 7505], 40.9147, -74.1624), - ('Merced', 'CA', ARRAY[95340, 95341, 98348], 37.3057, -120.4778), - ('Pueblo', 'CO', ARRAY[81005, 81003, 81001, 81008], 38.2705, -104.6112), - ('Tyler', 'TX', ARRAY[75702, 75703, 75701, 75710], 32.3184, -95.3062), - ('Torrance', 'CA', ARRAY[90501, 90503, 90505, 90504], 33.8346, -118.3417), - ('Metairie', 'LA', ARRAY[70003, 70001, 70006, 70005], 29.9977, -90.1780), - ('Yuma', 'AZ', ARRAY[85364], 32.5992, -114.5488), - ('Surprise', 'AZ', ARRAY[85379, 85388, 85387, 85374], 33.6800, -112.4524), - ('Columbia', 'MO', ARRAY[65203, 65201, 65215, 65205], 38.9478, -92.3256), - ('Athens', 'GA', ARRAY[30601, 30602, 30605, 30606], 33.9508, -83.3689), - ('Roseville', 'CA', ARRAY[95747, 95678], 38.7703, -121.3196), - ('Thornton', 'CO', ARRAY[80233, 80241, 80602, 80640], 39.9197, -104.9438), - ('Miramar', 'FL', ARRAY[33023, 33027, 33025], 25.9773, -80.3351), - ('Pasadena', 'CA', ARRAY[91106, 91107, 91105, 91103], 34.1597, -118.1390), - ('Mesquite', 'TX', ARRAY[75150, 75181, 75185], 32.7623, -96.5889), - ('Santa Maria', 'CA', ARRAY[93455, 93458], 34.9334, -120.4432), - ('Olathe', 'KS', ARRAY[66061, 66051, 66063], 38.8832, -94.8198), - ('Houma', 'LA', ARRAY[70360, 70361], 29.5799, -90.7058), - ('Carolina', 'PR', ARRAY[987, 982, 983, 985], 18.4054, -65.9792), - ('Carrollton', 'TX', ARRAY[75006, 75010, 75011], 32.9890, -96.8999), - ('Grand Junction', 'CO', ARRAY[81504, 81507, 81506, 81501], 39.0876, -108.5673), - ('Charleston', 'WV', ARRAY[25304, 25303, 25302, 25301], 38.3484, -81.6323), - ('Orange', 'CA', ARRAY[92869, 92866, 92867, 92865], 33.8038, -117.8218), - ('Fullerton', 'CA', ARRAY[92831, 92835, 92832, 92834], 33.8841, -117.9279), - ('Greeley', 'CO', ARRAY[80631, 80632, 80633, 80638], 40.4151, -104.7706), - ('Las Cruces', 'NM', ARRAY[88011, 88005, 88007, 88001], 32.3265, -106.7892), - ('Panama City', 'FL', ARRAY[32405, 32404, 32402, 32406], 30.1995, -85.6004), - ('Harlingen', 'TX', ARRAY[78552, 78522], 26.1917, -97.6976), - ('West Valley City', 'UT', ARRAY[84120, 84128, 84118, 84125], 40.6889, -112.0115), - ('Hampton', 'VA', ARRAY[23651, 23605, 23669, 23661], 37.0551, -76.3630), - ('Warren', 'MI', ARRAY[48092, 48091, 48089, 48088], 42.4934, -83.0270), - ('Mauldin', 'SC', ARRAY[29607], 34.7849, -82.3005), - ('Bloomington', 'IL', ARRAY[61705, 61704, 61702, 61709], 40.4757, -88.9703), - ('Coral Springs', 'FL', ARRAY[33076, 33065, 33067], 26.2702, -80.2591), - ('Round Rock', 'TX', ARRAY[78664, 78665, 78680, 78682], 30.5254, -97.6660), - ('Yakima', 'WA', ARRAY[98903, 98902, 98908, 98904], 46.5923, -120.5496), - ('Sterling Heights', 'MI', ARRAY[48313, 48312, 48314, 48311], 42.5809, -83.0305), - ('Kent', 'WA', ARRAY[98030, 98032, 98042, 98013], 47.3887, -122.2129), - ('Burlington', 'NC', ARRAY[27215, 27216], 36.0758, -79.4686), - ('Bellingham', 'WA', ARRAY[98225, 98226], 48.7543, -122.4687), - ('Santa Clara', 'CA', ARRAY[95050, 95051, 95053, 95052], 37.3645, -121.9680), - ('Racine', 'WI', ARRAY[53404, 53406, 53403, 53402], 42.7274, -87.8135), - ('Greenville', 'NC', ARRAY[27858, 27835], 35.5956, -77.3768), - ('Stamford', 'CT', ARRAY[6907, 6905, 6902, 6903], 41.1035, -73.5583), - ('Elizabeth', 'NJ', ARRAY[7202, 7201, 7206, 7207], 40.6657, -74.1912), - ('Johnson City', 'TN', ARRAY[37615, 37601, 37604, 37602], 36.3406, -82.3803), - ('Lynchburg', 'VA', ARRAY[24502, 24503, 24501, 24506], 37.4003, -79.1909), - ('Simi Valley', 'CA', ARRAY[93065, 93062, 93094, 93099], 34.2663, -118.7490), - ('Fort Smith', 'AR', ARRAY[72904, 72908, 72903, 72923], 35.3493, -94.3695), - ('Kenosha', 'WI', ARRAY[53140, 53142, 53143], 42.5864, -87.8765), - ('Boulder', 'CO', ARRAY[80304, 80305, 80302, 80303], 40.0249, -105.2523), - ('Pearland', 'TX', ARRAY[77089, 77584, 77581, 77588], 29.5585, -95.3215), - ('Berkeley', 'CA', ARRAY[94707, 94705, 94704, 94703], 37.8723, -122.2760), - ('Richardson', 'TX', ARRAY[75080, 75082, 75085], 32.9717, -96.7093), - ('Redding', 'CA', ARRAY[96003, 96001], 40.5698, -122.3650), - ('Arvada', 'CO', ARRAY[80004, 80007, 80003, 80002], 39.8321, -105.1511), - ('St. George', 'UT', ARRAY[84790, 84771, 84791], 37.0770, -113.5770), - ('Billings', 'MT', ARRAY[59105, 59102, 59101, 59104], 45.7891, -108.5524), - ('Yuba City', 'CA', ARRAY[95993], 39.1357, -121.6381), - ('Rochester', 'MN', ARRAY[55901, 55906, 55904, 55905], 44.0151, -92.4778), - ('East Los Angeles', 'CA', ARRAY[90022, 90023, 90053], 34.0326, -118.1691), - ('Kingsport', 'TN', ARRAY[37664, 37663, 37665, 37662], 36.5224, -82.5453), - ('Duluth', 'MN', ARRAY[55802, 55805, 55804, 55808], 46.7756, -92.1392), - ('Lehigh Acres', 'FL', ARRAY[33973, 33972, 33971, 33976], 26.6120, -81.6388), - ('Rock Hill', 'SC', ARRAY[29733, 29730, 29731, 29734], 34.9416, -81.0244), - ('Gilroy', 'CA', ARRAY[95021], 37.0047, -121.5855), - ('Cambridge', 'MA', ARRAY[2140, 2141, 2139, 2138], 42.3759, -71.1185), - ('Sugar Land', 'TX', ARRAY[77478, 77479, 77487], 29.5935, -95.6357), - ('Texas City', 'TX', ARRAY[77590, 77539, 77554, 77592], 29.4128, -94.9658), - ('Iowa City', 'IA', ARRAY[52246, 52240, 52242, 52243], 41.6559, -91.5303), - ('Saginaw', 'MI', ARRAY[48602, 48601, 48605, 48608], 43.4199, -83.9501), - ('Chico', 'CA', ARRAY[95926, 95928, 95927, 95929], 39.7575, -121.8152), - ('Dover', 'DE', ARRAY[19901, 19904, 19903, 19905], 39.1610, -75.5203), - ('Norman', 'OK', ARRAY[73026, 74857, 73072, 73071], 35.2335, -97.3471), - ('Clearwater', 'FL', ARRAY[33759, 33756, 33763, 33761], 27.9789, -82.7622), - ('Coeur d''Alene', 'ID', ARRAY[83814, 83816], 47.7041, -116.7935), - ('Ponce', 'PR', ARRAY[717, 716, 730, 732], 18.0120, -66.6198), - ('Independence', 'MO', ARRAY[64055, 64056, 64057, 64050], 39.0871, -94.3501), - ('West Jordan', 'UT', ARRAY[84081, 84084], 40.6024, -112.0008), - ('Abilene', 'TX', ARRAY[79699, 79603, 79601, 79607], 32.4543, -99.7384), - ('Bloomington', 'IN', ARRAY[47408, 47401, 47403, 47404], 39.1637, -86.5257), - ('El Monte', 'CA', ARRAY[91731, 91733, 91735], 34.0739, -118.0291), - ('Carlsbad', 'CA', ARRAY[92009, 92011, 92010, 92013], 33.1247, -117.2837), - ('North Charleston', 'SC', ARRAY[29420, 29456, 29485, 29483], 32.9066, -80.0722), - ('St. Cloud', 'MN', ARRAY[56301, 56303, 56302, 56372], 45.5339, -94.1718), - ('Temecula', 'CA', ARRAY[92591, 92592, 92589], 33.4928, -117.1315), - ('Clovis', 'CA', ARRAY[93612, 93619, 93613, 93747], 36.8278, -119.6831), - ('Meridian', 'ID', ARRAY[83642, 83680], 43.6112, -116.3968), - ('Brandon', 'FL', ARRAY[33510, 33594, 33619, 33584], 27.9367, -82.3000), - ('Westminster', 'CO', ARRAY[80031, 80234, 80005, 80003], 39.8837, -105.0624), - ('Costa Mesa', 'CA', ARRAY[92627, 92628], 33.6667, -117.9135), - ('Monroe', 'LA', ARRAY[71203, 71202, 71201, 71207], 32.5183, -92.0774), - ('Utica', 'NY', ARRAY[13502, 13503, 13504, 13505], 43.0961, -75.2260), - ('Pompano Beach', 'FL', ARRAY[33060, 33062, 33064, 33061], 26.2428, -80.1312), - ('West Palm Beach', 'FL', ARRAY[33412, 33417, 33409, 33407], 26.7468, -80.1316), - ('Waterloo', 'IA', ARRAY[50703, 50702, 50701, 50704], 42.4920, -92.3522), - ('Everett', 'WA', ARRAY[98204, 98205, 98203, 98201], 47.9525, -122.1669), - ('El Centro', 'CA', ARRAY[92244], 32.7867, -115.5586), - ('Santa Fe', 'NM', ARRAY[87507, 87501, 87502, 87503], 35.6619, -105.9819), - ('Downey', 'CA', ARRAY[90240, 90241, 90239], 33.9379, -118.1312), - ('Lowell', 'MA', ARRAY[1850, 1852, 1854, 1853], 42.6389, -71.3217), - ('Centennial', 'CO', ARRAY[80121, 80112, 80016, 80015], 39.5926, -104.8674), - ('Elgin', 'IL', ARRAY[60123, 60124, 60121, 60122], 42.0385, -88.3229), - ('Richmond', 'CA', ARRAY[94850, 94801, 94803, 94804], 37.9477, -122.3390), - ('Broken Arrow', 'OK', ARRAY[74011, 74012, 74013, 74102], 36.0365, -95.7809), - ('Miami Gardens', 'FL', ARRAY[33169, 33055, 33056, 33054], 25.9433, -80.2426), - ('The Woodlands', 'TX', ARRAY[77381, 77382, 77384, 77389], 30.1738, -95.5134), - ('Bend', 'OR', ARRAY[97701, 97703], 44.0562, -121.3087), - ('Burlington', 'VT', ARRAY[5401, 5408, 5406], 44.4877, -73.2314), - ('Jurupa Valley', 'CA', ARRAY[91752, 92519], 34.0010, -117.4705), - ('Sandy Springs', 'GA', ARRAY[30350, 30327, 30328, 30342], 33.9366, -84.3703), - ('Gresham', 'OR', ARRAY[97233, 97230, 97080], 45.5023, -122.4413), - ('Lewisville', 'TX', ARRAY[75056, 75057, 75077, 75065], 33.0452, -96.9823), - ('Hillsboro', 'OR', ARRAY[97123, 97124, 97129], 45.5272, -122.9361), - ('San Buenaventura', 'CA', ARRAY[93001, 93003, 93005, 93006], 34.2741, -119.2314), - ('Jacksonville', 'NC', ARRAY[28547, 28543, 28540, 28541], 34.7288, -77.3941), - ('Inglewood', 'CA', ARRAY[90304, 90303, 90302, 90301], 33.9566, -118.3444), - ('Spring Hill', 'FL', ARRAY[34608, 34604, 34606, 34611], 28.4797, -82.5300), - ('League City', 'TX', ARRAY[77598, 77511, 77539, 77565], 29.4873, -95.1087), - ('Eau Claire', 'WI', ARRAY[54701, 54702], 44.8199, -91.4949), - ('Turlock', 'CA', ARRAY[95382, 95381], 37.5053, -120.8588), - ('Temple', 'TX', ARRAY[76502, 76504, 76508, 76503], 31.1076, -97.3894), - ('Sioux City', 'IA', ARRAY[51104, 51105, 51103, 51101], 42.4959, -96.3901), - ('Salisbury', 'MD', ARRAY[21804, 21801, 21803], 38.3756, -75.5867), - ('Davie', 'FL', ARRAY[33325, 33331, 33330, 33328], 26.0789, -80.2870), - ('Daly City', 'CA', ARRAY[94014, 94016], 37.6862, -122.4685), - ('Allen', 'TX', ARRAY[75013], 33.1088, -96.6735), - ('Highlands Ranch', 'CO', ARRAY[80126, 80130], 39.5419, -104.9708), - ('West Covina', 'CA', ARRAY[91791, 91790, 91793], 34.0555, -117.9112), - ('Sparks', 'NV', ARRAY[89434, 89431, 89435, 89437], 39.5729, -119.7157), - ('San Mateo', 'CA', ARRAY[94401, 94402, 94403, 94497], 37.5521, -122.3122), - ('Norwalk', 'CA', ARRAY[90651, 90652], 33.9069, -118.0829), - ('Columbia', 'MD', ARRAY[21045, 21046, 21029, 20146], 39.2004, -76.8590), - ('Rialto', 'CA', ARRAY[92376, 92377], 34.1174, -117.3894), - ('Manteca', 'CA', ARRAY[95336], 37.7927, -121.2264), - ('El Cajon', 'CA', ARRAY[92021, 92019, 92022], 32.8017, -116.9605), - ('Burbank', 'CA', ARRAY[91504, 91505, 91502, 91501], 34.1879, -118.3235), - ('Longmont', 'CO', ARRAY[80503, 80504, 80502], 40.1686, -105.1005), - ('Renton', 'WA', ARRAY[98058, 98057, 98056, 98055], 47.4784, -122.1919), - ('Vista', 'CA', ARRAY[92083, 92081], 33.1896, -117.2386), - ('Logan', 'UT', ARRAY[84341, 84323], 41.7400, -111.8419), - ('Prescott Valley', 'AZ', ARRAY[86315, 86314, 86341], 34.5983, -112.3176), - ('Vacaville', 'CA', ARRAY[95688, 95696], 38.3590, -121.9680), - ('Edinburg', 'TX', ARRAY[78542, 78541, 78540], 26.3197, -98.1596), - ('Carmel', 'IN', ARRAY[46032, 46033, 46280, 46082], 39.9650, -86.1460), - ('Spokane Valley', 'WA', ARRAY[99016, 99212, 99216, 99037], 47.6626, -117.2346), - ('San Angelo', 'TX', ARRAY[76904, 76901, 76903, 76908], 31.4424, -100.4506), - ('La Crosse', 'WI', ARRAY[54603, 54602], 43.8240, -91.2268), - ('Arden-Arcade', 'CA', ARRAY[95821, 95825, 95608, 95860], 38.6034, -121.3810), - ('Idaho Falls', 'ID', ARRAY[83402, 83404, 83403, 83405], 43.4872, -112.0362), - ('Holland', 'MI', ARRAY[49422], 42.7677, -86.0985), - ('Charlottesville', 'VA', ARRAY[22902, 22903, 22905, 22906], 38.0375, -78.4855), - ('Longview', 'TX', ARRAY[75601, 75605, 75604, 75607], 32.5193, -94.7621), - ('Tracy', 'CA', ARRAY[95376, 95304], 37.7269, -121.4522), - ('Boca Raton', 'FL', ARRAY[33487, 33486, 33432, 33433], 26.3752, -80.1080), - ('Wichita Falls', 'TX', ARRAY[76310, 76311, 76309, 76306], 33.9072, -98.5291), - ('Rio Rancho', 'NM', ARRAY[87121, 87144, 87174], 35.2872, -106.6981), - ('South Fulton', 'GA', ARRAY[30331, 30349, 30291, 30296], 33.6269, -84.5802), - ('Beaverton', 'OR', ARRAY[97005, 97007, 97006, 97008], 45.4779, -122.8168), - ('Lawrence', 'KS', ARRAY[66044, 66047, 66046, 66049], 38.9597, -95.2641), - ('Bismarck', 'ND', ARRAY[58504, 58501, 58503, 58502], 46.8144, -100.7694), - ('Orem', 'UT', ARRAY[84057, 84058, 84059], 40.2983, -111.6992), - ('Middletown', 'OH', ARRAY[45005, 45042], 39.5032, -84.3660), - ('San Marcos', 'CA', ARRAY[92069, 92079, 92096], 33.1350, -117.1744), - ('Sandy', 'UT', ARRAY[84093, 84094, 84070, 84090], 40.5710, -111.8505), - ('Federal Way', 'WA', ARRAY[98001, 98003, 98063, 98093], 47.3091, -122.3358), - ('Mandeville', 'LA', ARRAY[70471, 70470], 30.3751, -90.0904), - ('Hesperia', 'CA', ARRAY[92344, 92340], 34.3975, -117.3147), - ('Brockton', 'MA', ARRAY[2302, 2303, 2304, 2305], 42.0821, -71.0242), - ('Compton', 'CA', ARRAY[90221, 90222, 90223], 33.8930, -118.2275), - ('Fishers', 'IN', ARRAY[46040, 46256, 46037, 46085], 39.9589, -85.9661), - ('Sunrise', 'FL', ARRAY[33323, 33326, 33351, 33313], 26.1547, -80.2997), - ('Bowling Green', 'KY', ARRAY[42102, 42103, 42101], 36.9719, -86.4373), - ('Roswell', 'GA', ARRAY[30075, 30077], 34.0391, -84.3513), - ('Menifee', 'CA', ARRAY[92586, 92585, 92584], 33.6909, -117.1849), - ('Plantation', 'FL', ARRAY[33323, 33324, 33325, 33317], 26.1260, -80.2617), - ('Dover', 'NH', ARRAY[3821], 43.1887, -70.8845), - ('Quincy', 'MA', ARRAY[2171, 2170, 2269], 42.2516, -71.0183), - ('Portsmouth', 'VA', ARRAY[23708, 23704, 23707, 23701], 36.8468, -76.3540), - ('Chino', 'CA', ARRAY[91708, 92878], 33.9836, -117.6654), - ('Lynn', 'MA', ARRAY[1904, 1902, 1901, 1903], 42.4779, -70.9663), - ('Edmond', 'OK', ARRAY[73013, 73007, 73003, 73034], 35.6689, -97.4159), - ('Dearborn', 'MI', ARRAY[48120, 48126, 48124, 48121], 42.3127, -83.2129), - ('Livonia', 'MI', ARRAY[48150, 48154, 48151, 48153], 42.3972, -83.3733), - ('Vineland', 'NJ', ARRAY[8361, 8360, 8362], 39.4653, -74.9981), - ('San Tan Valley', 'AZ', ARRAY[85140], 33.1879, -111.5472), - ('Florence', 'SC', ARRAY[29506, 29501, 29502, 29504], 34.1781, -79.7877), - ('Portsmouth', 'NH', ARRAY[3802, 3803, 3804], 43.0580, -70.7826), - ('Slidell', 'LA', ARRAY[70458, 70469], 30.2881, -89.7826), - ('Kirkland', 'WA', ARRAY[98033, 98011, 98083], 47.6974, -122.2054), - ('Missoula', 'MT', ARRAY[59803, 59802, 59801, 59702], 46.8750, -114.0214), - ('Auburn', 'AL', ARRAY[36832, 36830], 32.6087, -85.4899), - ('Rapid City', 'SD', ARRAY[57703, 57701, 57709], 44.0716, -103.2204), - ('Lee''s Summit', 'MO', ARRAY[64082, 64064, 64063, 64081], 38.9172, -94.3816), - ('Terre Haute', 'IN', ARRAY[47807, 47802, 47803, 47809], 39.4654, -87.3763), - ('Suffolk', 'VA', ARRAY[23432, 23437, 23436, 23435], 36.6953, -76.6398), - ('Blacksburg', 'VA', ARRAY[24061, 24062, 24063], 37.2300, -80.4279), - ('Mount Pleasant', 'SC', ARRAY[29464, 29465], 32.8538, -79.8204), - ('Carson', 'CA', ARRAY[90810, 90747, 90746, 90745], 33.8374, -118.2559), - ('Riverview', 'FL', ARRAY[33569, 33579, 33578, 33568], 27.8227, -82.3023), - ('Conroe', 'TX', ARRAY[77301, 77303, 77304], 30.3239, -95.4825), - ('Livermore', 'CA', ARRAY[94551], 37.6862, -121.7608), - ('Germantown', 'MD', ARRAY[20874, 20875], 39.1755, -77.2643), - ('Lawton', 'OK', ARRAY[73507, 73505, 73503, 73506], 34.6176, -98.4203), - ('Westminster', 'CA', ARRAY[92684, 92685], 33.7523, -117.9938), - ('Santa Monica', 'CA', ARRAY[90402, 90403, 90404, 90405], 34.0232, -118.4813), - ('New Braunfels', 'TX', ARRAY[78130, 78135], 29.6994, -98.1148), - ('Fall River', 'MA', ARRAY[2723, 2720, 2721, 2790], 41.7137, -71.1014), - ('Albany', 'GA', ARRAY[31701, 31707, 31705, 31702], 31.5776, -84.1762), - ('Miami Beach', 'FL', ARRAY[33141, 33139, 33109], 25.8171, -80.1396), - ('Norwalk', 'CT', ARRAY[6855, 6856, 6850, 6851], 41.1144, -73.4215), - ('San Leandro', 'CA', ARRAY[94579, 94577, 94622], 37.7071, -122.1601), - ('Toms River', 'NJ', ARRAY[8753, 8754], 39.9931, -74.1857), - ('O''Fallon', 'MO', ARRAY[63366, 63368], 38.7850, -90.7175), - ('Alafaya', 'FL', ARRAY[32828, 32829], 28.5278, -81.1865), - ('Newton', 'MA', ARRAY[2467, 2466, 2461, 2462], 42.3316, -71.2085), - ('Muncie', 'IN', ARRAY[47305, 47303, 47304, 47302], 40.1989, -85.3950), - ('Citrus Heights', 'CA', ARRAY[95610, 95611], 38.6948, -121.2880), - ('State College', 'PA', ARRAY[16803, 16801, 16805], 40.7909, -77.8568), - ('Decatur', 'IL', ARRAY[62523, 62521, 62526, 62535], 39.8556, -88.9337), - ('Jackson', 'MI', ARRAY[49201, 49203, 49204], 42.2431, -84.4037), - ('Fort Myers', 'FL', ARRAY[33916, 33966, 33901, 33907], 26.6195, -81.8303), - ('Goodyear', 'AZ', ARRAY[85338, 85326, 85340, 85395], 33.2613, -112.3622), - ('Dalton', 'GA', ARRAY[30720, 30719, 30722], 34.7690, -84.9712), - ('Bryan', 'TX', ARRAY[77803, 77802, 77801, 77807], 30.6657, -96.3668), - ('Waukegan', 'IL', ARRAY[60085, 60048, 60079], 42.3697, -87.8716), - ('Hawthorne', 'CA', ARRAY[90251, 90261, 90310], 33.9146, -118.3476), - ('Anderson', 'IN', ARRAY[46011, 46012, 46013, 46014], 40.0891, -85.6893), - ('Redwood City', 'CA', ARRAY[94062, 94063, 94061, 94064], 37.5026, -122.2252), - ('Hoover', 'AL', ARRAY[35244, 35242, 35080, 35226], 33.3754, -86.8064), - ('Town ''n'' Country', 'FL', ARRAY[33634, 33635], 28.0108, -82.5760), - ('Lake Forest', 'CA', ARRAY[92679, 92630], 33.6606, -117.6712), - ('Napa', 'CA', ARRAY[94559, 94581], 38.2976, -122.3011), - ('Whittier', 'CA', ARRAY[90602, 90601, 90606, 90605], 33.9678, -118.0188), - ('Clifton', 'NJ', ARRAY[7013, 7012, 7011, 7015], 40.8631, -74.1575), - ('Largo', 'FL', ARRAY[33771, 33760, 33764, 33770], 27.9088, -82.7711), - ('Bloomington', 'MN', ARRAY[55420, 55431, 55437, 55438], 44.8306, -93.3151), - ('Johns Creek', 'GA', ARRAY[30097, 30005, 30098], 34.0333, -84.2027), - ('Newport Beach', 'CA', ARRAY[92663, 92660, 92661, 92625], 33.6151, -117.8669), - ('Mission', 'TX', ARRAY[78572], 26.2041, -98.3251), - ('Troy', 'MI', ARRAY[48083, 48085, 48084, 48007], 42.5818, -83.1457), - ('Madera', 'CA', ARRAY[93638, 93639], 36.9631, -120.0782), - ('Joplin', 'MO', ARRAY[64801, 64802], 37.0758, -94.5018), - ('Alhambra', 'CA', ARRAY[91801, 91802, 91804, 91896], 34.0840, -118.1355), - ('Franklin', 'TN', ARRAY[37064, 37067, 37065, 37068], 35.9216, -86.8525), - ('Melbourne', 'FL', ARRAY[32903, 32934, 32935, 32904], 28.1085, -80.6627), - ('Port Huron', 'MI', ARRAY[48061], 42.9822, -82.4387), - ('Springfield', 'OH', ARRAY[45506, 45505, 45504, 45501], 39.9297, -83.7957), - ('Mountain View', 'CA', ARRAY[94041, 94043, 94039, 94042], 37.4000, -122.0796), - ('Zephyrhills', 'FL', ARRAY[33540, 33541, 33539], 28.2408, -82.1796), - ('St. Augustine', 'FL', ARRAY[32080, 32095], 29.8977, -81.3100), - ('Flagstaff', 'AZ', ARRAY[86011, 86004, 86005], 35.1872, -111.6195), - ('Buena Park', 'CA', ARRAY[90620, 90622, 90624], 33.8572, -118.0046), - ('Pleasanton', 'CA', ARRAY[94588], 37.6663, -121.8805), - ('Westland', 'MI', ARRAY[48186], 42.3192, -83.3805), - ('Auburn', 'WA', ARRAY[98002, 98092, 98071], 47.3039, -122.2108), - ('Cranston', 'RI', ARRAY[2831, 2920, 2910, 2921], 41.7658, -71.4857), - ('Somerville', 'MA', ARRAY[2145, 2143], 42.3908, -71.1013), - ('Folsom', 'CA', ARRAY[95671, 95763], 38.6668, -121.1422), - ('Springdale', 'AR', ARRAY[72762, 72765, 72766, 72770], 36.1899, -94.1574), - ('Deerfield Beach', 'FL', ARRAY[33441, 33064, 33443], 26.3050, -80.1277), - ('Warwick', 'RI', ARRAY[2886, 2889, 2888, 2887], 41.7062, -71.4334), - ('Farmington Hills', 'MI', ARRAY[48335, 48334, 48331], 42.4860, -83.3771), - ('Newark', 'OH', ARRAY[43058, 43093], 40.0705, -82.4251), - ('Williamsburg', 'VA', ARRAY[23185, 23186], 37.2692, -76.7076), - ('Brooklyn Park', 'MN', ARRAY[55429, 55428, 55443, 55445], 45.1112, -93.3505), - ('Hattiesburg', 'MS', ARRAY[39402, 39406, 39403, 39404], 31.3074, -89.3170), - ('Alexandria', 'LA', ARRAY[71303, 71301, 71306, 71307], 31.2923, -92.4702), - ('Lawrence', 'MA', ARRAY[1840, 1841, 1842], 42.7003, -71.1626), - ('Florence', 'AL', ARRAY[35630, 35631, 35632], 34.8303, -87.6654), - ('Valdosta', 'GA', ARRAY[31602, 31601, 31605, 31604], 30.8502, -83.2788), - ('Plymouth', 'MN', ARRAY[55441, 55447, 55446], 45.0225, -93.4618), - ('Silver Spring', 'MD', ARRAY[20912, 20901, 20903, 20907], 39.0028, -77.0207), - ('Buckeye', 'AZ', ARRAY[85396], 33.4314, -112.6429), - ('Georgetown', 'TX', ARRAY[78626, 78628, 78627], 30.6668, -97.6953), - ('Cheyenne', 'WY', ARRAY[82007, 82001, 82002, 82006], 41.1351, -104.7900), - ('Kokomo', 'IN', ARRAY[46901, 46903, 46904, 46965], 40.4640, -86.1277), - ('Tustin', 'CA', ARRAY[92782, 92606, 92781], 33.7309, -117.8106), - ('Lakewood', 'CA', ARRAY[90712, 90713, 90711, 90714], 33.8471, -118.1221), - ('Perris', 'CA', ARRAY[92571, 92585, 92572], 33.7899, -117.2233), - ('St. Joseph', 'MO', ARRAY[64501, 64507, 64504, 64506], 39.7599, -94.8210), - ('Flower Mound', 'TX', ARRAY[75028, 76262, 75027], 33.0344, -97.1146), - ('Atascocita', 'TX', ARRAY[77396], 29.9777, -95.1953), - ('Loveland', 'CO', ARRAY[80537, 80539], 40.4166, -105.0623), - ('Boynton Beach', 'FL', ARRAY[33436, 33435, 33424, 33425], 26.5281, -80.0811), - ('New Rochelle', 'NY', ARRAY[10801, 10805, 10802], 40.9305, -73.7836), - ('Anderson', 'SC', ARRAY[29625, 29621], 34.5211, -82.6479), - ('Lebanon', 'PA', ARRAY[17042], 40.3412, -76.4227), - ('Parma', 'OH', ARRAY[44130, 44129], 41.3843, -81.7286), - ('Layton', 'UT', ARRAY[84040], 41.0769, -111.9621), - ('Texarkana', 'TX', ARRAY[75503, 75504, 75507, 75599], 33.4487, -94.0815), - ('Alameda', 'CA', ARRAY[94501], 37.7670, -122.2672), - ('The Villages', 'FL', ARRAY[32162, 32159, 32163], 28.9021, -81.9888), - ('Watsonville', 'CA', ARRAY[95019, 95077], 36.9206, -121.7706), - ('Baytown', 'TX', ARRAY[77521, 77522], 29.7586, -94.9669), - ('Upland', 'CA', ARRAY[91786, 91785], 34.1178, -117.6603), - ('Davis', 'CA', ARRAY[95616, 95617], 38.5552, -121.7365), - ('Camarillo', 'CA', ARRAY[93010, 93011], 34.2230, -119.0322), - ('Battle Creek', 'MI', ARRAY[49037, 49016, 49018], 42.2986, -85.2296), - ('Bellflower', 'CA', ARRAY[90707], 33.8880, -118.1271), - ('Jonesboro', 'AR', ARRAY[72404, 72401, 72402, 72403], 35.8212, -90.6791), - ('San Marcos', 'TX', ARRAY[78667], 29.8736, -97.9381), - ('San Ramon', 'CA', ARRAY[94583], 37.7625, -121.9365), - ('Lake Jackson', 'TX', ARRAY[77566], 29.0516, -95.4522), - ('Bethlehem', 'PA', ARRAY[18016, 18015, 18018, 18025], 40.6266, -75.3679), - ('Wyoming', 'MI', ARRAY[49548, 49418, 49519, 49518], 42.8909, -85.7066), - ('Pine Hills', 'FL', ARRAY[32818, 32710], 28.5818, -81.4693), - ('Oshkosh', 'WI', ARRAY[54904, 54901, 54902, 54903], 44.0228, -88.5619), - ('Hammond', 'IN', ARRAY[46323, 46320, 46327, 46324], 41.6169, -87.4910), - ('Missouri City', 'TX', ARRAY[77545, 77071, 77459], 29.5630, -95.5365), - ('Centreville', 'VA', ARRAY[20124, 20121, 20122], 38.8391, -77.4388), - ('Pasco', 'WA', ARRAY[99302], 46.2506, -119.1304), - ('Rancho Cordova', 'CA', ARRAY[95670, 95827, 95741], 38.5740, -121.2523), - ('Caguas', 'PR', ARRAY[727, 726], 18.2319, -66.0388), - ('Conway', 'AR', ARRAY[72035, 72034], 35.0754, -92.4694), - ('Gary', 'IN', ARRAY[46408, 46407, 46406, 46405], 41.5906, -87.3472), - ('Altoona', 'PA', ARRAY[16602, 16603, 16660], 40.5082, -78.4007), - ('Lodi', 'CA', ARRAY[95242, 94240, 95241], 38.1218, -121.2932), - ('Arlington Heights', 'IL', ARRAY[60004, 60006], 42.0955, -87.9825), - ('Kendall', 'FL', ARRAY[33176, 33156, 33183, 33116], 25.6697, -80.3556), - ('Waldorf', 'MD', ARRAY[20603, 20602, 20695, 20604], 38.6085, -76.9195), - ('Bolingbrook', 'IL', ARRAY[60440], 41.6903, -88.1019), - ('Rochester Hills', 'MI', ARRAY[48307, 48309], 42.6645, -83.1563), - ('Winchester', 'VA', ARRAY[22604], 39.1735, -78.1746), - ('Framingham', 'MA', ARRAY[1702, 1703, 1704, 1705], 42.3085, -71.4368), - ('Hilton Head Island', 'SC', ARRAY[29926, 29925, 29938], 32.1896, -80.7499), - ('Owensboro', 'KY', ARRAY[42301, 42302], 37.7574, -87.1173), - ('Jackson', 'TN', ARRAY[38301, 38302, 38303, 38308], 35.6535, -88.8353), - ('Cheektowaga', 'NY', ARRAY[14043, 14225, 14227, 14211], 42.9082, -78.7496), - ('Cleveland', 'TN', ARRAY[37311, 37320], 35.1817, -84.8707), - ('Wausau', 'WI', ARRAY[54403], 44.9620, -89.6459), - ('Camden', 'NJ', ARRAY[8105, 8102, 8103, 8101], 39.9362, -75.1073), - ('Anniston', 'AL', ARRAY[36206, 36207, 36205, 36202], 33.6712, -85.8136), - ('Evanston', 'IL', ARRAY[60201, 60204, 60208], 42.0463, -87.6942), - ('Apple Valley', 'CA', ARRAY[92307], 34.5328, -117.2104), - ('Mansfield', 'OH', ARRAY[44906, 44907, 44901, 44902], 40.7656, -82.5275), - ('Schaumburg', 'IL', ARRAY[60195, 60194, 60173, 60159], 42.0307, -88.0838), - ('Pocatello', 'ID', ARRAY[83201, 83209, 83205, 83206], 42.8724, -112.4646), - ('Woodbury', 'MN', ARRAY[55125], 44.9056, -92.9230), - ('Southfield', 'MI', ARRAY[48034, 48075, 48076, 48037], 42.4765, -83.2605), - ('Maple Grove', 'MN', ARRAY[55311], 45.1089, -93.4626), - ('New Britain', 'CT', ARRAY[6053, 6051, 6050], 41.6758, -72.7862), - ('Morgantown', 'WV', ARRAY[26505, 26506], 39.6380, -79.9468), - ('Hammond', 'LA', ARRAY[70403, 70401], 30.5061, -90.4563), - ('Dothan', 'AL', ARRAY[36301, 36305, 36321, 36302], 31.2335, -85.4069), - ('Harrisonburg', 'VA', ARRAY[22802, 22807, 22081], 38.4361, -78.8735), - ('Waukesha', 'WI', ARRAY[53188, 53189, 53187], 43.0087, -88.2464), - ('Ellicott City', 'MD', ARRAY[21043, 20140, 21041], 39.2773, -76.8344), - ('Pawtucket', 'RI', ARRAY[2860, 2862], 41.8744, -71.3743), - ('Redmond', 'WA', ARRAY[98073], 47.6762, -122.1169), - ('Lauderhill', 'FL', ARRAY[33313, 33311, 33319], 26.1605, -80.2242), - ('Sumter', 'SC', ARRAY[29152, 29153, 29150, 29151], 33.9392, -80.3930), - ('Redlands', 'CA', ARRAY[92374, 92346, 92403], 34.0511, -117.1712), - ('Daphne', 'AL', ARRAY[36526], 30.6286, -87.8866), - ('Mount Vernon', 'WA', ARRAY[98273], 48.4202, -122.3115), - ('Weston', 'FL', ARRAY[33327, 33331, 33332], 26.1006, -80.4054), - ('St. Charles', 'MO', ARRAY[63303], 38.7954, -90.5157), - ('Janesville', 'WI', ARRAY[53546, 53548, 53547], 42.6855, -89.0136), - ('Sherman', 'TX', ARRAY[75090], 33.6274, -96.6218), - ('North Richland Hills', 'TX', ARRAY[76182], 32.8605, -97.2180), - ('Broomfield', 'CO', ARRAY[80021, 80020, 80516, 80038], 39.9541, -105.0527), - ('El Paso de Robles', 'CA', ARRAY[93447], 35.6394, -120.6560), - ('Bristol', 'TN', ARRAY[37621, 37625], 36.5572, -82.2154), - ('Wilmington', 'DE', ARRAY[19802, 19801, 19806, 19805], 39.7415, -75.5413), - ('Walnut Creek', 'CA', ARRAY[94597, 94595, 94598, 94529], 37.9024, -122.0398), - ('Lynwood', 'CA', ARRAY[90267], 33.9240, -118.2017), - ('Glen Burnie', 'MD', ARRAY[21061, 21108], 39.1559, -76.6072), - ('Guaynabo', 'PR', ARRAY[934, 966, 965, 968], 18.3839, -66.1134), - ('Casas Adobes', 'AZ', ARRAY[85741, 85742], 32.3423, -111.0114), - ('Homestead', 'FL', ARRAY[33030, 33035, 33090, 33092], 25.4665, -80.4472), - ('West Bend', 'WI', ARRAY[53095], 43.4184, -88.1824), - ('Delray Beach', 'FL', ARRAY[33444, 33483, 33448, 33482], 26.4550, -80.0905), - ('Sheboygan', 'WI', ARRAY[53081, 53082], 43.7403, -87.7316), - ('Lake Elsinore', 'CA', ARRAY[92532, 92530, 92803], 33.6847, -117.3344), - ('Daytona Beach', 'FL', ARRAY[32174, 32117, 32114, 32118], 29.1994, -81.0982), - ('Lima', 'OH', ARRAY[45801, 45804, 45802], 40.7410, -84.1121), - ('Decatur', 'AL', ARRAY[35601, 35602, 35609, 35699], 34.5730, -86.9906), - ('Rocklin', 'CA', ARRAY[95765], 38.8075, -121.2488), - ('Rogers', 'AR', ARRAY[72756, 72718], 36.3172, -94.1526), - ('Castle Rock', 'CO', ARRAY[80108, 80109], 39.3763, -104.8535), - ('Hanover', 'PA', ARRAY[17332, 17333, 17334], 39.8117, -76.9835), - ('Bossier City', 'LA', ARRAY[71111, 71110, 71113, 71171], 32.5227, -93.6666), - ('Dubuque', 'IA', ARRAY[52003, 52001, 52004, 52099], 42.5008, -90.7067), - ('Rockville', 'MD', ARRAY[20850, 20851, 20847, 20848], 39.0834, -77.1552), - ('Victoria', 'TX', ARRAY[77904, 77905, 77903], 28.8285, -96.9850), - ('Gaithersburg', 'MD', ARRAY[20899, 20879, 20877], 39.1346, -77.2132), - ('Ames', 'IA', ARRAY[50012, 50011, 50010, 50013], 42.0259, -93.6215), - ('West Des Moines', 'IA', ARRAY[50266, 50263, 50061, 50398], 41.5522, -93.7805), - ('South San Francisco', 'CA', ARRAY[94128, 94083], 37.6536, -122.4197), - ('Yorba Linda', 'CA', ARRAY[92887, 92885], 33.8890, -117.7714), - ('Casper', 'WY', ARRAY[82601, 82609, 82605], 42.8420, -106.3207), - ('Palatine', 'IL', ARRAY[60067, 60038, 60055, 60078], 42.1181, -88.0430), - ('Corvallis', 'OR', ARRAY[97331, 97330, 97339], 44.5697, -123.2780), - ('Ankeny', 'IA', ARRAY[50021], 41.7285, -93.6033), - ('Mount Vernon', 'NY', ARRAY[10553, 10550, 10551], 40.9136, -73.8291), - ('Rowlett', 'TX', ARRAY[75088, 75030], 32.9157, -96.5488), - ('Alpharetta', 'GA', ARRAY[30004, 30005, 30009], 34.0704, -84.2739), - ('Poinciana', 'FL', ARRAY[34759], 28.1217, -81.4820), - ('Petaluma', 'CA', ARRAY[94952], 38.2423, -122.6267), - ('Redondo Beach', 'CA', ARRAY[90277], 33.8574, -118.3766), - ('Tamarac', 'FL', ARRAY[33319], 26.2056, -80.2542), - ('Eagan', 'MN', ARRAY[55122, 55123], 44.8169, -93.1638), - ('Kenner', 'LA', ARRAY[70062, 70063, 70064, 70097], 30.0109, -90.2549), - ('Bay City', 'MI', ARRAY[48708], 43.5903, -83.8886), - ('North Little Rock', 'AR', ARRAY[72116, 72114, 72118, 72117], 34.7808, -92.2371), - ('Sammamish', 'WA', ARRAY[98075, 98074], 47.6017, -122.0416), - ('Shawnee', 'KS', ARRAY[66216, 66217, 66218, 66227], 39.0158, -94.8076), - ('Jupiter', 'FL', ARRAY[33458, 33468], 26.9199, -80.1128), - ('Doral', 'FL', ARRAY[33172, 33122, 33166, 33191], 25.8151, -80.3565), - ('Carbondale', 'IL', ARRAY[62902, 62903], 37.7221, -89.2238), - ('Blaine', 'MN', ARRAY[55434, 55449], 45.1696, -93.2077), - ('Tulare', 'CA', ARRAY[93275], 36.1996, -119.3400), - ('Wellington', 'FL', ARRAY[33414, 33470], 26.6461, -80.2699), - ('Pflugerville', 'TX', ARRAY[78691], 30.4520, -97.6022), - ('Palo Alto', 'CA', ARRAY[95033, 94303, 94301, 94306], 37.3913, -122.1468), - ('Schenectady', 'NY', ARRAY[12304, 12307, 12308, 12301], 42.8025, -73.9276), - ('Great Falls', 'MT', ARRAY[59404, 59401, 59403], 47.5022, -111.2995), - ('Michigan City', 'IN', ARRAY[46361], 41.7099, -86.8705), - ('Eden Prairie', 'MN', ARRAY[55346, 55347], 44.8488, -93.4595), - ('Port Orange', 'FL', ARRAY[32129, 32128], 29.1084, -81.0137), - ('Dublin', 'CA', ARRAY[94551], 37.7161, -121.8963), - ('Carmichael', 'CA', ARRAY[95628, 95608, 95609], 38.6337, -121.3230), - ('Grand Forks', 'ND', ARRAY[58203, 58201, 58206, 58207], 47.9218, -97.0886), - ('Noblesville', 'IN', ARRAY[46062], 40.0354, -86.0042), - ('San Clemente', 'CA', ARRAY[92673, 92674], 33.4498, -117.6103), - ('East Orange', 'NJ', ARRAY[7017, 7019], 40.7651, -74.2117), - ('Florence-Graham', 'CA', ARRAY[90002, 90052], 33.9682, -118.2447), - ('Eastvale', 'CA', ARRAY[91752], 33.9617, -117.5802), - ('Chapel Hill', 'NC', ARRAY[27514, 27517, 27515, 27599], 35.9270, -79.0391), - ('Rocky Mount', 'NC', ARRAY[27803, 27801, 27802], 35.9676, -77.8048), - ('Haverhill', 'MA', ARRAY[1830, 1835, 1831], 42.7838, -71.0871), - ('Beloit', 'WI', ARRAY[53512], 42.5230, -89.0184), - ('Castro Valley', 'CA', ARRAY[94552, 94578], 37.7091, -122.0631), - ('Fairbanks', 'AK', ARRAY[99703, 99707, 99711], 64.8353, -147.6534), - ('Springfield', 'OR', ARRAY[97478, 97403, 97475], 44.0538, -122.9810), - ('Johnstown', 'PA', ARRAY[15905, 15902, 15901, 15907], 40.3258, -78.9193), - ('West Hartford', 'CT', ARRAY[6119, 6117, 6110, 6155], 41.7669, -72.7536), - ('Coon Rapids', 'MN', ARRAY[55448], 45.1755, -93.3095), - ('Elmira', 'NY', ARRAY[14905, 14904, 14902], 42.0938, -76.8097), - ('Mankato', 'MN', ARRAY[56002], 44.1712, -93.9773), - ('Albany', 'OR', ARRAY[97322], 44.6274, -123.0966), - ('North Miami', 'FL', ARRAY[33167, 33160, 33161, 33181], 25.9007, -80.1686), - ('Dundalk', 'MD', ARRAY[21224], 39.2703, -76.4942), - ('Encinitas', 'CA', ARRAY[92075, 92024, 92023], 33.0490, -117.2613), - ('Skokie', 'IL', ARRAY[60077, 60203], 42.0359, -87.7400), - ('Leander', 'TX', ARRAY[78646], 30.5728, -97.8618), - ('Mayagüez', 'PR', ARRAY[680, 681], 18.2003, -67.1397), - ('Parkersburg', 'WV', ARRAY[26101, 26102, 26103, 26106], 39.2624, -81.5420), - ('Waltham', 'MA', ARRAY[2451, 2453, 2454], 42.3889, -71.2423), - ('Bethesda', 'MD', ARRAY[20815, 20816, 20817, 20810], 38.9866, -77.1188), - ('San Luis Obispo', 'CA', ARRAY[93405], 35.2669, -120.6691), - ('Sebring', 'FL', ARRAY[33875], 27.4770, -81.4530), - ('Council Bluffs', 'IA', ARRAY[51501, 51502], 41.2369, -95.8517), - ('Hamilton', 'OH', ARRAY[45011, 45013, 45012], 39.3938, -84.5653), - ('Pico Rivera', 'CA', ARRAY[90661, 90662], 33.9902, -118.0888), - ('Palm Harbor', 'FL', ARRAY[34681, 34683, 34682], 28.0847, -82.7481), - ('Casa Grande', 'AZ', ARRAY[85193, 85122, 85130], 32.9068, -111.7624), - ('Rome', 'GA', ARRAY[30165, 30162], 34.2661, -85.1862), - ('Millcreek', 'UT', ARRAY[84124, 84109, 84106, 84107], 40.6892, -111.8291), - ('Sanford', 'FL', ARRAY[32771, 32772], 28.7893, -81.2760), - ('National City', 'CA', ARRAY[91951], 32.6654, -117.0983), - ('Burnsville', 'MN', ARRAY[55337], 44.7648, -93.2795), - ('Coconut Creek', 'FL', ARRAY[33063, 33066], 26.2803, -80.1842), - ('Port Charlotte', 'FL', ARRAY[33952, 33948, 33980, 33938], 26.9918, -82.1140), - ('Morristown', 'TN', ARRAY[37814, 37778, 37815, 37816], 36.2046, -83.3006), - ('Lakewood', 'WA', ARRAY[98498, 98496, 98497], 47.1628, -122.5299), - ('Gadsden', 'AL', ARRAY[35903, 35904], 34.0090, -86.0156), - ('Novi', 'MI', ARRAY[48375, 48374, 48167, 48376], 42.4786, -83.4893), - ('Marietta', 'GA', ARRAY[30062, 30064, 30067, 30008], 33.9533, -84.5422), - ('Hot Springs', 'AR', ARRAY[71913, 71902, 71903, 71914], 34.4892, -93.0501), - ('Woodland', 'CA', ARRAY[95695], 38.6712, -121.7500), - ('La Habra', 'CA', ARRAY[90632, 90633], 33.9278, -117.9513), - ('The Hammocks', 'FL', ARRAY[33186], 25.6700, -80.4483), - ('Commerce City', 'CO', ARRAY[80022], 39.8642, -104.8434), - ('Reston', 'VA', ARRAY[20191, 20190, 20101, 20102], 38.9497, -77.3461), - ('South Whittier', 'CA', ARRAY[90605], 33.9336, -118.0311), - ('Bristol', 'CT', ARRAY[6011], 41.6812, -72.9407), - ('Columbus', 'IN', ARRAY[47203, 47202], 39.2093, -85.9183), - ('West Allis', 'WI', ARRAY[53214, 53227], 43.0068, -88.0296), - ('Fountainebleau', 'FL', ARRAY[33174, 33126, 33144], 25.7723, -80.3458), - ('Taylorsville', 'UT', ARRAY[84123, 84118, 84129, 84184], 40.6570, -111.9493), - ('Bangor', 'ME', ARRAY[4402], 44.8322, -68.7906), - ('Monterey Park', 'CA', ARRAY[91754, 91756], 34.0497, -118.1326), - ('Greenwood', 'IN', ARRAY[46142, 46143], 39.6019, -86.1073), - ('Bartlett', 'TN', ARRAY[38133, 38134, 38135, 38029], 35.2337, -89.8195), - ('Bradenton', 'FL', ARRAY[34209, 34205, 33420, 34204], 27.4900, -82.5739), - ('Pontiac', 'MI', ARRAY[48340, 48341, 48343], 42.6493, -83.2878), - ('Staunton', 'VA', ARRAY[24402], 38.1593, -79.0611), - ('Meriden', 'CT', ARRAY[6450], 41.5367, -72.7944), - ('Gardena', 'CA', ARRAY[90249], 33.8944, -118.3073), - ('Apex', 'NC', ARRAY[27523, 27539], 35.7239, -78.8728), - ('Royal Oak', 'MI', ARRAY[48073, 48068], 42.5084, -83.1539), - ('Cupertino', 'CA', ARRAY[95015, 95108], 37.3168, -122.0465), - ('La Mesa', 'CA', ARRAY[91942, 91944], 32.7703, -117.0204), - ('Brookline', 'MA', ARRAY[2446, 2445, 2447], 42.3243, -71.1408), - ('Benton Harbor', 'MI', ARRAY[49023], 42.1159, -86.4488), - ('St. Clair Shores', 'MI', ARRAY[48080, 48082], 42.4921, -82.8957), - ('Des Plaines', 'IL', ARRAY[60016, 60011, 60017, 60019], 42.0345, -87.9009), - ('Lewiston', 'ME', ARRAY[4241, 4243], 44.0915, -70.1681), - ('Margate', 'FL', ARRAY[33068], 26.2466, -80.2119), - ('Midland', 'MI', ARRAY[48640, 48667, 48641, 48670], 43.6241, -84.2319), - ('Spring', 'TX', ARRAY[77383, 77391, 77393], 30.0613, -95.3830), - ('Carson City', 'NV', ARRAY[89703, 89702, 89705, 89706], 39.1512, -119.7474), - ('Bowie', 'MD', ARRAY[20721, 20716, 20715, 20717], 38.9569, -76.7409), - ('Caldwell', 'ID', ARRAY[83605], 43.6453, -116.6591), - ('San Rafael', 'CA', ARRAY[94903, 94915], 37.9905, -122.5222), - ('Kendale Lakes', 'FL', ARRAY[33183], 25.7081, -80.4078), - ('Towson', 'MD', ARRAY[21212, 21239, 21252, 21209], 39.3944, -76.6190), - ('Richland', 'WA', ARRAY[99354], 46.2824, -119.2938), - ('South Hill', 'WA', ARRAY[98374, 98373, 98343], 47.1203, -122.2848), - ('Hendersonville', 'TN', ARRAY[37077], 36.3063, -86.5998), - ('White Plains', 'NY', ARRAY[10601, 10604, 10605, 10606], 41.0220, -73.7549), - ('Huntersville', 'NC', ARRAY[28070], 35.4058, -80.8727), - ('Jefferson City', 'MO', ARRAY[65109, 65102, 65103, 65104], 38.5676, -92.1759), - ('Arcadia', 'CA', ARRAY[91006, 91066, 91077], 34.1342, -118.0373), - ('Titusville', 'FL', ARRAY[32780, 32781, 32783], 28.5727, -80.8193), - ('Cartersville', 'GA', ARRAY[30120], 34.1639, -84.8007), - ('Orland Park', 'IL', ARRAY[60462], 41.6074, -87.8619), - ('Weymouth Town', 'MA', ARRAY[2190, 2188, 2189], 42.1984, -70.9466), - ('Parker', 'CO', ARRAY[80134], 39.5084, -104.7753), - ('Palm Beach Gardens', 'FL', ARRAY[33410, 33412, 33403, 33318], 26.8466, -80.1679), - ('Bozeman', 'MT', ARRAY[59715, 59717, 59719], 45.6832, -111.0552), - ('Tamiami', 'FL', ARRAY[33182, 33184], 25.7556, -80.4016), - ('Taunton', 'MA', ARRAY[2767, 2718], 41.9036, -71.0943), - ('Midwest City', 'OK', ARRAY[73141, 73130], 35.4630, -97.3709), - ('Medford', 'MA', ARRAY[2153, 2156], 42.4234, -71.1087), - ('Goldsboro', 'NC', ARRAY[27530, 27531, 27532, 27533], 35.3778, -77.9720), - ('Euless', 'TX', ARRAY[76051, 76039, 75261], 32.8508, -97.0799), - ('Manhattan', 'KS', ARRAY[66502, 66503, 66505], 39.1886, -96.6046), - ('Shoreline', 'WA', ARRAY[98177, 98133, 98160], 47.7564, -122.3426), - ('Lake Havasu City', 'AZ', ARRAY[86406, 86404], 34.5006, -114.3113), - ('Smyrna', 'GA', ARRAY[30082, 30080], 33.8633, -84.5168), - ('Cape Girardeau', 'MO', ARRAY[63701], 37.3108, -89.5597), - ('Grants Pass', 'OR', ARRAY[97527], 42.4333, -123.3317), - ('Blue Springs', 'MO', ARRAY[64015, 64051], 39.0124, -94.2721), - ('Southaven', 'MS', ARRAY[38671, 38672], 34.9514, -89.9787), - ('Tinley Park', 'IL', ARRAY[60477], 41.5670, -87.8050), - ('Diamond Bar', 'CA', ARRAY[91765], 33.9991, -117.8161), - ('Pittsfield', 'MA', ARRAY[1202, 1203], 42.4517, -73.2605), - ('New Brunswick', 'NJ', ARRAY[8875, 8906, 8933], 40.4870, -74.4450), - ('Lenexa', 'KS', ARRAY[66215, 66216, 66217, 66219], 38.9609, -94.8018), - ('Brookhaven', 'GA', ARRAY[30319], 33.8744, -84.3314), - ('Novato', 'CA', ARRAY[94945, 94947, 94913, 94998], 38.0920, -122.5576), - ('Tigard', 'OR', ARRAY[97223, 97281], 45.4237, -122.7845), - ('Aloha', 'OR', ARRAY[97006, 97003, 97078, 97312], 45.4920, -122.8726), - ('Highland', 'CA', ARRAY[92410, 92346], 34.1113, -117.1654), - ('Fountain Valley', 'CA', ARRAY[92728], 33.7105, -117.9514), - ('Dearborn Heights', 'MI', ARRAY[48125], 42.3164, -83.2769), - ('Grapevine', 'TX', ARRAY[76099], 32.9343, -97.0744), - ('Fond du Lac', 'WI', ARRAY[54935, 54936], 43.7718, -88.4396), - ('Ithaca', 'NY', ARRAY[14850, 14851], 42.4442, -76.5032), - ('Chicopee', 'MA', ARRAY[1022, 1013, 1014, 1021], 42.1764, -72.5719), - ('Hempstead', 'NY', ARRAY[11551], 40.7043, -73.6193), - ('Wesley Chapel', 'FL', ARRAY[33545, 33559, 33544], 28.2106, -82.3238), - ('Oak Lawn', 'IL', ARRAY[60454], 41.7139, -87.7528), - ('Cathedral City', 'CA', ARRAY[92234], 33.8363, -116.4642), - ('Hacienda Heights', 'CA', ARRAY[91716], 33.9970, -117.9728), - ('Stonecrest', 'GA', ARRAY[30038, 30058, 30018], 33.6842, -84.1372), - ('Kettering', 'OH', ARRAY[45409, 45429, 45420, 45419], 39.6957, -84.1495), - ('Kingston', 'NY', ARRAY[12402], 41.9295, -73.9968), - ('West Haven', 'CT', ARRAY[6504], 41.2739, -72.9672), - ('St. Cloud', 'FL', ARRAY[34771, 34772, 34770], 28.2294, -81.2829), - ('Normal', 'IL', ARRAY[61790], 40.5218, -88.9881), - ('Minnetonka', 'MN', ARRAY[55345, 55343, 55391], 44.9322, -93.4598), - ('Rosemead', 'CA', ARRAY[91771, 91772], 34.0689, -118.0823), - ('Brunswick', 'GA', ARRAY[32523], 31.1450, -81.4740), - ('Williamsport', 'PA', ARRAY[17703, 17705], 41.2398, -77.0371), - ('Elyria', 'OH', ARRAY[44036], 41.3761, -82.1063), - ('Leesburg', 'VA', ARRAY[20175, 20178], 39.1058, -77.5544), - ('Mount Prospect', 'IL', ARRAY[60065], 42.0641, -87.9375), - ('Pinellas Park', 'FL', ARRAY[33782, 33762, 33760, 33773], 27.8589, -82.7078), - ('Bellevue', 'NE', ARRAY[68147, 68005, 68157], 41.1535, -95.9357), - ('West Sacramento', 'CA', ARRAY[95691, 95798, 95799, 95899], 38.5557, -121.5504), - ('Apopka', 'FL', ARRAY[32703, 32704, 32768], 28.7014, -81.5304), - ('Grand Island', 'NE', ARRAY[68801, 68802], 40.9214, -98.3584), - ('Palm Desert', 'CA', ARRAY[92211], 33.7378, -116.3695), - ('Milford city ', 'CT', ARRAY[6460], 41.2256, -73.0625), - ('Little Elm', 'TX', ARRAY[76227], 33.1856, -96.9290), - ('Peabody', 'MA', ARRAY[1961], 42.5335, -70.9724), - ('Wylie', 'TX', ARRAY[75173, 75407, 75166, 75086], 33.0362, -96.5161), - ('Beaufort', 'SC', ARRAY[29904, 29906], 32.4597, -80.7235), - ('DeSoto', 'TX', ARRAY[75123], 32.5992, -96.8633), - ('Helena', 'MT', ARRAY[59602, 59604, 59620, 59624], 46.5965, -112.0202), - ('Edina', 'MN', ARRAY[55436, 55435, 55439, 55410], 44.8914, -93.3602), - ('Aspen Hill', 'MD', ARRAY[20906, 20897], 39.0928, -77.0823), - ('Wheaton', 'IL', ARRAY[60189], 41.8561, -88.1083), - ('Lacey', 'WA', ARRAY[98516, 98509, 98561], 47.0460, -122.7934), - ('Summerville', 'SC', ARRAY[29483], 33.0015, -80.1799), - ('Oak Park', 'IL', ARRAY[60302, 60304, 60303], 41.8872, -87.7899), - ('Kentwood', 'MI', ARRAY[49512, 49546, 49508], 42.8852, -85.5925), - ('Sierra Vista', 'AZ', ARRAY[85635, 85613, 85670, 85671], 31.5630, -110.3153), - ('Levittown', 'PA', ARRAY[19055, 19056, 19057, 19058], 40.1537, -74.8530), - ('Madison', 'AL', ARRAY[35756], 34.7114, -86.7626), - ('Glendora', 'CA', ARRAY[91741], 34.1449, -117.8468), - ('Levittown', 'NY', ARRAY[11756, 11783], 40.7241, -73.5125), - ('Burien', 'WA', ARRAY[98148, 98168, 98166, 98062], 47.4762, -122.3394), - ('Perth Amboy', 'NJ', ARRAY[8862], 40.5203, -74.2724), - ('Farmington', 'NM', ARRAY[87402, 87415], 36.7555, -108.1823), - ('New Bern', 'NC', ARRAY[28562, 28561, 28563, 28564], 35.0955, -77.0723), - ('Placentia', 'CA', ARRAY[92811, 92871], 33.8807, -117.8553), - ('Collierville', 'TN', ARRAY[38017, 38027], 35.0471, -89.6988), - ('West Lafayette', 'IN', ARRAY[47907, 47996], 40.4432, -86.9239), - ('Florissant', 'MO', ARRAY[63031, 63032], 38.7996, -90.3269), - ('Hoffman Estates', 'IL', ARRAY[60192, 60195, 60169, 60120], 42.0639, -88.1468), - ('Queen Creek', 'AZ', ARRAY[85140], 33.2386, -111.6343), - ('Kannapolis', 'NC', ARRAY[28083, 28081, 28082], 35.4764, -80.6403), - ('Maricopa', 'AZ', ARRAY[85139], 33.0404, -112.0006), - ('Sahuarita', 'AZ', ARRAY[85614], 31.9323, -110.9654), - ('Rowland Heights', 'CA', ARRAY[91789], 33.9716, -117.8911), - ('Traverse City', 'MI', ARRAY[49684], 44.7547, -85.6035), - ('Wheaton', 'MD', ARRAY[20902], 39.0492, -77.0572), - ('East Hartford', 'CT', ARRAY[6118, 6128, 6138], 41.7634, -72.6152), - ('Irondequoit', 'NY', ARRAY[14621, 14622, 14617], 43.2096, -77.5705), - ('Catalina Foothills', 'AZ', ARRAY[85750, 85715, 85728], 32.3041, -110.8835), - ('Cookeville', 'TN', ARRAY[38506, 38505, 38502, 38503], 36.1484, -85.5114), - ('Mishawaka', 'IN', ARRAY[46545, 46546], 41.6736, -86.1669), - ('Plainfield', 'NJ', ARRAY[7063, 7060, 7061], 40.6154, -74.4157), - ('Bullhead City', 'AZ', ARRAY[86429, 86439], 35.1205, -114.5460), - ('Ashburn', 'VA', ARRAY[20166, 20103, 20149], 39.0300, -77.4711), - ('North Bethesda', 'MD', ARRAY[20814, 20817, 20852, 20857], 39.0393, -77.1191), - ('Severn', 'MD', ARRAY[21077, 21076], 39.1355, -76.6958), - ('Azusa', 'CA', ARRAY[91010], 34.1386, -117.9124), - ('Morehead City', 'NC', ARRAY[28516], 34.7308, -76.7387), - ('Coral Gables', 'FL', ARRAY[33143, 33134, 33158, 33156], 25.7037, -80.2715), - ('Oroville', 'CA', ARRAY[95966], 39.4999, -121.5634), - ('Wilson', 'NC', ARRAY[27896, 27894], 35.7312, -77.9284), - ('Lawrence', 'IN', ARRAY[46235, 46236, 46226, 46249], 39.8674, -85.9905), - ('Portage', 'MI', ARRAY[49024, 49081], 42.2000, -85.5906), - ('Minot', 'ND', ARRAY[58703, 58702, 58701], 48.2375, -101.2781), - ('Dunwoody', 'GA', ARRAY[30346, 30360, 31146], 33.9418, -84.3122), - ('Poway', 'CA', ARRAY[92074], 32.9871, -117.0201), - ('San Jacinto', 'CA', ARRAY[92582, 92581], 33.7970, -116.9916), - ('Troy', 'NY', ARRAY[12180, 12181], 42.7354, -73.6751), - ('Florin', 'CA', ARRAY[95823], 38.4832, -121.4042), - ('Cuyahoga Falls', 'OH', ARRAY[44223, 44264, 44313, 44222], 41.1641, -81.5207), - ('Downers Grove', 'IL', ARRAY[60516], 41.7949, -88.0170), - ('Bedford', 'TX', ARRAY[76021, 75064, 76095], 32.8464, -97.1350), - ('Dublin', 'OH', ARRAY[43017, 43016], 40.1112, -83.1454), - ('Marana', 'AZ', ARRAY[85741, 85743, 85742, 85658], 32.4355, -111.1558), - ('Stillwater', 'OK', ARRAY[74075, 74074, 74077], 36.1316, -97.0740), - ('Hollister', 'CA', ARRAY[95024], 36.8563, -121.3981), - ('North Highlands', 'CA', ARRAY[95841], 38.6713, -121.3721), - ('Murray', 'UT', ARRAY[84121, 84107, 84122, 84157], 40.6498, -111.8874), - ('Roswell', 'NM', ARRAY[88201], 33.3730, -104.5294), - ('Pascagoula', 'MS', ARRAY[39567, 39568, 39569, 39595], 30.3665, -88.5507), - ('Ceres', 'CA', ARRAY[95351, 95307], 37.5953, -120.9625), - ('St. Louis Park', 'MN', ARRAY[55416], 44.9488, -93.3649), - ('Palm Springs', 'CA', ARRAY[92264, 92258], 33.8017, -116.5382), - ('Paducah', 'KY', ARRAY[42001, 42002], 37.0711, -88.6436), - ('Findlay', 'OH', ARRAY[45839], 41.0467, -83.6379), - ('Kyle', 'TX', ARRAY[78640], 29.9937, -97.8859), - ('Monroe', 'MI', ARRAY[48161], 41.9154, -83.3850), - ('Tuckahoe', 'VA', ARRAY[23229, 23226], 37.5878, -77.5858), - ('Bel Air South', 'MD', ARRAY[21015, 21014], 39.5051, -76.3197), - ('Ocoee', 'FL', ARRAY[34734], 28.5787, -81.5338), - ('Burleson', 'TX', ARRAY[76058, 76097], 32.5170, -97.3343), - ('La Mirada', 'CA', ARRAY[90637, 90639], 33.9025, -118.0093), - ('Farmers Branch', 'TX', ARRAY[75244], 32.9272, -96.8804), - ('East Lansing', 'MI', ARRAY[48823, 48824, 48826], 42.7480, -84.4835), - ('Jeffersonville', 'IN', ARRAY[47131, 47132, 47134, 47144], 38.3376, -85.7026), - ('Wauwatosa', 'WI', ARRAY[53225, 53226, 53222], 43.0615, -88.0347), - ('Littleton', 'CO', ARRAY[80122, 80123, 80120, 80160], 39.5915, -105.0188), - ('Cumberland', 'MD', ARRAY[21503, 21505], 39.6515, -78.7585), - ('Cedar Hill', 'TX', ARRAY[75106], 32.5810, -96.9591), - ('Carrollton', 'GA', ARRAY[30116, 30117, 30112, 30119], 33.5817, -85.0837), - ('Enid', 'OK', ARRAY[73703, 73705, 73702, 73706], 36.4061, -97.8701), - ('Rancho Santa Margarita', 'CA', ARRAY[92688], 33.6318, -117.5989), - ('East Honolulu', 'HI', ARRAY[96825], 21.2975, -157.7211), - ('Beavercreek', 'OH', ARRAY[45434, 45432, 45431, 45430], 39.7310, -84.0624), - ('Niagara Falls', 'NY', ARRAY[14302, 14301, 14305, 14304], 43.0921, -79.0147), - ('East Providence', 'RI', ARRAY[2914, 2916], 41.8065, -71.3565), - ('Chesterfield', 'MO', ARRAY[63005], 38.6588, -90.5804), - ('Covina', 'CA', ARRAY[91722, 91723], 34.0903, -117.8817), - ('Bothell', 'WA', ARRAY[98011, 98041], 47.7735, -122.2044), - ('Glenview', 'IL', ARRAY[60026, 60082], 42.0825, -87.8216), - ('Keller', 'TX', ARRAY[76262], 32.9337, -97.2255), - ('McLean', 'VA', ARRAY[22043, 22101, 22102, 22067], 38.9436, -77.1943), - ('Danville', 'IL', ARRAY[61832], 40.1423, -87.6114), - ('Spring Hill', 'TN', ARRAY[37179], 35.7438, -86.9116), - ('Euclid', 'OH', ARRAY[44119, 44117, 44123], 41.5904, -81.5188), - ('Kingman', 'AZ', ARRAY[86401, 86402], 35.2170, -114.0105), - ('Galveston', 'TX', ARRAY[77550, 77554, 77552, 77553], 29.2487, -94.8910), - ('University', 'FL', ARRAY[33549, 33612, 33559], 28.0771, -82.4335), - ('Weatherford', 'TX', ARRAY[76087], 32.7536, -97.7723), - ('Middletown', 'CT', ARRAY[6459], 41.5476, -72.6549), - ('Roseburg', 'OR', ARRAY[97471], 43.2232, -123.3518), - ('Biloxi', 'MS', ARRAY[39530, 39532, 39534, 39533], 30.4422, -88.9512), - ('Leavenworth', 'KS', ARRAY[66048], 39.3239, -94.9240), - ('Pearl City', 'HI', ARRAY[96782], 21.4031, -157.9566), - ('Fort Pierce', 'FL', ARRAY[34947, 34982, 34981, 34950], 27.4256, -80.3431), - ('Winter Garden', 'FL', ARRAY[34777], 28.5421, -81.5966), - ('Oro Valley', 'AZ', ARRAY[85704, 85737], 32.4208, -110.9768), - ('Danville', 'VA', ARRAY[24541, 24543], 36.5831, -79.4087), - ('Rockwall', 'TX', ARRAY[75087, 75189], 32.9169, -96.4377), - ('Potomac', 'MD', ARRAY[20854, 20859], 39.0141, -77.1943), - ('El Dorado Hills', 'CA', ARRAY[95762, 95682], 38.6750, -121.0490), - ('Tupelo', 'MS', ARRAY[38801, 38826], 34.2692, -88.7318), - ('Pine Bluff', 'AR', ARRAY[71601, 71603], 34.2116, -92.0178), - ('Oakland Park', 'FL', ARRAY[33309, 33334, 33311], 26.1780, -80.1528), - ('Marion', 'OH', ARRAY[43301], 40.5933, -83.1237), - ('Arlington', 'MA', ARRAY[2474, 2475], 42.4187, -71.1640), - ('Altadena', 'CA', ARRAY[91001, 91003], 34.1928, -118.1345), - ('Lufkin', 'TX', ARRAY[75901, 75902], 31.3217, -94.7277), - ('Trujillo Alto', 'PR', ARRAY[926, 977, 978], 18.3601, -66.0103), - ('Strongsville', 'OH', ARRAY[44149], 41.3128, -81.8313), - ('Danville', 'CA', ARRAY[94526], 37.8121, -121.9698), - ('Quincy', 'IL', ARRAY[62305, 62306], 39.9335, -91.3799), - ('Riverton', 'UT', ARRAY[84065], 40.5177, -111.9635), - ('The Colony', 'TX', ARRAY[75056], 33.0925, -96.8977), - ('Urbandale', 'IA', ARRAY[50323, 50322], 41.6390, -93.7813), - ('Plainfield', 'IL', ARRAY[60586, 60585], 41.6206, -88.2252), - ('Lombard', 'IL', ARRAY[60128], 41.8742, -88.0157), - ('Prescott', 'AZ', ARRAY[86301, 86303, 86313, 86304], 34.5850, -112.4475), - ('Eureka', 'CA', ARRAY[95501, 95521, 95502, 95534], 40.7942, -124.1568), - ('Hackensack', 'NJ', ARRAY[7602], 40.8890, -74.0461), - ('Sayreville', 'NJ', ARRAY[8879, 8859, 8871], 40.4656, -74.3237), - ('Altamonte Springs', 'FL', ARRAY[32701, 32715, 32716], 28.6615, -81.3953), - ('Del Rio', 'TX', ARRAY[78841, 78842, 78847], 29.3708, -100.8800), - ('Cleveland Heights', 'OH', ARRAY[44118, 44112, 44106], 41.5112, -81.5636), - ('Bountiful', 'UT', ARRAY[84011], 40.8722, -111.8647), - ('Desert Hot Springs', 'CA', ARRAY[92240, 92258], 33.9551, -116.5430), - ('Peachtree Corners', 'GA', ARRAY[30092, 30360], 33.9670, -84.2319), - ('Haltom City', 'TX', ARRAY[76148, 76117, 76136], 32.8176, -97.2707), - ('Ormond Beach', 'FL', ARRAY[32176, 32173, 32175], 29.2960, -81.1003), - ('Annandale', 'VA', ARRAY[22042], 38.8324, -77.1960), - ('Cutler Bay', 'FL', ARRAY[33157, 33189], 25.5765, -80.3356), - ('Moorhead', 'MN', ARRAY[56562, 56563], 46.8673, -96.7461), - ('Westfield', 'IN', ARRAY[46074], 40.0333, -86.1532), - ('Concord', 'NH', ARRAY[3301, 3302, 3305], 43.2305, -71.5595), - ('Rohnert Park', 'CA', ARRAY[94926, 94927], 38.3480, -122.6964), - ('Brea', 'CA', ARRAY[92823, 92822], 33.9254, -117.8656), - ('Klamath Falls', 'OR', ARRAY[97601], 42.2191, -121.7754), - ('Salem', 'MA', ARRAY[1971], 42.5129, -70.9020), - ('Whitney', 'NV', ARRAY[89112], 36.1005, -115.0380), - ('North Miami Beach', 'FL', ARRAY[33162], 25.9302, -80.1660), - ('Stevens Point', 'WI', ARRAY[54482, 54492], 44.5241, -89.5508), - ('Brentwood', 'TN', ARRAY[37024], 35.9918, -86.7758), - ('Burke', 'VA', ARRAY[22153, 22152, 22009], 38.7773, -77.2633), - ('Hicksville', 'NY', ARRAY[11802, 11815], 40.7637, -73.5245), - ('Edmonds', 'WA', ARRAY[98020], 47.8115, -122.3533), - ('Apache Junction', 'AZ', ARRAY[85120, 85117, 85178], 33.3985, -111.5351), - ('Fairfield', 'OH', ARRAY[45018], 39.3301, -84.5409), - ('Hutchinson', 'KS', ARRAY[67501, 67504], 38.0671, -97.9081), - ('Greenwood', 'SC', ARRAY[29646, 29647, 29648], 34.1945, -82.1542), - ('Richmond', 'IN', ARRAY[47375], 39.8318, -84.8905), - ('Puyallup', 'WA', ARRAY[98371, 98374, 98373], 47.1794, -122.2902), - ('Urbana', 'IL', ARRAY[61802, 61803], 40.1106, -88.1972), - ('Beverly', 'MA', ARRAY[1965], 42.5681, -70.8627), - ('Statesboro', 'GA', ARRAY[30461, 30458, 30459], 32.4376, -81.7750), - ('Hobbs', 'NM', ARRAY[88244], 32.7282, -103.1600), - ('Schertz', 'TX', ARRAY[78154], 29.5649, -98.2537), - ('Bell Gardens', 'CA', ARRAY[90202], 33.9663, -118.1550), - ('Channelview', 'TX', ARRAY[77049], 29.7914, -95.1145), - ('Oviedo', 'FL', ARRAY[32766, 32762], 28.6580, -81.1872), - ('Odenton', 'MD', ARRAY[21113], 39.0661, -76.6939), - ('Campbell', 'CA', ARRAY[95009, 95011], 37.2802, -121.9538), - ('Wentzville', 'MO', ARRAY[63346], 38.8152, -90.8667), - ('La Quinta', 'CA', ARRAY[92235, 92247, 92248], 33.6536, -116.2785), - ('North Fort Myers', 'FL', ARRAY[33903], 26.7243, -81.8491), - ('Zanesville', 'OH', ARRAY[43702], 39.9565, -82.0132), - ('Newnan', 'GA', ARRAY[30265, 30271], 33.3766, -84.7761), - ('Brighton', 'CO', ARRAY[80601], 39.9716, -104.7964), - ('Catonsville', 'MD', ARRAY[21228], 39.2646, -76.7424), - ('Moline', 'IL', ARRAY[61266], 41.4821, -90.4921), - ('Westfield', 'MA', ARRAY[1085], 42.1382, -72.7561), - ('Greenacres', 'FL', ARRAY[33415, 33463], 26.6272, -80.1371), - ('Westerville', 'OH', ARRAY[43082, 43086], 40.1241, -82.9209), - ('Linton Hall', 'VA', ARRAY[20155], 38.7551, -77.5750), - ('Manassas', 'VA', ARRAY[20108, 20113], 38.7479, -77.4839), - ('Kearny', 'NJ', ARRAY[7099], 40.7528, -74.1202), - ('South Valley', 'NM', ARRAY[87190], 35.0092, -106.6819), - ('Richmond', 'KY', ARRAY[40476], 37.7306, -84.2926), - ('Belleville', 'IL', ARRAY[62220, 62226, 62223, 62222], 38.5165, -89.9900), - ('Maplewood', 'MN', ARRAY[55119, 55109], 44.9842, -93.0247), - ('Wilkes-Barre', 'PA', ARRAY[18701, 18705, 18703, 18710], 41.2468, -75.8759), - ('Columbia', 'TN', ARRAY[38402], 35.6235, -87.0486), - ('Marion', 'IN', ARRAY[46952], 40.5496, -85.6600), - ('Cedar Falls', 'IA', ARRAY[50614], 42.5195, -92.4534), - ('Jamestown', 'NY', ARRAY[14702], 42.0975, -79.2366), - ('Huntsville', 'TX', ARRAY[77342, 77320, 77341, 77343], 30.7050, -95.5544), - ('Mableton', 'GA', ARRAY[30168], 33.8132, -84.5656), - ('Clarksburg', 'WV', ARRAY[26330, 26302, 26306], 39.2863, -80.3230), - ('Covington', 'KY', ARRAY[41015, 41014, 41017, 41016], 39.0334, -84.5166), - ('Friendswood', 'TX', ARRAY[77549], 29.5111, -95.1979), - ('Indian Trail', 'NC', ARRAY[28110, 28079], 35.0698, -80.6457), - ('Woburn', 'MA', ARRAY[1815, 1888], 42.4869, -71.1543), - ('Holyoke', 'MA', ARRAY[1041], 42.2125, -72.6411), - ('Arecibo', 'PR', ARRAY[613, 614], 18.4491, -66.7387), - ('Cedar City', 'UT', ARRAY[84721], 37.6834, -113.0956), - ('Coram', 'NY', ARRAY[11784, 11738, 11776], 40.8813, -73.0059), - ('San Gabriel', 'CA', ARRAY[91776, 91778], 34.0948, -118.0990), - ('Hallandale Beach', 'FL', ARRAY[33008], 25.9854, -80.1423), - ('Crystal Lake', 'IL', ARRAY[60012, 60039], 42.2333, -88.3351), - ('Lake Oswego', 'OR', ARRAY[97035, 97036], 45.4130, -122.7003), - ('Muskogee', 'OK', ARRAY[74401, 74402], 35.7431, -95.3568), - ('Romeoville', 'IL', ARRAY[60446], 41.6318, -88.0996), - ('Plant City', 'FL', ARRAY[33563, 33565, 33564], 28.0140, -82.1201), - ('Keizer', 'OR', ARRAY[97307], 45.0029, -123.0241), - ('New Berlin', 'WI', ARRAY[53151], 42.9726, -88.1291), - ('Chelsea', 'MA', ARRAY[2204], 42.3959, -71.0325), - ('The Acreage', 'FL', ARRAY[33412, 33470], 26.7741, -80.2779), - ('La Puente', 'CA', ARRAY[91744, 91747, 91749], 34.0323, -117.9533), - ('Milton', 'GA', ARRAY[30009], 34.1353, -84.3138), - ('Issaquah', 'WA', ARRAY[98027], 47.5440, -122.0471), - ('Kendall West', 'FL', ARRAY[33185], 25.7065, -80.4388), - ('Sun City', 'AZ', ARRAY[85373, 85372], 33.6165, -112.2819), - ('Bartlesville', 'OK', ARRAY[74003, 74004], 36.7357, -95.9453), - ('Lancaster', 'TX', ARRAY[75134], 32.5922, -96.7737), - ('Germantown', 'TN', ARRAY[38139, 38183], 35.0829, -89.7825), - ('Annapolis', 'MD', ARRAY[21403, 21404, 21411], 38.9706, -76.5047), - ('Carol Stream', 'IL', ARRAY[60116, 60197, 60199], 41.9182, -88.1308), - ('Asheboro', 'NC', ARRAY[27203, 27204], 35.7158, -79.8129), - ('Culver City', 'CA', ARRAY[90230, 90060, 90231, 90233], 34.0058, -118.3968), - ('Lynnwood', 'WA', ARRAY[98036, 98046], 47.8284, -122.3033), - ('Mooresville', 'NC', ARRAY[28115], 35.5849, -80.8265), - ('Brookfield', 'WI', ARRAY[53045, 53008], 43.0640, -88.1231), - ('Crestview', 'FL', ARRAY[32536], 30.7480, -86.5784), - ('Woodlawn', 'MD', ARRAY[21207, 21228, 21235, 21241], 39.3054, -76.7489), - ('New Castle', 'PA', ARRAY[16101, 16105, 16103, 16107], 40.9956, -80.3459), - ('Enterprise', 'AL', ARRAY[36331], 31.3276, -85.8459), - ('Frankfort', 'KY', ARRAY[40601, 40602, 40603, 40618], 38.1924, -84.8643), - ('Northglenn', 'CO', ARRAY[80233, 80234, 80603], 39.9108, -104.9783), - ('Warren', 'OH', ARRAY[44485, 44484, 44482, 44486], 41.2390, -80.8174), - ('Duncanville', 'TX', ARRAY[75137, 75138], 32.6460, -96.9127), - ('Hurst', 'TX', ARRAY[76053], 32.8353, -97.1808), - ('Clermont', 'FL', ARRAY[34712, 34713], 28.5402, -81.7259), - ('Severna Park', 'MD', ARRAY[21108, 21123], 39.0870, -76.5687), - ('Lake Worth', 'FL', ARRAY[33460, 33464, 33465, 33466], 26.6196, -80.0591), - ('Lebanon', 'TN', ARRAY[37087, 37088], 36.2040, -86.3481), - ('Eagle Mountain', 'UT', ARRAY[84005], 40.3137, -112.0114), - ('Reynoldsburg', 'OH', ARRAY[43069], 39.9587, -82.7944), - ('Oxford', 'MS', ARRAY[38677], 34.3627, -89.5336), - ('Rosenberg', 'TX', ARRAY[77469], 29.5460, -95.8220), - ('Valrico', 'FL', ARRAY[33596, 33587, 33601], 27.9193, -82.2293), - ('Security-Widefield', 'CO', ARRAY[80925], 38.7489, -104.7142), - ('Menomonee Falls', 'WI', ARRAY[53052], 43.1487, -88.1227), - ('Granbury', 'TX', ARRAY[76049], 32.4484, -97.7685), - ('Waxahachie', 'TX', ARRAY[75167], 32.4032, -96.8444), - ('Richmond West', 'FL', ARRAY[33187], 25.6105, -80.4297), - ('South Miami Heights', 'FL', ARRAY[33157], 25.5886, -80.3862), - ('Holly Springs', 'NC', ARRAY[27540], 35.6530, -78.8397), - ('Butler', 'PA', ARRAY[16003], 40.8616, -79.8962), - ('Albertville', 'AL', ARRAY[35950], 34.2634, -86.2107), - ('London', 'KY', ARRAY[40741, 40742, 40745], 37.1175, -84.0767), - ('Cottage Grove', 'MN', ARRAY[55033], 44.8161, -92.9274), - ('Mechanicsville', 'VA', ARRAY[23111], 37.6262, -77.3561), - ('Cleburne', 'TX', ARRAY[76031, 76033], 32.3570, -97.4152), - ('Valley Stream', 'NY', ARRAY[11581, 11582], 40.6647, -73.7044), - ('Winter Springs', 'FL', ARRAY[32719], 28.6889, -81.2704), - ('Greenfield', 'WI', ARRAY[53220, 53228], 42.9619, -88.0051), - ('Braintree Town', 'MA', ARRAY[2185], 42.2039, -71.0022), - ('Parkland', 'WA', ARRAY[98445, 98447], 47.1417, -122.4376), - ('Oakton', 'VA', ARRAY[22124, 22181, 22185], 38.8887, -77.3016), - ('Rock Island', 'IL', ARRAY[61204], 41.4699, -90.5827), - ('Mount Juliet', 'TN', ARRAY[37121], 36.1991, -86.5114), - ('Land O'' Lakes', 'FL', ARRAY[34638, 33559, 34639], 28.2075, -82.4476), - ('Aventura', 'FL', ARRAY[33180], 25.9565, -80.1372), - ('Park Ridge', 'IL', ARRAY[60668], 42.0125, -87.8436), - ('Commack', 'NY', ARRAY[11731], 40.8443, -73.2834), - ('Foley', 'AL', ARRAY[36530], 30.3983, -87.6649), - ('New Albany', 'IN', ARRAY[47151], 38.3089, -85.8234), - ('Benton', 'AR', ARRAY[72015, 72158], 34.5775, -92.5712), - ('Merritt Island', 'FL', ARRAY[32953], 28.3146, -80.6713), - ('Meridian', 'MS', ARRAY[39305, 39301, 39302, 39304], 32.3846, -88.6896), - ('Bettendorf', 'IA', ARRAY[52722], 41.5656, -90.4764), - ('Dunedin', 'FL', ARRAY[34697], 28.0329, -82.7863), - ('Phenix City', 'AL', ARRAY[36867, 36868], 32.4588, -85.0251), - ('West Hollywood', 'CA', ARRAY[90046, 90048], 34.0882, -118.3718), - ('Brighton', 'NY', ARRAY[14620, 14623, 14618, 14610], 43.1175, -77.5835), - ('Tucker', 'GA', ARRAY[30084, 30083, 30063, 30085], 33.8436, -84.2021), - ('Moorpark', 'CA', ARRAY[93020], 34.2855, -118.8770), - ('Monrovia', 'CA', ARRAY[91017, 91185], 34.1650, -117.9921), - ('Peachtree City', 'GA', ARRAY[30270, 31169], 33.3943, -84.5712), - ('Lauderdale Lakes', 'FL', ARRAY[33313, 33311, 33319], 26.1682, -80.2017), - ('Pahrump', 'NV', ARRAY[89060, 89061, 89041], 36.2411, -116.0176), - ('University', 'FL', ARRAY[32817, 32816], 28.5900, -81.1990), - ('Shawnee', 'OK', ARRAY[74801], 35.3529, -96.9650), - ('Gillette', 'WY', ARRAY[82716, 82717], 44.2752, -105.4983), - ('Prattville', 'AL', ARRAY[36067, 36068], 32.4605, -86.4588), - ('Watertown Town', 'MA', ARRAY[2471], 42.3700, -71.1774), - ('San Juan Capistrano', 'CA', ARRAY[92615], 33.5009, -117.6544), - ('Cooper City', 'FL', ARRAY[33026, 33330, 33328], 26.0463, -80.2862), - ('Chillum', 'MD', ARRAY[20782, 20712], 38.9667, -76.9790), - ('LaGrange', 'GA', ARRAY[30241], 33.0274, -85.0384), - ('La Vergne', 'TN', ARRAY[37089], 36.0203, -86.5582), - ('Mount Pleasant', 'MI', ARRAY[48804, 48859], 43.5966, -84.7759), - ('Inver Grove Heights', 'MN', ARRAY[55076], 44.8247, -93.0596), - ('Monroe', 'NC', ARRAY[28112, 28111], 35.0061, -80.5595), - ('Bell', 'CA', ARRAY[90096], 33.9801, -118.1798), - ('Sanford', 'NC', ARRAY[27332, 27259, 27331], 35.4874, -79.1772), - ('Riviera Beach', 'FL', ARRAY[33404], 26.7812, -80.0742), - ('Wildwood', 'MO', ARRAY[63021, 63011, 63040, 63038], 38.5799, -90.6699), - ('Upper Arlington', 'OH', ARRAY[43221, 43212], 40.0272, -83.0704), - ('Plainfield', 'IN', ARRAY[46231], 39.6953, -86.3717), - ('Olney', 'MD', ARRAY[20832, 20833, 20853, 20830], 39.1465, -77.0715), - ('Carrollwood', 'FL', ARRAY[33618, 33688], 28.0577, -82.5149), - ('La Porte', 'TX', ARRAY[77572], 29.6689, -95.0484), - ('Englewood', 'CO', ARRAY[80110, 80150, 80151], 39.6468, -104.9942), - ('Randallstown', 'MD', ARRAY[21133], 39.3723, -76.8024), - ('East Point', 'GA', ARRAY[30349, 30364], 33.6696, -84.4701), - ('DeLand', 'FL', ARRAY[32720, 32723], 29.0224, -81.2873), - ('Golden Glades', 'FL', ARRAY[33161, 33162, 33169, 33163], 25.9129, -80.2013), - ('Merrillville', 'IN', ARRAY[46307, 46411], 41.4728, -87.3197), - ('Leawood', 'KS', ARRAY[66224, 66209, 66206], 38.9076, -94.6258), - ('Oildale', 'CA', ARRAY[93388], 35.4249, -119.0279), - ('Menlo Park', 'CA', ARRAY[94026], 37.4686, -122.1672), - ('Sun Prairie', 'WI', ARRAY[53596], 43.1827, -89.2358), - ('New City', 'NY', ARRAY[10954, 10920], 41.1543, -73.9909), - ('Lockport', 'NY', ARRAY[14095], 43.1698, -78.6956), - ('Boardman', 'OH', ARRAY[44511, 44514], 41.0334, -80.6671), - ('Pullman', 'WA', ARRAY[99163], 46.7340, -117.1669), - ('Nacogdoches', 'TX', ARRAY[75961, 75964, 75965], 31.6134, -94.6528), - ('Kearney', 'NE', ARRAY[68845, 68849], 40.7010, -99.0834), - ('Ferry Pass', 'FL', ARRAY[32514], 30.5203, -87.1903), - ('Vestavia Hills', 'AL', ARRAY[35243, 35242], 33.4518, -86.7438), - ('Norristown', 'PA', ARRAY[19404, 19415], 40.1224, -75.3398), - ('Dakota Ridge', 'CO', ARRAY[80235, 80127], 39.6192, -105.1344), - ('Firestone', 'CO', ARRAY[80504], 40.1563, -104.9494), - ('Goshen', 'IN', ARRAY[46526, 46527], 41.5743, -85.8308), - ('Russellville', 'AR', ARRAY[72801, 72812], 35.2763, -93.1383), - ('Parkland', 'FL', ARRAY[33067], 26.3218, -80.2533), - ('University City', 'MO', ARRAY[63130], 38.6657, -90.3315), - ('Kennesaw', 'GA', ARRAY[30144], 34.0260, -84.6177), - ('University Place', 'WA', ARRAY[98467, 98464], 47.2147, -122.5461), - ('Douglasville', 'GA', ARRAY[30135, 30122, 30133], 33.7384, -84.7065), - ('Salisbury', 'NC', ARRAY[28144, 28147, 28145], 35.6656, -80.4909), - ('Laramie', 'WY', ARRAY[82070, 82071], 41.3099, -105.6085), - ('Lake Stevens', 'WA', ARRAY[98205], 48.0028, -122.0960), - ('Valparaiso', 'IN', ARRAY[46383, 46384], 41.4782, -87.0507), - ('Estero', 'FL', ARRAY[34135, 33928, 33929], 26.4277, -81.7951), - ('Cottonwood Heights', 'UT', ARRAY[84121, 84171], 40.6137, -111.8144), - ('French Valley', 'CA', ARRAY[92596, 92593], 33.5998, -117.1069), - ('Ken Caryl', 'CO', ARRAY[80127], 39.5770, -105.1144), - ('Beverly Hills', 'CA', ARRAY[90211, 90210, 90209], 34.0786, -118.4021), - ('Galesburg', 'IL', ARRAY[61402], 40.9506, -90.3763), - ('Foothill Farms', 'CA', ARRAY[95841], 38.6867, -121.3475), - ('Westmont', 'CA', ARRAY[90047], 33.9417, -118.3018), - ('Warsaw', 'IN', ARRAY[46580, 46581], 41.2448, -85.8464), - ('Fair Oaks', 'VA', ARRAY[22033, 22035], 38.8653, -77.3586), - ('San Dimas', 'CA', ARRAY[91768], 34.1082, -117.8090), - ('Dana Point', 'CA', ARRAY[92624], 33.4733, -117.6968), - ('Newark', 'DE', ARRAY[19711, 19717, 19716, 19712], 39.6776, -75.7573), - ('Alabaster', 'AL', ARRAY[35007, 35144], 33.2198, -86.8225), - ('Lexington', 'MA', ARRAY[2420], 42.4456, -71.2307), - ('Deer Park', 'TX', ARRAY[77571, 88581], 29.6898, -95.1151), - ('West Little River', 'FL', ARRAY[33150], 25.8570, -80.2367), - ('Pikesville', 'MD', ARRAY[21208, 21209, 21022], 39.3893, -76.7020), - ('Greer', 'SC', ARRAY[29650, 29652], 34.9313, -82.2315), - ('Springville', 'UT', ARRAY[84663], 40.1638, -111.6206), - ('Matthews', 'NC', ARRAY[28106], 35.1195, -80.7101), - ('Woodstock', 'GA', ARRAY[30189], 34.1026, -84.5090), - ('Fallbrook', 'CA', ARRAY[92088], 33.3693, -117.2259), - ('Florence', 'KY', ARRAY[41022], 38.9900, -84.6470), - ('St. Charles', 'IL', ARRAY[60174], 41.9193, -88.3109), - ('San Luis', 'AZ', ARRAY[85349], 32.4911, -114.7089), - ('Fairmont', 'WV', ARRAY[26544], 39.4768, -80.1491), - ('Massillon', 'OH', ARRAY[44646, 44648], 40.7838, -81.5254), - ('Starkville', 'MS', ARRAY[39762], 33.4608, -88.8297), - ('Horizon West', 'FL', ARRAY[34786], 28.4417, -81.6145), - ('Harker Heights', 'TX', ARRAY[76513], 31.0572, -97.6445), - ('Elk Grove Village', 'IL', ARRAY[60009], 42.0063, -87.9921), - ('Redan', 'GA', ARRAY[30088, 30074], 33.7394, -84.1644), - ('Des Moines', 'WA', ARRAY[98198], 47.3915, -122.3157), - ('Bethel Park', 'PA', ARRAY[15234], 40.3239, -80.0364), - ('East Lake', 'FL', ARRAY[34685, 34688, 33677], 28.1205, -82.6868), - ('Kahului', 'HI', ARRAY[96784], 20.8715, -156.4603), - ('Dania Beach', 'FL', ARRAY[33312], 26.0594, -80.1637), - ('Spring Valley', 'NY', ARRAY[10977], 41.1151, -74.0486), - ('Bowling Green', 'OH', ARRAY[43403], 41.3773, -83.6500), - ('College Park', 'MD', ARRAY[20742, 20741], 38.9960, -76.9337), - ('Coos Bay', 'OR', ARRAY[97420], 43.3789, -124.2330), - ('Spanaway', 'WA', ARRAY[98445], 47.0979, -122.4233), - ('Clearfield', 'UT', ARRAY[84016], 41.1030, -112.0237), - ('Marrero', 'LA', ARRAY[70073], 29.8871, -90.1127), - ('Pekin', 'IL', ARRAY[61555, 61558], 40.5679, -89.6262), - ('Martinsville', 'VA', ARRAY[24113, 24114, 24115], 36.6827, -79.8636), - ('Rome', 'NY', ARRAY[13440, 13308, 13442, 13449], 43.2260, -75.4909), - ('Uniondale', 'NY', ARRAY[11530, 11553, 11556, 11590], 40.7176, -73.5947), - ('Spring Valley', 'CA', ARRAY[91978, 91979], 32.7316, -116.9766), - ('Bel Air North', 'MD', ARRAY[21015, 21014], 39.5544, -76.3733), - ('Hopkinsville', 'KY', ARRAY[42241], 36.8386, -87.4776), - ('Rochester', 'NH', ARRAY[3868, 3867, 3866], 43.2990, -70.9787), - ('Milledgeville', 'GA', ARRAY[31061, 31034], 33.0874, -83.2414), - ('Eldersburg', 'MD', ARRAY[21104], 39.4041, -76.9529), - ('Sherwood', 'AR', ARRAY[72076, 72117], 34.8508, -92.2028), - ('Garner', 'NC', ARRAY[27603], 35.6934, -78.6196), - ('Key West', 'FL', ARRAY[33041, 33045], 24.5637, -81.7768), - ('Miami Lakes', 'FL', ARRAY[33016, 33018], 25.9125, -80.3214), - ('Petersburg', 'VA', ARRAY[23805, 23804], 37.2043, -77.3913), - ('Wheat Ridge', 'CO', ARRAY[80212, 80214, 80034], 39.7728, -105.1029), - ('Cibolo', 'TX', ARRAY[78108], 29.5639, -98.2123), - ('Princeton', 'NJ', ARRAY[8542, 8541, 8544], 40.3563, -74.6693), - ('Athens', 'AL', ARRAY[35613, 35612], 34.7847, -86.9510), - ('Springfield', 'VA', ARRAY[22150, 22156, 22158, 22159], 38.7809, -77.1839), - ('Columbus', 'MS', ARRAY[39701, 39705], 33.5088, -88.4096), - ('Rexburg', 'ID', ARRAY[83440], 43.8224, -111.7920), - ('Nicholasville', 'KY', ARRAY[40340], 37.8902, -84.5669), - ('Goleta', 'CA', ARRAY[93118], 34.4360, -119.8596), - ('Opelika', 'AL', ARRAY[36801, 36802], 32.6612, -85.3769), - ('Butte', 'MT', ARRAY[59748, 59727, 59759, 59750], 45.9020, -112.6571), - ('Lakeside', 'FL', ARRAY[32065, 32073, 32030], 30.1356, -81.7674), - ('Burlingame', 'CA', ARRAY[94011], 37.5860, -122.3669), - ('Aiken', 'SC', ARRAY[29803, 29804, 29808], 33.5310, -81.7268), - ('Lawrenceville', 'GA', ARRAY[30042, 30049], 33.9523, -83.9931), - ('Winter Park', 'FL', ARRAY[32789, 32790, 32793], 28.5987, -81.3438), - ('Granger', 'IN', ARRAY[46545, 46530], 41.7373, -86.1350), - ('Fitchburg', 'WI', ARRAY[53719, 53711, 53713, 53725], 42.9859, -89.4255), - ('Needham', 'MA', ARRAY[2494], 42.2814, -71.2411), - ('Brooklyn Center', 'MN', ARRAY[55430], 45.0681, -93.3162), - ('Barstow', 'CA', ARRAY[92327], 34.8661, -117.0472), - ('Auburn', 'NY', ARRAY[13024, 13022], 42.9338, -76.5684), - ('Orcutt', 'CA', ARRAY[93457], 34.8668, -120.4269), - ('Crown Point', 'IN', ARRAY[46308], 41.4141, -87.3457), - ('Windsor', 'CO', ARRAY[80551], 40.4693, -104.9213), - ('Gloucester', 'MA', ARRAY[1931], 42.6260, -70.6897), - ('Sterling', 'VA', ARRAY[20163, 20167], 39.0052, -77.4050), - ('Orangeburg', 'SC', ARRAY[29117, 29115], 33.4928, -80.8670), - ('Holladay', 'UT', ARRAY[84121, 84124], 40.6599, -111.8226), - ('Newington', 'CT', ARRAY[6131, 6153], 41.6870, -72.7308), - ('Chamblee', 'GA', ARRAY[30345, 30366], 33.8842, -84.3008), - ('Peru', 'IL', ARRAY[61354], 41.3484, -89.1370), - ('Santa Paula', 'CA', ARRAY[93061], 34.3521, -119.0698), - ('Los Gatos', 'CA', ARRAY[95030, 95036], 37.2303, -121.9560), - ('Westchester', 'FL', ARRAY[33144, 33165, 33155], 25.7474, -80.3358), - ('South Lake Tahoe', 'CA', ARRAY[96151, 96152, 96156, 96157], 38.9393, -119.9828), - ('Clinton', 'IA', ARRAY[52733, 52734, 52736], 41.8434, -90.2408), - ('Saratoga', 'CA', ARRAY[95071], 37.2684, -122.0263), - ('Los Altos', 'CA', ARRAY[94024, 94023], 37.3685, -122.0966), - ('Ballwin', 'MO', ARRAY[63011, 63022], 38.5951, -90.5500), - ('Atascadero', 'CA', ARRAY[93423], 35.4827, -120.6858), - ('Somerset', 'KY', ARRAY[42501, 42533], 37.0815, -84.6091), - ('Stockbridge', 'GA', ARRAY[30281], 33.5253, -84.2294), - ('Manchester', 'CT', ARRAY[6040, 6041, 6045], 41.7801, -72.5192), - ('Williston', 'ND', ARRAY[58802, 58803], 48.1814, -103.6364), - ('Lake Magdalene', 'FL', ARRAY[33613, 33612], 28.0875, -82.4791), - ('Carney', 'MD', ARRAY[21057], 39.4050, -76.5236), - ('Maryville', 'TN', ARRAY[37804, 37801, 37802], 35.7468, -83.9789), - ('Walnut', 'CA', ARRAY[91788], 34.0334, -117.8593), - ('Kent', 'OH', ARRAY[44240, 44242], 41.1490, -81.3610), - ('North Chicago', 'IL', ARRAY[60064, 60086], 42.3172, -87.8596), - ('Greenville', 'MS', ARRAY[38703], 33.3850, -91.0514), - ('Duluth', 'GA', ARRAY[30096, 30026, 30029, 30095], 34.0053, -84.1492), - ('Sanford', 'ME', ARRAY[4083], 43.4244, -70.7573), - ('Drexel Heights', 'AZ', ARRAY[85746], 32.1457, -111.0478), - ('Oak Park', 'MI', ARRAY[48325], 42.4649, -83.1824), - ('Central', 'LA', ARRAY[70791, 70714, 70739, 70819], 30.5593, -91.0369), - ('Chicago Heights', 'IL', ARRAY[60412], 41.5101, -87.6345), - ('Norwood', 'MA', ARRAY[2060], 42.1861, -71.1948), - ('Wellesley', 'MA', ARRAY[2481, 2457], 42.3043, -71.2855), - ('Oak Ridge', 'TN', ARRAY[37831], 35.9639, -84.2938), - ('SeaTac', 'WA', ARRAY[98148, 98198, 98168, 98188], 47.4444, -122.2986), - ('Raytown', 'MO', ARRAY[64133], 38.9944, -94.4641), - ('Harrison', 'NY', ARRAY[10580, 10577, 10528], 41.0233, -73.7192), - ('Fernandina Beach', 'FL', ARRAY[32035], 30.6579, -81.4504), - ('Bella Vista', 'AR', ARRAY[72715], 36.4667, -94.2707), - ('East Haven', 'CT', ARRAY[6512], 41.2984, -72.8577), - ('Morrisville', 'NC', ARRAY[27650], 35.8367, -78.8348), - ('Casselberry', 'FL', ARRAY[32718], 28.6625, -81.3218), - ('Plattsburgh', 'NY', ARRAY[12903], 44.6951, -73.4563), - ('Seguin', 'TX', ARRAY[78156], 29.5889, -97.9671), - ('Agawam Town', 'MA', ARRAY[1001], 42.0657, -72.6526), - ('East Lake-Orient Park', 'FL', ARRAY[33619, 33610, 33617], 27.9971, -82.3653), - ('Burton', 'MI', ARRAY[48529, 48519], 42.9974, -83.6175), - ('Fleming Island', 'FL', ARRAY[32006], 30.0988, -81.7124), - ('Schererville', 'IN', ARRAY[46307], 41.4860, -87.4440), - ('West Springfield Town', 'MA', ARRAY[1090], 42.1253, -72.6503), - ('New Iberia', 'LA', ARRAY[70563], 30.0049, -91.8202), - ('Northampton', 'MA', ARRAY[1062, 1063, 1053, 1061], 42.3266, -72.6745), - ('Austintown', 'OH', ARRAY[44511], 41.0932, -80.7405), - ('Crofton', 'MD', ARRAY[21114], 39.0144, -76.6800), - ('Mehlville', 'MO', ARRAY[63125], 38.5018, -90.3149), - ('Zionsville', 'IN', ARRAY[46077, 46075], 39.9897, -86.3182), - ('Pasadena', 'MD', ARRAY[21060, 21226], 39.1552, -76.5537), - ('Winchester', 'NV', ARRAY[89169, 89121, 89199], 36.1368, -115.1299), - ('Vineyard', 'CA', ARRAY[95829], 38.4744, -121.3190), - ('Lumberton', 'NC', ARRAY[28360], 34.6312, -79.0186), - ('Jacksonville', 'AR', ARRAY[72076, 72078], 34.8807, -92.1302), - ('Rockledge', 'FL', ARRAY[32956], 28.3201, -80.7320), - ('Monterey', 'CA', ARRAY[93940, 93942, 93944], 36.5922, -121.8807), - ('Newburgh', 'NY', ARRAY[12555], 41.5037, -74.0205), - ('Granite City', 'IL', ARRAY[62040], 38.7292, -90.1266), - ('Aberdeen', 'SD', ARRAY[57402], 45.4646, -98.4680), - ('Perry Hall', 'MD', ARRAY[21234, 21128], 39.4067, -76.4781), - ('Yukon', 'OK', ARRAY[73085], 35.5201, -97.7639), - ('South Laurel', 'MD', ARRAY[20811], 39.0603, -76.8456), - ('Wisconsin Rapids', 'WI', ARRAY[54494], 44.3927, -89.8265), - ('Forest Hills', 'MI', ARRAY[49546, 49355, 49356, 49357], 42.9577, -85.4895), - ('Hobart', 'IN', ARRAY[46410], 41.5139, -87.2729), - ('New Smyrna Beach', 'FL', ARRAY[32168, 32170], 29.0249, -80.9651), - ('Fridley', 'MN', ARRAY[55432], 45.0841, -93.2595), - ('East Chicago', 'IN', ARRAY[46325], 41.6484, -87.4536), - ('Morgan City', 'LA', ARRAY[70381], 29.7041, -91.1920), - ('Ruston', 'LA', ARRAY[71270, 71273], 32.5329, -92.6363), - ('Jeffersontown', 'KY', ARRAY[40220, 40223], 38.2048, -85.5701), - ('Isla Vista', 'CA', ARRAY[93106, 93107], 34.4144, -119.8581), - ('Danvers', 'MA', ARRAY[1923], 42.5740, -70.9494), - ('Milton', 'MA', ARRAY[2187], 42.2413, -71.0844), - ('Statesville', 'NC', ARRAY[28677, 28687, 28688], 35.7842, -80.8714), - ('Short Pump', 'VA', ARRAY[23233], 37.6549, -77.6201), - ('Gladstone', 'MO', ARRAY[64118], 39.2133, -94.5593), - ('Fremont', 'NE', ARRAY[68026], 41.4396, -96.4879), - ('Garfield Heights', 'OH', ARRAY[44105], 41.4199, -81.6038), - ('Imperial Beach', 'CA', ARRAY[91932, 91933], 32.5689, -117.1184), - ('Seneca', 'SC', ARRAY[29678], 34.6815, -82.9609), - ('Lansing', 'IL', ARRAY[60411], 41.5648, -87.5462), - ('Paragould', 'AR', ARRAY[72451], 36.0555, -90.5149), - ('Oakleaf Plantation', 'FL', ARRAY[32073], 30.1689, -81.8337), - ('Prior Lake', 'MN', ARRAY[55379], 44.7251, -93.4409), - ('Easton', 'PA', ARRAY[18043, 18044], 40.6858, -75.2209), - ('West Whittier-Los Nietos', 'CA', ARRAY[90610], 33.9759, -118.0689), - ('Indiana', 'PA', ARRAY[15705], 40.6220, -79.1552), - ('Plum', 'PA', ARRAY[15068, 15239, 15147, 15268], 40.5024, -79.7496), - ('Mount Pleasant', 'WI', ARRAY[53406, 53403, 53177], 42.7129, -87.8875), - ('Burlington', 'MA', ARRAY[1805], 42.5022, -71.2027), - ('Waterville', 'ME', ARRAY[4903], 44.5441, -69.6624), - ('Norfolk', 'NE', ARRAY[68702], 42.0327, -97.4208), - ('Shaker Heights', 'OH', ARRAY[44120], 41.4744, -81.5496), - ('Brownsburg', 'IN', ARRAY[46112], 39.8330, -86.3824), - ('Shelby', 'NC', ARRAY[28150], 35.2904, -81.5451), - ('Maryland Heights', 'MO', ARRAY[63146], 38.7189, -90.4749), - ('Reisterstown', 'MD', ARRAY[21136], 39.4552, -76.8144), - ('Kinston', 'NC', ARRAY[28504, 28502, 28503], 35.2748, -77.5936), - ('Searcy', 'AR', ARRAY[72143], 35.2418, -91.7351), - ('West Chicago', 'IL', ARRAY[60186], 41.8960, -88.2253), - ('Lemon Grove', 'CA', ARRAY[91946], 32.7331, -117.0344), - ('Immokalee', 'FL', ARRAY[34143], 26.4253, -81.4251), - ('McDonough', 'GA', ARRAY[30252], 33.4399, -84.1509), - ('Bayonet Point', 'FL', ARRAY[34668], 28.3254, -82.6834), - ('Alvin', 'TX', ARRAY[77583, 77512], 29.3871, -95.2933), - ('Lebanon', 'NH', ARRAY[3766, 3756], 43.6353, -72.2531), - ('Thomasville', 'NC', ARRAY[27361], 35.8813, -80.0807), - ('Ilchester', 'MD', ARRAY[21075], 39.2187, -76.7684), - ('Temple Terrace', 'FL', ARRAY[33617], 28.0437, -82.3774), - ('Citrus Park', 'FL', ARRAY[33556], 28.0730, -82.5628), - ('Sedalia', 'MO', ARRAY[65302], 38.7042, -93.2351), - ('Bessemer', 'AL', ARRAY[35020, 35021], 33.3709, -86.9713), - ('Batavia', 'IL', ARRAY[60510], 41.8479, -88.3110), - ('Garden City', 'MI', ARRAY[48136], 42.3244, -83.3412), - ('Chanhassen', 'MN', ARRAY[55317, 55318], 44.8544, -93.5621), - ('Vicksburg', 'MS', ARRAY[39183, 39181, 39182], 32.3173, -90.8868), - ('University Park', 'FL', ARRAY[33165, 33199], 25.7469, -80.3684), - ('Troy', 'OH', ARRAY[45374], 40.0436, -84.2191), - ('West Odessa', 'TX', ARRAY[79764], 31.8388, -102.4996), - ('Hercules', 'CA', ARRAY[94553], 38.0064, -122.2564), - ('Lake City', 'FL', ARRAY[32025, 32056], 30.1901, -82.6470), - ('Lochearn', 'MD', ARRAY[21207], 39.3460, -76.7307), - ('Wethersfield', 'CT', ARRAY[6129, 6161], 41.7013, -72.6703), - ('Paramus', 'NJ', ARRAY[7653], 40.9455, -74.0712), - ('Greenville', 'TX', ARRAY[75402, 75404], 33.1116, -96.1098), - ('Okeechobee', 'FL', ARRAY[34974], 27.2414, -80.8298), - ('Edgewood', 'MD', ARRAY[21010, 21040], 39.4210, -76.2968), - ('Moscow', 'ID', ARRAY[83844], 46.7307, -116.9986), - ('Sebastian', 'FL', ARRAY[32978], 27.7882, -80.4813), - ('Northport', 'AL', ARRAY[35475, 35476, 35452], 33.2589, -87.5984), - ('Natchez', 'MS', ARRAY[39121, 39122], 31.5437, -91.3867), - ('Winchester', 'KY', ARRAY[40392], 38.0017, -84.1907), - ('East St. Louis', 'IL', ARRAY[62205, 62204, 62203, 62201], 38.6156, -90.1304), - ('Belmont', 'MA', ARRAY[2479], 42.3960, -71.1795), - ('Paris', 'TX', ARRAY[75460, 75461], 33.6688, -95.5460), - ('Mason City', 'IA', ARRAY[50402], 43.1487, -93.1998), - ('Timberwood Park', 'TX', ARRAY[78260], 29.6994, -98.4838), - ('Medina', 'OH', ARRAY[44258], 41.1358, -81.8694), - ('Conway', 'SC', ARRAY[29526], 33.8399, -79.0424), - ('Española', 'NM', ARRAY[87532, 87533], 36.0041, -106.0669), - ('Laurel', 'MS', ARRAY[39443], 31.6956, -89.1448), - ('Green', 'OH', ARRAY[44312, 44319, 44216, 44720], 40.9483, -81.4757), - ('Decatur', 'GA', ARRAY[30031, 30036], 33.7711, -84.2968), - ('Madison', 'MS', ARRAY[39130], 32.4738, -90.1300), - ('Lancaster', 'SC', ARRAY[29722], 34.7247, -80.7801), - ('South Bradenton', 'FL', ARRAY[34207, 34210], 27.4612, -82.5821), - ('Laurel', 'MD', ARRAY[20709, 20725, 20726], 39.0950, -76.8622), - ('South Salt Lake', 'UT', ARRAY[84115, 84165], 40.7056, -111.8986), - ('Sevierville', 'TN', ARRAY[37764, 37876, 37864], 35.8873, -83.5677), - ('Holt', 'MI', ARRAY[48911], 42.6416, -84.5307), - ('San Lorenzo', 'CA', ARRAY[94580], 37.6737, -122.1349), - ('Claremore', 'OK', ARRAY[74017, 74018], 36.3143, -95.6099), - ('Homewood', 'AL', ARRAY[35209, 35142], 33.4617, -86.8092), - ('Dedham', 'MA', ARRAY[2027], 42.2466, -71.1777), - ('Middle River', 'MD', ARRAY[21221], 39.3345, -76.4318), - ('South Pasadena', 'CA', ARRAY[91031], 34.1103, -118.1573), - ('Salem', 'VA', ARRAY[24155, 24157], 37.2864, -80.0555), - ('Caledonia', 'WI', ARRAY[53404, 53406, 53402, 53126], 42.7986, -87.8762), - ('Coral Terrace', 'FL', ARRAY[33155], 25.7464, -80.3049), - ('Edwardsville', 'IL', ARRAY[62048, 62026], 38.7923, -89.9877), - ('Fajardo', 'PR', ARRAY[738], 18.3330, -65.6592), - ('Palm City', 'FL', ARRAY[34991], 27.1736, -80.2861), - ('Palm Springs', 'FL', ARRAY[33406], 26.6349, -80.0968), - ('Riverside', 'OH', ARRAY[45431, 45404, 45424], 39.7836, -84.1219), - ('Hazelwood', 'MO', ARRAY[63031], 38.7931, -90.3899), - ('Scottsbluff', 'NE', ARRAY[69363], 41.8684, -103.6616), - ('Canyon Lake', 'TX', ARRAY[78132, 78133, 78070], 29.8761, -98.2611), - ('Reading', 'MA', ARRAY[1813], 42.5351, -71.1056), - ('Columbine', 'CO', ARRAY[80123], 39.5879, -105.0694), - ('Juneau', 'AK', ARRAY[99801, 99802, 99803, 99811], 58.4546, -134.1739), - ('Ridgewood', 'NJ', ARRAY[7451], 40.9822, -74.1128), - ('Yucca Valley', 'CA', ARRAY[92286], 34.1234, -116.4216), - ('Branson', 'MO', ARRAY[65615], 36.6510, -93.2635), - ('Balch Springs', 'TX', ARRAY[75181], 32.7194, -96.6151), - ('University Park', 'TX', ARRAY[75205, 75275], 32.8506, -96.7937), - ('De Pere', 'WI', ARRAY[54344], 44.4309, -88.0785), - ('Marysville', 'OH', ARRAY[43041], 40.2278, -83.3595), - ('Cataño', 'PR', ARRAY[965, 963], 18.4415, -66.1388), - ('Clayton', 'NC', ARRAY[27527, 27528], 35.6591, -78.4499), - ('Brookings', 'SD', ARRAY[57007], 44.3022, -96.7859), - ('Walker', 'MI', ARRAY[49534], 42.9853, -85.7446), - ('Fairland', 'MD', ARRAY[20904, 20905], 39.0804, -76.9527), - ('North Tustin', 'CA', ARRAY[92705, 92711], 33.7644, -117.7945), - ('Melrose Park', 'IL', ARRAY[60163, 60161], 41.9029, -87.8642), - ('Norton Shores', 'MI', ARRAY[49444], 43.1621, -86.2519), - ('Keystone', 'FL', ARRAY[33556, 33558], 28.1312, -82.5999), - ('Herndon', 'VA', ARRAY[20172, 20192, 22095], 38.9699, -77.3867), - ('Bailey''s Crossroads', 'VA', ARRAY[22311], 38.8477, -77.1305), - ('Chantilly', 'VA', ARRAY[20153], 38.8868, -77.4453), - ('Rockville Centre', 'NY', ARRAY[11571], 40.6644, -73.6383), - ('Palmetto Bay', 'FL', ARRAY[33157], 25.6220, -80.3221), - ('Lathrop', 'CA', ARRAY[95231], 37.8090, -121.3131), - ('Loma Linda', 'CA', ARRAY[92324, 92373, 92318, 92350], 34.0451, -117.2498), - ('Tifton', 'GA', ARRAY[31794], 31.4625, -83.5205), - ('Suitland', 'MD', ARRAY[20747, 20233, 20395, 20752], 38.8492, -76.9225), - ('Clinton', 'MS', ARRAY[39058, 39060], 32.3540, -90.3403), - ('Trotwood', 'OH', ARRAY[45426, 45417, 45416], 39.7927, -84.3165), - ('West Memphis', 'AR', ARRAY[72364, 72303], 35.1531, -90.1995), - ('Mequon', 'WI', ARRAY[53092], 43.2352, -87.9838), - ('Shelbyville', 'KY', ARRAY[40066], 38.2069, -85.2293), - ('Newport', 'RI', ARRAY[2840], 41.4803, -71.3205), - ('San Fernando', 'CA', ARRAY[91341], 34.2886, -118.4363), - ('Saginaw', 'TX', ARRAY[76179], 32.8657, -97.3654), - ('Port Angeles', 'WA', ARRAY[98362], 48.1142, -123.4565), - ('Thomasville', 'GA', ARRAY[31758, 31799], 30.8394, -83.9782), - ('Ponca City', 'OK', ARRAY[74604], 36.7235, -97.0679), - ('Lincolnton', 'NC', ARRAY[28093], 35.4747, -81.2385), - ('Simpsonville', 'SC', ARRAY[29681], 34.7287, -82.2573), - ('Fort Washington', 'MD', ARRAY[20749], 38.7339, -77.0069), - ('North Potomac', 'MD', ARRAY[20850], 39.0955, -77.2372), - ('Ridgeland', 'MS', ARRAY[39158], 32.4236, -90.1481), - ('Hastings', 'NE', ARRAY[68902], 40.5963, -98.3914), - ('Waukee', 'IA', ARRAY[50003], 41.5984, -93.8872), - ('Vero Beach South', 'FL', ARRAY[32968, 32966, 32962], 27.6164, -80.4130), - ('Wadsworth', 'OH', ARRAY[44282], 41.0279, -81.7324), - ('Tumwater', 'WA', ARRAY[98512, 98511, 98599], 46.9890, -122.9173), - ('Fairfax', 'VA', ARRAY[22031, 20030, 22038], 38.8531, -77.2998), - ('Venice', 'FL', ARRAY[34292, 34275, 34284], 27.1163, -82.4135), - ('Cottage Lake', 'WA', ARRAY[98077], 47.7466, -122.0755), - ('Edgewater', 'FL', ARRAY[32168, 32132], 28.9594, -80.9407), - ('Okemos', 'MI', ARRAY[48805], 42.7057, -84.4135), - ('Pelham', 'AL', ARRAY[35124], 33.3114, -86.7573), - ('Seal Beach', 'CA', ARRAY[90743, 90740], 33.7542, -118.0714), - ('Calabasas', 'CA', ARRAY[91372], 34.1375, -118.6689), - ('North Augusta', 'SC', ARRAY[29841, 29861], 33.5214, -81.9547), - ('Jenks', 'OK', ARRAY[74037], 35.9981, -95.9737), - ('Bloomingdale', 'FL', ARRAY[33596], 27.8784, -82.2624), - ('Tysons', 'VA', ARRAY[22182, 22036, 22103], 38.9215, -77.2273), - ('Coronado', 'CA', ARRAY[92135, 92118, 92178], 32.6640, -117.1600), - ('Copiague', 'NY', ARRAY[11757, 11701], 40.6728, -73.3932), - ('Oak Ridge', 'FL', ARRAY[32839], 28.4727, -81.4169), - ('Centerville', 'OH', ARRAY[45458], 39.6339, -84.1449), - ('Greeneville', 'TN', ARRAY[37743, 37744], 36.1680, -82.8197), - ('Van Buren', 'AR', ARRAY[72957], 35.4480, -94.3528), - ('Waycross', 'GA', ARRAY[31503], 31.2108, -82.3579), - ('Ashland', 'CA', ARRAY[94580, 94578], 37.6942, -122.1159), - ('West Puente Valley', 'CA', ARRAY[91744], 34.0512, -117.9681), - ('Jacksonville Beach', 'FL', ARRAY[32240], 30.2782, -81.4045), - ('Palm River-Clair Mel', 'FL', ARRAY[33578], 27.9239, -82.3791), - ('Rosemont', 'CA', ARRAY[95826], 38.5477, -121.3553), - ('Chalmette', 'LA', ARRAY[70044], 29.9437, -89.9659), - ('Romulus', 'MI', ARRAY[48242], 42.2237, -83.3660), - ('Clarksburg', 'MD', ARRAY[20876, 20871], 39.2314, -77.2617), - ('Leland', 'NC', ARRAY[28479], 34.2044, -78.0277), - ('Benbrook', 'TX', ARRAY[76126], 32.6787, -97.4638), - ('Sun City Center', 'FL', ARRAY[33573, 33571], 27.7149, -82.3569), - ('Montrose', 'CO', ARRAY[81401], 38.4690, -107.8590), - ('Ruskin', 'FL', ARRAY[33575], 27.7065, -82.4209), - ('Hialeah Gardens', 'FL', ARRAY[33018], 25.8878, -80.3569), - ('Columbus', 'NE', ARRAY[68602], 41.4368, -97.3563), - ('Plainview', 'TX', ARRAY[79073], 34.1911, -101.7234), - ('Auburn', 'ME', ARRAY[4211, 4212, 4223], 44.0850, -70.2492), - ('Loves Park', 'IL', ARRAY[61011, 61130, 61131, 61132], 42.3364, -88.9975), - ('Greenbelt', 'MD', ARRAY[20770, 20768], 38.9953, -76.8885), - ('Kenmore', 'WA', ARRAY[98034], 47.7516, -122.2489), - ('Winter Gardens', 'CA', ARRAY[92040], 32.8376, -116.9268), - ('Rockingham', 'NC', ARRAY[28380], 34.9386, -79.7608), - ('Greenfield', 'IN', ARRAY[46129], 39.7936, -85.7737), - ('Watertown', 'WI', ARRAY[53094], 43.1893, -88.7285), - ('Frederickson', 'WA', ARRAY[98375, 98446], 47.0914, -122.3594), - ('West Rancho Dominguez', 'CA', ARRAY[90061, 90059, 90220], 33.9057, -118.2682), - ('Gallup', 'NM', ARRAY[87322], 35.5183, -108.7423), - ('Radcliff', 'KY', ARRAY[42701, 40159], 37.8206, -85.9366), - ('Crystal', 'MN', ARRAY[55427, 55429, 55428], 45.0377, -93.3599), - ('Dickinson', 'ND', ARRAY[58602], 46.8917, -102.7924), - ('Allison Park', 'PA', ARRAY[15091], 40.5730, -79.9603), - ('Ensley', 'FL', ARRAY[32534], 30.5261, -87.2735), - ('Laguna Beach', 'CA', ARRAY[92652], 33.5448, -117.7612), - ('Acworth', 'GA', ARRAY[30101], 34.0566, -84.6715), - ('Griffin', 'GA', ARRAY[30223], 33.2418, -84.2747), - ('Corsicana', 'TX', ARRAY[75109], 32.0824, -96.4665), - ('Elizabeth City', 'NC', ARRAY[27907], 36.2943, -76.2361), - ('Fairhope', 'AL', ARRAY[36533], 30.5217, -87.8815), - ('Braidwood', 'IL', ARRAY[60408, 60481], 41.2696, -88.2235), - ('Trussville', 'AL', ARRAY[35173, 35015], 33.6404, -86.5819), - ('Meadville', 'PA', ARRAY[16388], 41.6476, -80.1468), - ('Lakeside', 'CA', ARRAY[92040], 32.8560, -116.9040), - ('Happy Valley', 'OR', ARRAY[97089, 97086], 45.4362, -122.5077), - ('West Carson', 'CA', ARRAY[90502], 33.8229, -118.2931), - ('Northdale', 'FL', ARRAY[33548, 33558], 28.1058, -82.5263), - ('Fort Walton Beach', 'FL', ARRAY[32547], 30.4249, -86.6194), - ('Christiansburg', 'VA', ARRAY[24068], 37.1411, -80.4028), - ('Garden City', 'NY', ARRAY[11531, 11599], 40.7266, -73.6447), - ('Granite Bay', 'CA', ARRAY[95650], 38.7601, -121.1714), - ('Willowbrook', 'CA', ARRAY[90222], 33.9199, -118.2362), - ('Union City', 'GA', ARRAY[30291, 30213], 33.5941, -84.5629), - ('Derry', 'NH', ARRAY[3041], 42.8941, -71.2848), - ('Prairie Village', 'KS', ARRAY[66207], 38.9874, -94.6361), - ('Kuna', 'ID', ARRAY[83642], 43.4869, -116.3986), - ('Fort Mill', 'SC', ARRAY[29716], 35.0062, -80.9388), - ('Hayesville', 'OR', ARRAY[97309], 44.9794, -122.9739), - ('Hudson', 'OH', ARRAY[44237, 44326], 41.2399, -81.4408), - ('Mukwonago', 'WI', ARRAY[53120], 42.8566, -88.3269), - ('Lexington', 'SC', ARRAY[29071], 33.9890, -81.2202), - ('Lino Lakes', 'MN', ARRAY[55038], 45.1679, -93.0830), - ('Augusta', 'ME', ARRAY[4332, 4333, 4336, 4338], 44.3341, -69.7319), - ('Corinth', 'TX', ARRAY[76210], 33.1435, -97.0681), - ('Naples', 'FL', ARRAY[34102, 34101, 34105, 34104], 26.1504, -81.7936), - ('Monsey', 'NY', ARRAY[10977], 41.1181, -74.0681), - ('Cockeysville', 'MD', ARRAY[21030, 21093, 21065], 39.4793, -76.6300), - ('Guayama', 'PR', ARRAY[785], 17.9744, -66.1104), - ('Brent', 'FL', ARRAY[32503], 30.4729, -87.2496), - ('Silver Firs', 'WA', ARRAY[98012, 98208], 47.8635, -122.1497), - ('Landover', 'MD', ARRAY[20785], 38.9241, -76.8875), - ('Union Hill-Novelty Hill', 'WA', ARRAY[98077], 47.6788, -122.0284), - ('Rose Hill', 'VA', ARRAY[22310], 38.7872, -77.1085), - ('Port Hueneme', 'CA', ARRAY[93043, 93044], 34.1617, -119.2036), - ('Keene', 'NH', ARRAY[3435], 42.9494, -72.2997), - ('Summit', 'NJ', ARRAY[7902], 40.7154, -74.3647), - ('Secaucus', 'NJ', ARRAY[7096], 40.7810, -74.0659), - ('Golden Valley', 'MN', ARRAY[55427, 55426, 55416], 44.9901, -93.3591), - ('Bloomingdale', 'IL', ARRAY[60117], 41.9497, -88.0895), - ('Shelbyville', 'TN', ARRAY[37161, 37162], 35.4987, -86.4516), - ('Shafter', 'CA', ARRAY[93314], 35.4794, -119.2013), - ('Brownwood', 'TX', ARRAY[76802], 31.7127, -98.9767), - ('Katy', 'TX', ARRAY[77494, 77491, 77492], 29.7904, -95.8353), - ('Green Valley', 'AZ', ARRAY[85614], 31.8436, -111.0174), - ('Del City', 'OK', ARRAY[73117], 35.4483, -97.4408), - ('North Lynnwood', 'WA', ARRAY[98037], 47.8533, -122.2762), - ('Camp Springs', 'MD', ARRAY[20746, 20748], 38.8052, -76.9198), - ('Hamtramck', 'MI', ARRAY[48212], 42.3954, -83.0560), - ('La Porte', 'IN', ARRAY[46352], 41.6077, -86.7136), - ('Clarksville', 'IN', ARRAY[47172], 38.3221, -85.7673), - ('Biddeford', 'ME', ARRAY[4006, 4007], 43.4674, -70.4512), - ('St. Andrews', 'SC', ARRAY[29210], 34.0510, -81.1057), - ('Holiday', 'FL', ARRAY[34690, 34692], 28.1864, -82.7429), - ('Lutz', 'FL', ARRAY[33549, 33559, 33647], 28.1396, -82.4467), - ('Prichard', 'AL', ARRAY[36610, 36613, 36612], 30.7735, -88.1301), - ('Birmingham', 'MI', ARRAY[48012], 42.5447, -83.2166), - ('Easley', 'SC', ARRAY[29640], 34.8190, -82.5828), - ('Bear', 'DE', ARRAY[19702], 39.6188, -75.6804), - ('Marshall', 'TX', ARRAY[75670, 75671], 32.5370, -94.3515), - ('DeBary', 'FL', ARRAY[32753], 28.8815, -81.3240), - ('Eustis', 'FL', ARRAY[32736, 32627, 32727], 28.8560, -81.6781), - ('Salmon Creek', 'WA', ARRAY[98685], 45.7099, -122.6632), - ('South Euclid', 'OH', ARRAY[44143], 41.5239, -81.5245), - ('North Plainfield', 'NJ', ARRAY[7060], 40.6209, -74.4386), - ('Lealman', 'FL', ARRAY[33709, 33714], 27.8197, -82.6847), - ('Sapulpa', 'OK', ARRAY[74066, 74067], 36.0089, -96.1006), - ('Duarte', 'CA', ARRAY[91009], 34.1610, -117.9504), - ('Ardmore', 'OK', ARRAY[73402, 73403], 34.1944, -97.1253), - ('West Pensacola', 'FL', ARRAY[32506, 32507], 30.4263, -87.2679), - ('Oxford', 'AL', ARRAY[36203, 36253], 33.5967, -85.8687), - ('Evans', 'CO', ARRAY[80634, 80620], 40.3660, -104.7389), - ('Carrboro', 'NC', ARRAY[27510], 35.9260, -79.0878), - ('Gaffney', 'SC', ARRAY[29340, 29342], 35.0742, -81.6558), - ('Sidney', 'OH', ARRAY[45367], 40.2891, -84.1667), - ('Silverdale', 'WA', ARRAY[98370, 98383], 47.6663, -122.6828), - ('Rolla', 'MO', ARRAY[65409], 37.9458, -91.7608), - ('Pleasant Prairie', 'WI', ARRAY[53158], 42.5266, -87.8895), - ('Sweetwater', 'FL', ARRAY[33174], 25.7786, -80.3760), - ('Milwaukie', 'OR', ARRAY[97269], 45.4447, -122.6221), - ('Bryant', 'AR', ARRAY[72022, 72089], 34.6152, -92.4914), - ('Wade Hampton', 'SC', ARRAY[29609, 29687], 34.8821, -82.3336), - ('Makakilo', 'HI', ARRAY[96709], 21.3591, -158.0813), - ('New Hope', 'MN', ARRAY[55428], 45.0374, -93.3869), - ('Mill Creek', 'WA', ARRAY[98082], 47.8631, -122.2037), - ('Clemmons', 'NC', ARRAY[27103, 27102], 36.0319, -80.3861), - ('Stephenville', 'TX', ARRAY[76402], 32.2148, -98.2205), - ('Dyersburg', 'TN', ARRAY[38025], 36.0465, -89.3777), - ('Bayou Cane', 'LA', ARRAY[70364], 29.6244, -90.7510), - ('Lake Ronkonkoma', 'NY', ARRAY[11779], 40.8308, -73.1112), - ('Allendale', 'MI', ARRAY[49401], 42.9851, -85.9509), - ('Golden', 'CO', ARRAY[80403, 80419, 80402], 39.7406, -105.2118), - ('Harvey', 'LA', ARRAY[70059], 29.8876, -90.0666), - ('Gardner', 'MA', ARRAY[1441], 42.5845, -71.9867), - ('Havelock', 'NC', ARRAY[28532], 34.9078, -76.8987), - ('East Moline', 'IL', ARRAY[61236, 61257], 41.5199, -90.3879), - ('Yorkville', 'IL', ARRAY[60512], 41.6562, -88.4507), - ('South San Jose Hills', 'CA', ARRAY[91792], 34.0123, -117.9041), - ('Clifton', 'CO', ARRAY[81504], 39.0763, -108.4606), - ('Lynn Haven', 'FL', ARRAY[32404, 32444], 30.2337, -85.6370), - ('Ferguson', 'MO', ARRAY[63135], 38.7490, -90.2950), - ('Alice', 'TX', ARRAY[78333], 27.7556, -98.0653), - ('Montclair', 'VA', ARRAY[22025], 38.6111, -77.3400), - ('Papillion', 'NE', ARRAY[68138], 41.1516, -96.0679), - ('Crest Hill', 'IL', ARRAY[60441, 60434], 41.5723, -88.1124), - ('Poplar Bluff', 'MO', ARRAY[63901], 36.7632, -90.4136), - ('Tukwila', 'WA', ARRAY[98178, 98168, 98188, 98190], 47.4749, -122.2727), - ('Duncan', 'OK', ARRAY[73055, 73534, 73536], 34.5424, -97.9190), - ('Bothell West', 'WA', ARRAY[98036, 98012], 47.8056, -122.2401), - ('Mountain Brook', 'AL', ARRAY[35243, 35223], 33.4871, -86.7400), - ('Rotterdam', 'NY', ARRAY[12303], 42.7786, -73.9536), - ('Amherst Center', 'MA', ARRAY[1003, 1004], 42.3757, -72.5188), - ('Agoura Hills', 'CA', ARRAY[91376], 34.1510, -118.7608), - ('Durango', 'CO', ARRAY[81303, 81302], 37.2659, -107.8782), - ('Howard', 'WI', ARRAY[54303], 44.5703, -88.0920), - ('Monmouth', 'OR', ARRAY[97351], 44.8505, -123.2283), - ('Ypsilanti', 'MI', ARRAY[48197], 42.2437, -83.6205), - ('Bartow', 'FL', ARRAY[33880, 33835], 27.8868, -81.8213), - ('Ashland', 'KY', ARRAY[41101], 38.4592, -82.6449), - ('Miamisburg', 'OH', ARRAY[45343], 39.6323, -84.2725), - ('East Northport', 'NY', ARRAY[11731], 40.8792, -73.3232), - ('Germantown', 'WI', ARRAY[53022], 43.2343, -88.1217), - ('Sulphur', 'LA', ARRAY[70665, 70664], 30.2286, -93.3565), - ('Fish Hawk', 'FL', ARRAY[33569], 27.8511, -82.2164), - ('Middleton', 'WI', ARRAY[53597], 43.1065, -89.5058), - ('West Chester', 'PA', ARRAY[19382, 19383, 19381], 39.9601, -75.6058), - ('Brushy Creek', 'TX', ARRAY[78717], 30.5125, -97.7388), - ('Forest Park', 'GA', ARRAY[30294, 30298], 33.6209, -84.3590), - ('La Cañada Flintridge', 'CA', ARRAY[91012], 34.2097, -118.2002), - ('Safford', 'AZ', ARRAY[85548], 32.8317, -109.7005), - ('Eastchester', 'NY', ARRAY[10709, 10583], 40.9578, -73.8079), - ('Merrick', 'NY', ARRAY[11520], 40.6515, -73.5535), - ('Greenwood', 'MS', ARRAY[38935], 33.5126, -90.1993), - ('Martha Lake', 'WA', ARRAY[98012, 98208], 47.8479, -122.2327), - ('Valley', 'AL', ARRAY[36872], 32.8088, -85.1809), - ('Helena', 'AL', ARRAY[35080], 33.2845, -86.8756), - ('Cullman', 'AL', ARRAY[35057, 35055, 35056], 34.1777, -86.8407), - ('Sand Springs', 'OK', ARRAY[74063], 36.1342, -96.1284), - ('Cameron Park', 'CA', ARRAY[95682], 38.6737, -120.9872), - ('White Oak', 'OH', ARRAY[45239], 39.2106, -84.6061), - ('Vernal', 'UT', ARRAY[84008], 40.4517, -109.5379), - ('Ballenger Creek', 'MD', ARRAY[21703], 39.3807, -77.4205), - ('Schofield Barracks', 'HI', ARRAY[96786], 21.4936, -158.0617), - ('Norwood', 'OH', ARRAY[45280], 39.1605, -84.4535), - ('Selma', 'AL', ARRAY[36701], 32.4166, -87.0336), - ('Rockport', 'TX', ARRAY[78381], 28.0290, -97.0722), - ('Cherry Hill', 'VA', ARRAY[22026], 38.5696, -77.2895), - ('Franconia', 'VA', ARRAY[22315], 38.7682, -77.1587), - ('Haslett', 'MI', ARRAY[48823], 42.7525, -84.4020), - ('West Mifflin', 'PA', ARRAY[15123], 40.3581, -79.9072), - ('Casa de Oro-Mount Helix', 'CA', ARRAY[91941, 92020, 91976], 32.7640, -116.9687), - ('Stillwater', 'MN', ARRAY[55083], 45.0573, -92.8313), - ('Eloy', 'AZ', ARRAY[85194, 85193, 85123], 32.7470, -111.5991), - ('Rio Rico', 'AZ', ARRAY[85648], 31.4957, -110.9886), - ('Murrysville', 'PA', ARRAY[15632, 15626], 40.4456, -79.6555), - ('Prunedale', 'CA', ARRAY[95004, 93907], 36.8064, -121.6555), - ('Hauppauge', 'NY', ARRAY[11788, 11760], 40.8217, -73.2119), - ('Syosset', 'NY', ARRAY[11773], 40.8156, -73.5020), - ('Baldwin', 'PA', ARRAY[15227], 40.3690, -79.9668), - ('Meadowbrook', 'VA', ARRAY[23237], 37.4301, -77.4740), - ('Danville', 'KY', ARRAY[40423], 37.6418, -84.7777), - ('South Burlington', 'VT', ARRAY[5407], 44.4622, -73.2203), - ('La Crescenta-Montrose', 'CA', ARRAY[91020, 91021], 34.2322, -118.2353), - ('Apollo Beach', 'FL', ARRAY[33572], 27.7618, -82.4002), - ('Matteson', 'IL', ARRAY[60443], 41.5095, -87.7468), - ('Holtsville', 'NY', ARRAY[501, 544], 40.8124, -73.0447), - ('Rosedale', 'MD', ARRAY[21206], 39.3266, -76.5084), - ('Durant', 'OK', ARRAY[74702], 33.9957, -96.3938), - ('Linda', 'CA', ARRAY[95901], 39.1241, -121.5421), - ('Corning', 'NY', ARRAY[14831], 42.1470, -77.0561), - ('Langley Park', 'MD', ARRAY[20903], 38.9897, -76.9808), - ('Morristown', 'NJ', ARRAY[7963], 40.7966, -74.4772), - ('Erlanger', 'KY', ARRAY[41017, 41051], 39.0109, -84.5864), - ('North Valley Stream', 'NY', ARRAY[11003], 40.6840, -73.7077), - ('Westbrook', 'ME', ARRAY[4098], 43.6954, -70.3539), - ('Fox Crossing', 'WI', ARRAY[54956], 44.2229, -88.4763), - ('White Oak', 'MD', ARRAY[20904, 20903, 20993], 39.0433, -76.9906), - ('McKeesport', 'PA', ARRAY[15134], 40.3419, -79.8439), - ('Bellaire', 'TX', ARRAY[77402], 29.7040, -95.4622), - ('Lexington', 'NC', ARRAY[27295, 27294], 35.8017, -80.2682), - ('Whitehall', 'OH', ARRAY[43219], 39.9682, -82.8833), - ('Natchitoches', 'LA', ARRAY[71469, 71458, 71497], 31.7317, -93.0979), - ('Seminole', 'FL', ARRAY[33777, 33778, 33775], 27.8435, -82.7839), - ('North Amityville', 'NY', ARRAY[11701], 40.7005, -73.4118), - ('St. John', 'IN', ARRAY[46311], 41.4431, -87.4700), - ('Grandview', 'WA', ARRAY[98930], 46.2444, -119.9091), - ('Marshfield', 'WI', ARRAY[54404], 44.6627, -90.1728), - ('Franklin Farm', 'VA', ARRAY[20171], 38.9133, -77.3969), - ('Avon', 'IN', ARRAY[46213], 39.7603, -86.3917), - ('Westminster', 'MD', ARRAY[21157], 39.5796, -77.0066), - ('Cocoa', 'FL', ARRAY[32926, 32923, 32924], 28.3820, -80.7674), - ('Moultrie', 'GA', ARRAY[31788, 31776], 31.1591, -83.7708), - ('Winthrop Town', 'MA', ARRAY[2152], 42.3751, -70.9847), - ('Rancho Mirage', 'CA', ARRAY[92263], 33.7634, -116.4271), - ('Gautier', 'MS', ARRAY[39564], 30.4106, -88.6568), - ('Humacao', 'PR', ARRAY[792], 18.1519, -65.8204), - ('Hopkins', 'MN', ARRAY[55343], 44.9261, -93.4056), - ('Mesquite', 'NV', ARRAY[89027, 89024, 89034], 36.8035, -114.1325), - ('Idylwood', 'VA', ARRAY[22043], 38.8896, -77.2055), - ('Berea', 'KY', ARRAY[40403], 37.5904, -84.2898), - ('Seabrook', 'MD', ARRAY[20771], 38.9802, -76.8502), - ('East Massapequa', 'NY', ARRAY[11758], 40.6743, -73.4358), - ('Wallingford Center', 'CT', ARRAY[6494, 6495], 41.4499, -72.8189), - ('Cimarron Hills', 'CO', ARRAY[80922], 38.8597, -104.6995), - ('Kilgore', 'TX', ARRAY[75663], 32.3979, -94.8603), - ('Radford', 'VA', ARRAY[24141, 24143], 37.1229, -80.5587), - ('Palestine', 'TX', ARRAY[75803, 75882], 31.7544, -95.6471), - ('Hyattsville', 'MD', ARRAY[20782, 20787, 20788], 38.9612, -76.9548), - ('Lake Placid', 'FL', ARRAY[33862], 27.2977, -81.3715), - ('Somerset', 'MA', ARRAY[2725], 41.7404, -71.1612), - ('St. Michael', 'MN', ARRAY[55376], 45.2014, -93.6920), - ('Rutland', 'VT', ARRAY[5702], 43.6091, -72.9782), - ('Imperial', 'CA', ARRAY[92255], 32.8390, -115.5719), - ('Orange', 'TX', ARRAY[77632], 30.1210, -93.7616), - ('Otsego', 'MN', ARRAY[55330, 55362], 45.2660, -93.6200), - ('St. Matthews', 'KY', ARRAY[40207], 38.2497, -85.6383), - ('Tullahoma', 'TN', ARRAY[37388], 35.3721, -86.2173), - ('Calverton', 'MD', ARRAY[20904], 39.0578, -76.9488), - ('Manchester', 'MO', ARRAY[63011], 38.5830, -90.5065), - ('North Wilkesboro', 'NC', ARRAY[28656], 36.1728, -81.1390), - ('Bensenville', 'IL', ARRAY[60105, 60399], 41.9593, -87.9433), - ('Eastlake', 'OH', ARRAY[44097], 41.6581, -81.4323), - ('Fayetteville', 'GA', ARRAY[30215], 33.4500, -84.4709), - ('Sunland Park', 'NM', ARRAY[88008], 31.8194, -106.5943), - ('El Reno', 'OK', ARRAY[73022], 35.5430, -97.9660), - ('Marco Island', 'FL', ARRAY[34140, 34146], 25.9330, -81.6993), - ('Ingleside', 'TX', ARRAY[78362], 27.8700, -97.2077), - ('Islip', 'NY', ARRAY[11706], 40.7357, -73.2158), - ('Lenoir', 'NC', ARRAY[28633], 35.9096, -81.5247), - ('Melville', 'NY', ARRAY[11775], 40.7823, -73.4088), - ('Ocean Springs', 'MS', ARRAY[39566], 30.4082, -88.7861), - ('Knightdale', 'NC', ARRAY[27545], 35.7918, -78.4955), - ('Crossville', 'TN', ARRAY[38555], 35.9527, -85.0294), - ('Tillmans Corner', 'AL', ARRAY[36619], 30.5818, -88.2128), - ('Glenvar Heights', 'FL', ARRAY[33155], 25.7090, -80.3156), - ('Jenison', 'MI', ARRAY[49429], 42.9063, -85.8269), - ('Merrifield', 'VA', ARRAY[22042, 22180, 22082, 22116], 38.8731, -77.2426), - ('Moraga', 'CA', ARRAY[94575], 37.8439, -122.1225), - ('Steubenville', 'OH', ARRAY[43953], 40.3653, -80.6520), - ('Takoma Park', 'MD', ARRAY[20913], 38.9810, -77.0028), - ('Oxon Hill', 'MD', ARRAY[20745, 20750], 38.7887, -76.9733), - ('El Dorado', 'AR', ARRAY[71731], 33.2184, -92.6640), - ('Terrell', 'TX', ARRAY[75161], 32.7341, -96.2939), - ('Maitland', 'FL', ARRAY[32794], 28.6295, -81.3717), - ('Concord', 'MO', ARRAY[63123], 38.5117, -90.3574), - ('Gretna', 'LA', ARRAY[70053, 70054], 29.9101, -90.0515), - ('Hinsdale', 'IL', ARRAY[60522], 41.8005, -87.9273), - ('Santa Fe Springs', 'CA', ARRAY[90671], 33.9330, -118.0625), - ('Franklin Park', 'IL', ARRAY[60132], 41.9361, -87.8794), - ('Beltsville', 'MD', ARRAY[20740, 20697, 20704, 20797], 39.0394, -76.9211), - ('Butner', 'NC', ARRAY[27509], 36.1285, -78.7502), - ('Marion', 'IL', ARRAY[62959], 37.7173, -88.9279), - ('Vero Beach', 'FL', ARRAY[32963, 32964, 32965, 32969], 27.6463, -80.3930), - ('Clemson', 'SC', ARRAY[29633], 34.6837, -82.8124), - ('Lake Mary', 'FL', ARRAY[32795, 32799], 28.7592, -81.3359), - ('Woodmere', 'NY', ARRAY[11598, 11516], 40.6374, -73.7219), - ('Ojus', 'FL', ARRAY[33180], 25.9563, -80.1606), - ('Ferndale', 'MD', ARRAY[21062], 39.1869, -76.6330), - ('Martinsburg', 'WV', ARRAY[25401, 25404, 25402], 39.4582, -77.9776), - ('Tinton Falls', 'NJ', ARRAY[7724, 7753], 40.2709, -74.0948), - ('Live Oak', 'CA', ARRAY[95062], 36.9860, -121.9804), - ('Stafford', 'TX', ARRAY[77497], 29.6271, -95.5653), - ('Wailuku', 'HI', ARRAY[96733], 20.8834, -156.5059), - ('La Marque', 'TX', ARRAY[77568], 29.3690, -94.9957), - ('Woodcrest', 'CA', ARRAY[92503, 92504, 92506], 33.8789, -117.3686), - ('Versailles', 'KY', ARRAY[40384], 38.0487, -84.7259), - ('North Druid Hills', 'GA', ARRAY[30324, 30033, 30359], 33.8186, -84.3254), - ('Portland', 'TX', ARRAY[78390], 27.8911, -97.3284), - ('Buckhall', 'VA', ARRAY[20111, 20112], 38.7250, -77.4472), - ('South Ogden', 'UT', ARRAY[84403, 84408], 41.1722, -111.9577), - ('Oak Grove', 'OR', ARRAY[97267, 97268], 45.4156, -122.6349), - ('North Canton', 'OH', ARRAY[44720], 40.8742, -81.3971), - ('Kingstowne', 'VA', ARRAY[22315], 38.7625, -77.1445), - ('Ashwaubenon', 'WI', ARRAY[54115, 54304], 44.4796, -88.0889), - ('Dickson', 'TN', ARRAY[37055, 37056], 36.0640, -87.3668), - ('Ammon', 'ID', ARRAY[83406], 43.4746, -111.9569), - ('Country Walk', 'FL', ARRAY[33186], 25.6331, -80.4353), - ('Yelm', 'WA', ARRAY[98597], 46.9398, -122.6261), - ('Upper Grand Lagoon', 'FL', ARRAY[32407, 32411], 30.1690, -85.7407), - ('Pinewood', 'FL', ARRAY[33147, 33167, 33150], 25.8697, -80.2174), - ('Vincent', 'CA', ARRAY[91702], 34.0982, -117.9238), - ('Sienna Plantation', 'TX', ARRAY[77583], 29.4834, -95.5065), - ('Sylacauga', 'AL', ARRAY[35150], 33.1778, -86.2606), - ('Redland', 'MD', ARRAY[20877], 39.1335, -77.1465), - ('Cinco Ranch', 'TX', ARRAY[77450], 29.7395, -95.7607), - ('Americus', 'GA', ARRAY[31719], 32.0736, -84.2249), - ('Republic', 'MO', ARRAY[65619, 65802], 37.1452, -93.4446), - ('Wolf Trap', 'VA', ARRAY[22182], 38.9395, -77.2842), - ('Myrtle Grove', 'FL', ARRAY[32511, 32512], 30.4158, -87.3028), - ('Fort Hunt', 'VA', ARRAY[22307, 22308], 38.7361, -77.0589), - ('Crescent City', 'CA', ARRAY[95532], 41.7727, -124.1902), - ('Groveton', 'VA', ARRAY[22307], 38.7605, -77.0980), - ('Picayune', 'MS', ARRAY[39466], 30.5322, -89.6724), - ('North Myrtle Beach', 'SC', ARRAY[29568, 29566, 29598], 33.8230, -78.7089), - ('Bemidji', 'MN', ARRAY[56619], 47.4828, -94.8796), - ('Ocean Acres', 'NJ', ARRAY[8005], 39.7430, -74.2804), - ('Goodlettsville', 'TN', ARRAY[37070], 36.3327, -86.7029), - ('Fairburn', 'GA', ARRAY[30213], 33.5496, -84.5914), - ('Bristol', 'VA', ARRAY[24202, 24203, 24205, 24209], 36.6180, -82.1606), - ('Lake Wales', 'FL', ARRAY[33853, 33859, 33885], 27.9195, -81.5961), - ('New Port Richey', 'FL', ARRAY[34652], 28.2468, -82.7170), - ('Troy', 'AL', ARRAY[36081, 36082], 31.8021, -85.9665), - ('Athens', 'TN', ARRAY[37371], 35.4573, -84.6045), - ('Auburndale', 'FL', ARRAY[33868], 28.0962, -81.8011), - ('Cutlerville', 'MI', ARRAY[49315], 42.8405, -85.6739), - ('Artesia', 'CA', ARRAY[90702], 33.8676, -118.0806), - ('Norcross', 'GA', ARRAY[30003, 30010], 33.9379, -84.2065), - ('Solvang', 'CA', ARRAY[93464], 34.5936, -120.1401), - ('World Golf Village', 'FL', ARRAY[32095], 29.9653, -81.4898), - ('Storrs', 'CT', ARRAY[6268], 41.8045, -72.2552), - ('Pearl River', 'NY', ARRAY[10962], 41.0615, -74.0047), - ('Vienna', 'VA', ARRAY[22183], 38.8996, -77.2597), - ('Eden', 'NC', ARRAY[27289], 36.5028, -79.7412), - ('Jasper', 'IN', ARRAY[47547, 47549], 38.3933, -86.9402), - ('Douglas', 'AZ', ARRAY[85607, 85655], 31.3602, -109.5394), - ('Glen Allen', 'VA', ARRAY[23059, 23058], 37.6660, -77.4838), - ('Groveland', 'FL', ARRAY[34737], 28.6021, -81.8204), - ('Mount Pleasant', 'TX', ARRAY[75456], 33.1613, -94.9717), - ('Hernando', 'MS', ARRAY[38651], 34.8500, -89.9922), - ('Glenmont', 'MD', ARRAY[20902], 39.0698, -77.0467), - ('Monroe', 'GA', ARRAY[30655], 33.7990, -83.7160), - ('Celina', 'TX', ARRAY[75078], 33.3188, -96.7865), - ('Los Osos', 'CA', ARRAY[93412], 35.3068, -120.8249), - ('Addison', 'TX', ARRAY[75001], 32.9590, -96.8355), - ('Mount Holly', 'NC', ARRAY[28012], 35.3136, -81.0072), - ('Conyers', 'GA', ARRAY[30012, 30094], 33.6645, -83.9966), - ('Centerton', 'AR', ARRAY[72719], 36.3567, -94.2971), - ('Spanish Springs', 'NV', ARRAY[89436], 39.6567, -119.6695), - ('Stuart', 'FL', ARRAY[34996, 34957, 34995], 27.1958, -80.2438), - ('Canyon', 'TX', ARRAY[79015], 34.9877, -101.9178), - ('West Haven', 'UT', ARRAY[84402], 41.2082, -112.0540), - ('Four Corners', 'OR', ARRAY[97317], 44.9291, -122.9731), - ('Sierra Vista Southeast', 'AZ', ARRAY[85615], 31.4525, -110.2160), - ('Washington', 'NC', ARRAY[27889], 35.5587, -77.0545), - ('Sayville', 'NY', ARRAY[11782], 40.7478, -73.0840), - ('Lakeway', 'TX', ARRAY[78738, 78734], 30.3547, -97.9854), - ('Archer Lodge', 'NC', ARRAY[27527], 35.6907, -78.3749), - ('Fillmore', 'CA', ARRAY[93016], 34.3989, -118.9181), - ('Bellevue', 'WI', ARRAY[54115], 44.4593, -87.9554), - ('Gainesville', 'VA', ARRAY[20155], 38.7931, -77.6347), - ('New Haven', 'IN', ARRAY[46803, 46806], 41.0675, -85.0175), - ('Avocado Heights', 'CA', ARRAY[90601], 34.0381, -118.0026), - ('Millbrook', 'AL', ARRAY[36022], 32.5028, -86.3737), - ('Parkway', 'CA', ARRAY[94206], 38.4993, -121.4520), - ('Pataskala', 'OH', ARRAY[43073], 40.0110, -82.7155), - ('Tanque Verde', 'AZ', ARRAY[85748, 85751], 32.2687, -110.7437), - ('Grandville', 'MI', ARRAY[49468], 42.9003, -85.7564), - ('Highland Springs', 'VA', ARRAY[23223], 37.5516, -77.3285), - ('White Center', 'WA', ARRAY[98146, 98168], 47.5086, -122.3480), - ('Laguna Woods', 'CA', ARRAY[92609, 92654], 33.6098, -117.7299), - ('Hope Mills', 'NC', ARRAY[28306], 34.9690, -78.9559), - ('Floral Park', 'NY', ARRAY[11002], 40.7226, -73.7029), - ('Humble', 'TX', ARRAY[77396, 77325, 77347], 29.9921, -95.2655), - ('Aldine', 'TX', ARRAY[77037, 77039], 29.9122, -95.3785), - ('New River', 'AZ', ARRAY[85087, 85080], 33.8835, -112.0858), - ('Adelphi', 'MD', ARRAY[20903], 39.0017, -76.9649), - ('Greenwood Village', 'CO', ARRAY[80111], 39.6152, -104.9130), - ('North New Hyde Park', 'NY', ARRAY[11040], 40.7460, -73.6876), - ('Blytheville', 'AR', ARRAY[72316], 35.9321, -89.9051), - ('Stanford', 'CA', ARRAY[94309], 37.4252, -122.1674), - ('Elkton', 'MD', ARRAY[21922], 39.6067, -75.8208), - ('Fate', 'TX', ARRAY[75189, 75132], 32.9429, -96.3858), - ('Port Washington', 'NY', ARRAY[11051, 11054], 40.8268, -73.6764), - ('Riverdale', 'GA', ARRAY[30296], 33.5640, -84.4103), - ('East Highland Park', 'VA', ARRAY[23223], 37.5770, -77.3865), - ('Longwood', 'FL', ARRAY[32752, 32791], 28.7014, -81.3487), - ('Seven Oaks', 'SC', ARRAY[29210], 34.0474, -81.1434), - ('Overland', 'MO', ARRAY[63132], 38.6966, -90.3689), - ('Dunn', 'NC', ARRAY[28335], 35.3113, -78.6129), - ('Belvedere Park', 'GA', ARRAY[30030], 33.7488, -84.2598), - ('Phelan', 'CA', ARRAY[92329], 34.4398, -117.5248), - ('Buford', 'GA', ARRAY[30519, 30515], 34.1185, -83.9916), - ('East Riverdale', 'MD', ARRAY[20737], 38.9600, -76.9108), - ('Red Hill', 'SC', ARRAY[29526, 29579], 33.7777, -79.0111), - ('Holly Springs', 'GA', ARRAY[30115], 34.1685, -84.4845), - ('Fort Carson', 'CO', ARRAY[80913], 38.7403, -104.7840), - ('Rossville', 'MD', ARRAY[21237], 39.3572, -76.4767), - ('Hueytown', 'AL', ARRAY[35061], 33.4237, -87.0220), - ('Bradley', 'IL', ARRAY[60914], 41.1641, -87.8452), - ('Kailua', 'HI', ARRAY[96740, 96745, 96840], 19.6634, -155.9447), - ('Hugo', 'MN', ARRAY[55038], 45.1671, -92.9588), - ('Englewood', 'FL', ARRAY[34224, 34295], 26.9603, -82.3535), - ('Fort Mohave', 'AZ', ARRAY[86427], 35.0004, -114.5748), - ('Lamont', 'CA', ARRAY[93241], 35.2651, -118.9159), - ('Gantt', 'SC', ARRAY[29605], 34.7837, -82.4027), - ('College Park', 'GA', ARRAY[30349, 30320], 33.6363, -84.4640), - ('Southchase', 'FL', ARRAY[32837], 28.3793, -81.3903), - ('Damascus', 'MD', ARRAY[20882], 39.2737, -77.2006), - ('West Richland', 'WA', ARRAY[99353], 46.3115, -119.3998), - ('Oldsmar', 'FL', ARRAY[34685], 28.0507, -82.6698), - ('Park City', 'UT', ARRAY[84068], 40.6505, -111.5020), - ('Vandalia', 'OH', ARRAY[45377], 39.8790, -84.1930), - ('Boulder City', 'NV', ARRAY[89005], 35.8407, -114.9257), - ('South Farmingdale', 'NY', ARRAY[11735], 40.7175, -73.4471), - ('Fords', 'NJ', ARRAY[7095, 8840], 40.5415, -74.3124), - ('Jamestown', 'ND', ARRAY[58402, 58405], 46.9063, -98.6936), - ('Beech Grove', 'IN', ARRAY[46203], 39.7157, -86.0871), - ('Newport', 'KY', ARRAY[41072], 39.0855, -84.4868), - ('Berea', 'SC', ARRAY[29611], 34.8802, -82.4653), - ('Taft', 'CA', ARRAY[93268], 35.1267, -119.4242), - ('Franklin Park', 'PA', ARRAY[15090, 15143], 40.5903, -80.0999), - ('Salem Lakes', 'WI', ARRAY[53192, 53179, 53170, 53102], 42.5366, -88.1307), - ('Azalea Park', 'FL', ARRAY[32807], 28.5473, -81.2956), - ('Lockhart', 'FL', ARRAY[32810], 28.6271, -81.4354), - ('Campbellsville', 'KY', ARRAY[42719], 37.3446, -85.3511), - ('Tonawanda', 'NY', ARRAY[14151], 43.0105, -78.8805), - ('Payson', 'AZ', ARRAY[85072, 85547], 34.2434, -111.3195), - ('Salida', 'CA', ARRAY[95358, 95356], 37.7145, -121.0870), - ('Southern Pines', 'NC', ARRAY[28387], 35.1927, -79.4040), - ('Horsham', 'PA', ARRAY[19040], 40.1825, -75.1387), - ('Halawa', 'HI', ARRAY[96818, 96861], 21.3753, -157.9185), - ('Pewaukee', 'WI', ARRAY[53702, 53186, 53188], 43.0701, -88.2411), - ('Falls Church', 'VA', ARRAY[22040], 38.8847, -77.1751), - ('Franklin Park', 'NJ', ARRAY[8873], 40.4439, -74.5432), - ('Cayey', 'PR', ARRAY[737], 18.1150, -66.1630), - ('Port Orchard', 'WA', ARRAY[98367], 47.5163, -122.6610), - ('Mineral Wells', 'TX', ARRAY[76067], 32.8169, -98.0776), - ('Henderson', 'TX', ARRAY[75654], 32.1576, -94.7960), - ('North Fair Oaks', 'CA', ARRAY[94063], 37.4754, -122.2035), - ('Hershey', 'PA', ARRAY[17036], 40.2806, -76.6458), - ('Olympia Heights', 'FL', ARRAY[33155], 25.7241, -80.3390), - ('Hot Springs Village', 'AR', ARRAY[71910], 34.6568, -92.9644), - ('Jefferson Valley-Yorktown', 'NY', ARRAY[10535, 10588], 41.3179, -73.8007), - ('Thibodaux', 'LA', ARRAY[70302, 70310], 29.7941, -90.8163), - ('Warren', 'PA', ARRAY[16366, 16367], 41.8433, -79.1445), - ('Chippewa Falls', 'WI', ARRAY[54774], 44.9358, -91.3902), - ('Ocean View', 'DE', ARRAY[19945], 38.5355, -75.0984), - ('Forest City', 'FL', ARRAY[32703], 28.6619, -81.4443), - ('Glasgow', 'DE', ARRAY[19702], 39.6015, -75.7474), - ('California', 'MD', ARRAY[20619, 20634], 38.2969, -76.4949), - ('Douglas', 'GA', ARRAY[31535, 31534], 31.5065, -82.8543), - ('Black Forest', 'CO', ARRAY[80106], 39.0608, -104.6752), - ('Mill Valley', 'CA', ARRAY[94942], 37.9085, -122.5421), - ('Hollins', 'VA', ARRAY[24019], 37.3434, -79.9535), - ('Destin', 'FL', ARRAY[32540], 30.3950, -86.4701), - ('Red Wing', 'MN', ARRAY[55066], 44.5816, -92.6036), - ('Lewisville', 'NC', ARRAY[27040], 36.1030, -80.4164), - ('Glenn Dale', 'MD', ARRAY[20706, 20769], 38.9833, -76.8040), - ('Hopatcong', 'NJ', ARRAY[7843, 7837], 40.9541, -74.6593), - ('Gardendale', 'AL', ARRAY[35119], 33.6678, -86.8069), - ('Hendersonville', 'NC', ARRAY[28791, 28739, 28738], 35.3242, -82.4576), - ('Crowley', 'LA', ARRAY[70527], 30.2175, -92.3752), - ('New Franklin', 'OH', ARRAY[44319, 44216], 40.9525, -81.5838), - ('Chelsea', 'AL', ARRAY[35043], 33.3255, -86.6299), - ('Pineville', 'LA', ARRAY[71348, 71359, 71361], 31.3414, -92.4096), - ('Greensburg', 'PA', ARRAY[15606], 40.3113, -79.5444), - ('Steamboat Springs', 'CO', ARRAY[80488, 80477], 40.4777, -106.8243), - ('Elk Plain', 'WA', ARRAY[98338], 47.0448, -122.3671), - ('Piney Green', 'NC', ARRAY[28544], 34.7498, -77.3208), - ('Monroe', 'OH', ARRAY[45044, 45036], 39.4461, -84.3666), - ('D''Iberville', 'MS', ARRAY[39540], 30.4709, -88.9011), - ('Glasgow', 'KY', ARRAY[42142], 37.0047, -85.9263), - ('Cayce', 'SC', ARRAY[29209, 29172, 29033], 33.9458, -81.0433), - ('Dallas', 'GA', ARRAY[30157], 33.9153, -84.8416), - ('Greenlawn', 'NY', ARRAY[11743], 40.8630, -73.3642), - ('Thonotosassa', 'FL', ARRAY[33584, 33574], 28.0465, -82.2910), - ('Gonzalez', 'FL', ARRAY[32534, 32560], 30.5822, -87.2906), - ('Frederick', 'CO', ARRAY[80530, 80516], 40.1089, -104.9694), - ('Hobe Sound', 'FL', ARRAY[33475], 27.0729, -80.1425), - ('Glenpool', 'OK', ARRAY[74033], 35.9485, -96.0052), - ('Deming', 'NM', ARRAY[88031], 32.2631, -107.7525), - ('Fulshear', 'TX', ARRAY[77494, 77406], 29.6930, -95.8792), - ('Allouez', 'WI', ARRAY[54301], 44.4721, -88.0261), - ('Nesconset', 'NY', ARRAY[11787], 40.8467, -73.1522), - ('Collingswood', 'NJ', ARRAY[8108], 39.9160, -75.0759), - ('Oak Island', 'NC', ARRAY[28465], 33.9434, -78.1366), - ('Mountain Park', 'GA', ARRAY[30087], 33.8458, -84.1313), - ('Ephrata', 'PA', ARRAY[17549], 40.1812, -76.1811), - ('Lakeland South', 'WA', ARRAY[98003], 47.2784, -122.2830), - ('Kemp Mill', 'MD', ARRAY[20902], 39.0412, -77.0215), - ('Jericho', 'NY', ARRAY[11853], 40.7875, -73.5416), - ('Bridgetown', 'OH', ARRAY[45248], 39.1551, -84.6359), - ('Teays Valley', 'WV', ARRAY[25560], 38.4482, -81.9240), - ('Whitefish Bay', 'WI', ARRAY[53217], 43.1132, -87.9004), - ('Fruitville', 'FL', ARRAY[34240], 27.3328, -82.4616), - ('Levelland', 'TX', ARRAY[79338], 33.5806, -102.3636), - ('Cherry Hill Mall', 'NJ', ARRAY[8034], 39.9384, -75.0117), - ('Palmetto', 'FL', ARRAY[34220], 27.5251, -82.5750), - ('El Sobrante', 'CA', ARRAY[94820], 37.9723, -122.2960), - ('College', 'AK', ARRAY[99775], 64.8694, -147.8217), - ('North Auburn', 'CA', ARRAY[95602], 38.9306, -121.0821), - ('Forest Park', 'IL', ARRAY[60682], 41.8683, -87.8157), - ('Beach Park', 'IL', ARRAY[60083, 60087], 42.4261, -87.8584), - ('Soddy-Daisy', 'TN', ARRAY[37379], 35.2571, -85.1739), - ('Rendon', 'TX', ARRAY[76140, 76063], 32.5789, -97.2350), - ('Vadnais Heights', 'MN', ARRAY[55110], 45.0570, -93.0748), - ('Shiloh', 'IL', ARRAY[62269], 38.5534, -89.9160), - ('LaBelle', 'FL', ARRAY[33975], 26.7219, -81.4506), - ('Conway', 'FL', ARRAY[32812], 28.4968, -81.3316), - ('Oatfield', 'OR', ARRAY[97267], 45.4127, -122.5942), - ('Sun Village', 'CA', ARRAY[93543], 34.5596, -117.9559), - ('Ridge', 'NY', ARRAY[11786], 40.9068, -72.8816), - ('Elizabethton', 'TN', ARRAY[37682], 36.3367, -82.2369), - ('Belle Chasse', 'LA', ARRAY[70093], 29.8472, -90.0069), - ('Avenal', 'CA', ARRAY[93239], 36.0311, -120.1162), - ('Homosassa Springs', 'FL', ARRAY[34446, 34447], 28.8118, -82.5392), - ('Hockessin', 'DE', ARRAY[19736], 39.7837, -75.6815), - ('Grover Beach', 'CA', ARRAY[93483], 35.1204, -120.6199), - ('Santa Fe', 'TX', ARRAY[77510], 29.3892, -95.1005), - ('Lindale', 'TX', ARRAY[75771], 32.4934, -95.4069), - ('Princeton Meadows', 'NJ', ARRAY[8512], 40.3332, -74.5628), - ('Englewood', 'OH', ARRAY[45322], 39.8644, -84.3071), - ('Huron', 'SD', ARRAY[57399], 44.3622, -98.2102), - ('Twentynine Palms', 'CA', ARRAY[92278], 34.1478, -116.0659), - ('Whitehall', 'PA', ARRAY[15227], 40.3602, -79.9898), - ('Carpinteria', 'CA', ARRAY[93014], 34.3962, -119.5118), - ('Lyndhurst', 'OH', ARRAY[44122], 41.5172, -81.4922), - ('South Park Township', 'PA', ARRAY[15129], 40.2989, -79.9944), - ('Azle', 'TX', ARRAY[76098], 32.8955, -97.5379), - ('Vidalia', 'GA', ARRAY[30436], 32.2125, -82.4019), - ('Big Bear City', 'CA', ARRAY[92386], 34.2536, -116.7903), - ('Greenwich', 'CT', ARRAY[6831, 6836], 41.0253, -73.6298), - ('Solana Beach', 'CA', ARRAY[92014], 32.9942, -117.2575), - ('Rochester', 'MI', ARRAY[48308], 42.6866, -83.1198), - ('Richton Park', 'IL', ARRAY[60443], 41.4816, -87.7387), - ('Montgomeryville', 'PA', ARRAY[19446, 19454], 40.2502, -75.2405), - ('Union Park', 'FL', ARRAY[32817], 28.5645, -81.2354), - ('Jasper', 'AL', ARRAY[35504, 35501, 35502], 33.8503, -87.2708), - ('Bensville', 'MD', ARRAY[20675, 20695], 38.6176, -77.0077), - ('Channahon', 'IL', ARRAY[60410], 41.4213, -88.2593), - ('Port Royal', 'SC', ARRAY[29905, 29906, 29935], 32.3557, -80.7029), - ('Clayton', 'OH', ARRAY[45322, 45415], 39.8689, -84.3292), - ('Baker', 'LA', ARRAY[70704], 30.5833, -91.1581), - ('Globe', 'AZ', ARRAY[85532], 33.3869, -110.7515), - ('Goldenrod', 'FL', ARRAY[32733], 28.6114, -81.2916), - ('Fort Drum', 'NY', ARRAY[13602], 44.0451, -75.7847), - ('Warrensville Heights', 'OH', ARRAY[44122], 41.4363, -81.5222), - ('Lahaina', 'HI', ARRAY[96767], 20.8848, -156.6618), - ('Mahomet', 'IL', ARRAY[61853], 40.1885, -88.3904), - ('Ardmore', 'PA', ARRAY[19003], 40.0033, -75.2947), - ('Lone Tree', 'CO', ARRAY[80134], 39.5309, -104.8710), - ('Newington', 'VA', ARRAY[22150, 22079, 22122], 38.7358, -77.1993), - ('Moody', 'AL', ARRAY[35173, 35004, 35120], 33.5986, -86.4963), - ('Monfort Heights', 'OH', ARRAY[45247, 45239], 39.1822, -84.6075), - ('Davidson', 'NC', ARRAY[28035], 35.4846, -80.8252), - ('Edgewood', 'WA', ARRAY[98371], 47.2309, -122.2832), - ('Suamico', 'WI', ARRAY[54313], 44.6352, -88.0664), - ('San Marino', 'CA', ARRAY[91118], 34.1224, -118.1132), - ('Forest Hill', 'TX', ARRAY[76119], 32.6619, -97.2662), - ('Timberlake', 'VA', ARRAY[24550, 24502], 37.3167, -79.2482), - ('Braselton', 'GA', ARRAY[30517], 34.1088, -83.8128), - ('Dunmore', 'PA', ARRAY[18510, 18505, 18512], 41.4152, -75.6072), - ('Fort Lewis', 'WA', ARRAY[98433, 98431], 47.0955, -122.5672), - ('Mount Vernon', 'VA', ARRAY[22121], 38.7140, -77.1043), - ('Rocky Point', 'NY', ARRAY[11961, 11778], 40.9357, -72.9364), - ('Colonial Park', 'PA', ARRAY[17112], 40.2997, -76.8068), - ('Weigelstown', 'PA', ARRAY[17315], 39.9843, -76.8315), - ('West Carrollton', 'OH', ARRAY[45342], 39.6701, -84.2542), - ('Parker', 'SC', ARRAY[29611], 34.8514, -82.4512), - ('Spearfish', 'SD', ARRAY[57799], 44.4912, -103.8167), - ('Lilburn', 'GA', ARRAY[30048], 33.8887, -84.1379), - ('Glendale', 'WI', ARRAY[53217, 53212], 43.1288, -87.9277), - ('Wilton Manors', 'FL', ARRAY[33334, 33311], 26.1593, -80.1395), - ('Lansdowne', 'VA', ARRAY[20176], 39.0846, -77.4839), - ('Finneytown', 'OH', ARRAY[45231], 39.2159, -84.5145), - ('Herrin', 'IL', ARRAY[62933], 37.7983, -89.0305), - ('Fergus Falls', 'MN', ARRAY[56538], 46.2853, -96.0760), - ('Commerce', 'CA', ARRAY[90022, 90023, 90091], 33.9963, -118.1519), - ('Lakeland', 'TN', ARRAY[38014], 35.2585, -89.7308), - ('Elfers', 'FL', ARRAY[34653, 34652, 34680], 28.2140, -82.7230), - ('Clarkston', 'GA', ARRAY[30021], 33.8117, -84.2404), - ('Yulee', 'FL', ARRAY[32041], 30.6350, -81.5678), - ('Windsor Locks', 'CT', ARRAY[6199], 41.9267, -72.6544), - ('Minneola', 'FL', ARRAY[34755], 28.6067, -81.7322), - ('Panama City Beach', 'FL', ARRAY[32413], 30.2369, -85.8775), - ('Richmond', 'TX', ARRAY[77469], 29.5825, -95.7602), - ('Riviera Beach', 'MD', ARRAY[21226], 39.1628, -76.5263), - ('Jackson', 'WY', ARRAY[83002], 43.4721, -110.7745), - ('Mercerville', 'NJ', ARRAY[8619], 40.2360, -74.6916), - ('Lake Wylie', 'SC', ARRAY[29710], 35.0997, -81.0677), - ('Truckee', 'CA', ARRAY[95161, 96160], 39.3455, -120.1848), - ('Prairie Ridge', 'WA', ARRAY[98391], 47.1443, -122.1408), - ('Hamilton Square', 'NJ', ARRAY[8691], 40.2248, -74.6526), - ('Endicott', 'NY', ARRAY[13737, 13761, 13763], 42.0980, -76.0639), - ('Hudson', 'FL', ARRAY[34674], 28.3594, -82.6888), - ('Boone', 'IA', ARRAY[50037, 50099], 42.0530, -93.8770), - ('Paris', 'KY', ARRAY[40362], 38.2016, -84.2719), - ('Irmo', 'SC', ARRAY[29063, 29603], 34.1018, -81.1957), - ('Newington Forest', 'VA', ARRAY[22079], 38.7371, -77.2339), - ('Four Corners', 'TX', ARRAY[77083], 29.6705, -95.6596), - ('Shepherdsville', 'KY', ARRAY[40166], 37.9806, -85.6999), - ('Kelso', 'WA', ARRAY[98632], 46.1236, -122.8910), - ('Overlea', 'MD', ARRAY[21234, 21206], 39.3642, -76.5176), - ('Corinth', 'MS', ARRAY[38835], 34.9474, -88.5143), - ('Virginia', 'MN', ARRAY[55777], 47.5169, -92.5128), - ('Lakeland Highlands', 'FL', ARRAY[33831], 27.9572, -81.9496), - ('Blue Ash', 'OH', ARRAY[45242, 45236], 39.2480, -84.3827), - ('Harrison', 'WI', ARRAY[54169, 54130, 54915, 54129], 44.1935, -88.2941), - ('Maltby', 'WA', ARRAY[98296, 98072, 98077], 47.8027, -122.1044), - ('Gulfport', 'FL', ARRAY[33711], 27.7463, -82.7100), - ('Orange City', 'FL', ARRAY[32774], 28.9347, -81.2881), - ('Bastrop', 'LA', ARRAY[71221], 32.7749, -91.9058), - ('Forrest City', 'AR', ARRAY[72335], 35.0135, -90.7931), - ('Leon Valley', 'TX', ARRAY[78240], 29.4954, -98.6143), - ('Newcastle', 'WA', ARRAY[98056], 47.5303, -122.1633), - ('New Kensington', 'PA', ARRAY[15069], 40.5711, -79.7521), - ('Pell City', 'AL', ARRAY[35128], 33.5609, -86.2669), - ('Blythe', 'CA', ARRAY[92226], 33.6220, -114.6188), - ('Larkspur', 'CA', ARRAY[94904, 94977], 37.9393, -122.5313), - ('North Valley', 'NM', ARRAY[87114, 87107], 35.1736, -106.6231), - ('Palmer Town', 'MA', ARRAY[1080, 1009, 1079], 42.1888, -72.3112), - ('West Monroe', 'LA', ARRAY[71292, 71294], 32.5120, -92.1513), - ('Athens', 'TX', ARRAY[75752], 32.2041, -95.8321), - ('Jesup', 'GA', ARRAY[31546, 31598, 31599], 31.5992, -81.8895), - ('Speedway', 'IN', ARRAY[46222], 39.7937, -86.2479), - ('Lincoln City', 'OR', ARRAY[97367], 44.9751, -124.0073), - ('Eatontown', 'NJ', ARRAY[7703], 40.2913, -74.0558), - ('Newport', 'OR', ARRAY[97366], 44.6242, -124.0513), - ('Freeport', 'TX', ARRAY[77542], 28.9454, -95.3601), - ('Coolidge', 'AZ', ARRAY[85128], 32.9395, -111.5261), - ('Melissa', 'TX', ARRAY[75454], 33.2891, -96.5573), - ('Eureka', 'MO', ARRAY[63069], 38.5015, -90.6492), - ('Emeryville', 'CA', ARRAY[94662], 37.8382, -122.2932), - ('Little Chute', 'WI', ARRAY[54130, 54913, 54911], 44.2905, -88.3206), - ('Sedro-Woolley', 'WA', ARRAY[98384], 48.5112, -122.2321), - ('Gatesville', 'TX', ARRAY[76596, 76598, 76599], 31.4419, -97.7351), - ('South Charleston', 'WV', ARRAY[25303], 38.3482, -81.7110), - ('Vail', 'AZ', ARRAY[85744], 32.0217, -110.6937), - ('Leeds', 'AL', ARRAY[35173, 35123], 33.5429, -86.5636), - ('East Bethel', 'MN', ARRAY[55011, 55005], 45.3557, -93.2038), - ('Villas', 'FL', ARRAY[33907], 26.5504, -81.8679), - ('Spring Lake', 'NC', ARRAY[28390], 35.1842, -78.9959), - ('Babylon', 'NY', ARRAY[11707], 40.6949, -73.3270), - ('Diamond Springs', 'CA', ARRAY[95623, 95619], 38.6920, -120.8391), - ('Oak Hills', 'OR', ARRAY[97006], 45.5403, -122.8413), - ('Lansing', 'KS', ARRAY[66048], 39.2428, -94.8971), - ('Norwalk', 'IA', ARRAY[50061], 41.4895, -93.6913), - ('Fairfax Station', 'VA', ARRAY[22032, 22039], 38.7942, -77.3358), - ('Robinson', 'TX', ARRAY[76706], 31.4501, -97.1201), - ('Port Washington', 'WI', ARRAY[53024], 43.3847, -87.8852), - ('South Miami', 'FL', ARRAY[33155], 25.7079, -80.2952), - ('Accokeek', 'MD', ARRAY[20607], 38.6745, -77.0023), - ('Richfield', 'WI', ARRAY[53033, 53017], 43.2372, -88.2413), - ('Robertsville', 'NJ', ARRAY[7726, 7746], 40.3395, -74.2939), - ('Red Bank', 'TN', ARRAY[37405], 35.1117, -85.2961), - ('Brown Deer', 'WI', ARRAY[53223], 43.1743, -87.9750), - ('Crestwood', 'MO', ARRAY[63123], 38.5569, -90.3782), - ('Berkley', 'CO', ARRAY[80221], 39.8045, -105.0281), - ('North Wantagh', 'NY', ARRAY[11783], 40.6983, -73.5086), - ('Urbana', 'MD', ARRAY[21754], 39.3237, -77.3411), - ('Walker Mill', 'MD', ARRAY[20747], 38.8754, -76.8862), - ('Tomball', 'TX', ARRAY[77377], 30.0951, -95.6194), - ('Wanaque', 'NJ', ARRAY[7420], 41.0440, -74.2900), - ('Arizona City', 'AZ', ARRAY[85123], 32.7506, -111.6707), - ('Tucson Estates', 'AZ', ARRAY[85735], 32.1792, -111.1254), - ('East Renton Highlands', 'WA', ARRAY[98059, 98038], 47.4718, -122.0854), - ('Arlington', 'TN', ARRAY[38028], 35.2594, -89.6680), - ('Cocoa Beach', 'FL', ARRAY[32932, 32954], 28.3326, -80.6274), - ('Bayou Blue', 'LA', ARRAY[70364], 29.6341, -90.6732), - ('Brock Hall', 'MD', ARRAY[20772], 38.8617, -76.7549), - ('Pine Castle', 'FL', ARRAY[32839], 28.4651, -81.3740), - ('Endwell', 'NY', ARRAY[13762], 42.1185, -76.0219), - ('Travilah', 'MD', ARRAY[20850], 39.0571, -77.2458), - ('South Yarmouth', 'MA', ARRAY[2664], 41.6692, -70.2005), - ('Wyandanch', 'NY', ARRAY[11704], 40.7467, -73.3769), - ('North Bellport', 'NY', ARRAY[11772], 40.7868, -72.9457), - ('Annapolis Neck', 'MD', ARRAY[21037], 38.9408, -76.4997), - ('View Park-Windsor Hills', 'CA', ARRAY[90043, 90056], 33.9955, -118.3484), - ('Ozark', 'AL', ARRAY[36361], 31.4508, -85.6473), - ('Silver City', 'NM', ARRAY[88062], 32.7784, -108.2698), - ('Martinsville', 'NJ', ARRAY[8805, 8807], 40.6030, -74.5751), - ('Bainbridge', 'GA', ARRAY[39817, 39818], 30.9046, -84.5727), - ('Bridgeton', 'MO', ARRAY[63074], 38.7673, -90.4275), - ('Archdale', 'NC', ARRAY[27263], 35.9033, -79.9592), - ('Newport', 'TN', ARRAY[37822], 35.9617, -83.1977), - ('Florham Park', 'NJ', ARRAY[7932], 40.7773, -74.3953), - ('Bogalusa', 'LA', ARRAY[70429], 30.7812, -89.8633), - ('Madison Heights', 'VA', ARRAY[24505], 37.4487, -79.1057), - ('Lake Los Angeles', 'CA', ARRAY[93591], 34.6097, -117.8339), - ('Emmaus', 'PA', ARRAY[18098, 18099], 40.5352, -75.4978), - ('Chalco', 'NE', ARRAY[60138], 41.1817, -96.1353), - ('Goulds', 'FL', ARRAY[33177], 25.5614, -80.3880), - ('Greentree', 'NJ', ARRAY[8034], 39.8989, -74.9614), - ('Webster', 'TX', ARRAY[77058], 29.5317, -95.1188), - ('Home Gardens', 'CA', ARRAY[92879], 33.8784, -117.5116), - ('Elwood', 'NY', ARRAY[11731], 40.8462, -73.3389), - ('Byram', 'MS', ARRAY[39170, 39212], 32.1890, -90.2861), - ('Lyndon', 'KY', ARRAY[40223, 40222], 38.2644, -85.5891), - ('Mack', 'OH', ARRAY[45233, 45248], 39.1503, -84.6792), - ('Richmond Heights', 'FL', ARRAY[33186], 25.6347, -80.3720), - ('Los Alamitos', 'CA', ARRAY[90721], 33.7972, -118.0594), - ('Collegedale', 'TN', ARRAY[37363, 37315], 35.0525, -85.0487), - ('Dent', 'OH', ARRAY[45247], 39.1922, -84.6593), - ('Snyder', 'TX', ARRAY[79550], 32.7133, -100.9113), - ('Fairfield', 'IA', ARRAY[52557], 41.0061, -91.9669), - ('Bellmawr', 'NJ', ARRAY[8099], 39.8665, -75.0941), - ('Doctor Phillips', 'FL', ARRAY[32819], 28.4476, -81.4922), - ('Mendota Heights', 'MN', ARRAY[55118, 55150], 44.8815, -93.1400), - ('Haysville', 'KS', ARRAY[67217], 37.5649, -97.3527), - ('Evanston', 'WY', ARRAY[82931], 41.2602, -110.9646), - ('Port Salerno', 'FL', ARRAY[34992], 27.1461, -80.1895), - ('Pennsville', 'NJ', ARRAY[8070], 39.6508, -75.5077), - ('Lake Morton-Berrydale', 'WA', ARRAY[98042], 47.3325, -122.1032), - ('Hartsville', 'TN', ARRAY[37074, 37057, 37031], 36.3921, -86.1568), - ('Fairview Shores', 'FL', ARRAY[32789, 32810], 28.6020, -81.3948), - ('Mango', 'FL', ARRAY[33584, 33550], 27.9915, -82.3070), - ('Mitchellville', 'MD', ARRAY[20721], 38.9358, -76.8146), - ('Viera East', 'FL', ARRAY[32940], 28.2610, -80.7150), - ('Weddington', 'NC', ARRAY[28173], 35.0228, -80.7383), - ('Aguadilla', 'PR', ARRAY[605], 18.4382, -67.1536), - ('Poulsbo', 'WA', ARRAY[98061], 47.7417, -122.6407), - ('Piedmont', 'CA', ARRAY[94610], 37.8226, -122.2300), - ('Viera West', 'FL', ARRAY[32940], 28.2430, -80.7368), - ('Yorktown', 'IN', ARRAY[47396, 47304], 40.1830, -85.5123), - ('Town and Country', 'MO', ARRAY[63141, 63131, 63006], 38.6317, -90.4790), - ('Jefferson Hills', 'PA', ARRAY[15025, 15332], 40.2927, -79.9329), - ('Lindon', 'UT', ARRAY[84602], 40.3414, -111.7187), - ('Maysville', 'KY', ARRAY[41096], 38.6454, -83.7911), - ('Campton Hills', 'IL', ARRAY[60175, 60124, 60183], 41.9499, -88.4166), - ('Woodbury', 'NY', ARRAY[10926, 10930], 41.3284, -74.1004), - ('Merriam', 'KS', ARRAY[66202, 66204], 39.0186, -94.6933), - ('Wahpeton', 'ND', ARRAY[58076], 46.2722, -96.6118), - ('Grand Haven', 'MI', ARRAY[49456], 43.0553, -86.2201), - ('Gold Canyon', 'AZ', ARRAY[85119], 33.3715, -111.4369), - ('Oak Grove', 'SC', ARRAY[29170], 33.9809, -81.1438), - ('California City', 'CA', ARRAY[93504], 35.1578, -117.8721), - ('Liberty Lake', 'WA', ARRAY[99016], 47.6687, -117.1032), - ('New Albany', 'OH', ARRAY[43031, 43062], 40.0802, -82.7883), - ('Cusseta', 'GA', ARRAY[31805, 31995], 32.3470, -84.7870), - ('Montgomery', 'OH', ARRAY[45242], 39.2496, -84.3457), - ('Forestville', 'OH', ARRAY[45230], 39.0711, -84.3389), - ('Soquel', 'CA', ARRAY[95003], 36.9978, -121.9482), - ('La Riviera', 'CA', ARRAY[95826], 38.5683, -121.3544), - ('Gardere', 'LA', ARRAY[70810], 30.3582, -91.1345), - ('Pleasant View', 'UT', ARRAY[84414], 41.3249, -112.0011), - ('Wasilla', 'AK', ARRAY[99629, 99687], 61.5770, -149.4660), - ('Northbrook', 'OH', ARRAY[45231], 39.2467, -84.5796), - ('Manchester', 'VA', ARRAY[23235, 23236], 37.4902, -77.5396), - ('Sierra Madre', 'CA', ARRAY[91025], 34.1687, -118.0504), - ('Totowa', 'NJ', ARRAY[7511], 40.9039, -74.2213), - ('Halfway', 'MD', ARRAY[21795], 39.6163, -77.7700), - ('Citrus', 'CA', ARRAY[91702], 34.1161, -117.8890), - ('Saks', 'AL', ARRAY[36206], 33.7118, -85.8536), - ('Galena Park', 'TX', ARRAY[77547, 77029], 29.7452, -95.2333), - ('Elk City', 'OK', ARRAY[73662, 73648], 35.3850, -99.4331), - ('Gig Harbor', 'WA', ARRAY[98335], 47.3353, -122.5964), - ('Crestwood', 'IL', ARRAY[60418], 41.6454, -87.7396), - ('Rosaryville', 'MD', ARRAY[20772], 38.7672, -76.8266), - ('Smithfield', 'VA', ARRAY[23431], 36.9754, -76.6162), - ('Scottdale', 'GA', ARRAY[30021, 30033, 30002], 33.7950, -84.2634), - ('DeForest', 'WI', ARRAY[53532], 43.2301, -89.3437), - ('Cleveland', 'TX', ARRAY[77328], 30.3374, -95.0931), - ('Bothell East', 'WA', ARRAY[98012], 47.8064, -122.1845), - ('Pike Creek Valley', 'DE', ARRAY[19711], 39.7296, -75.6993), - ('Newcastle', 'OK', ARRAY[73065], 35.2404, -97.5998), - ('Alamosa', 'CO', ARRAY[81102], 37.4751, -105.8769), - ('Highland City', 'FL', ARRAY[33830, 33812, 33846], 27.9633, -81.8781), - ('Millington', 'TN', ARRAY[38054, 38055, 38083], 35.3350, -89.8991), - ('Wyomissing', 'PA', ARRAY[19610], 40.3317, -75.9703), - ('Burtonsville', 'MD', ARRAY[20866], 39.1166, -76.9356), - ('Fort Bliss', 'TX', ARRAY[79908, 79916, 79918], 31.8137, -106.4119), - ('Lake Stickney', 'WA', ARRAY[98204], 47.8709, -122.2596), - ('North Lindenhurst', 'NY', ARRAY[11701], 40.7072, -73.3859), - ('Covington', 'LA', ARRAY[70434], 30.4808, -90.1122), - ('Morro Bay', 'CA', ARRAY[93443], 35.3681, -120.8481), - ('Milton', 'FL', ARRAY[32570, 32572], 30.6286, -87.0522), - ('Arkadelphia', 'AR', ARRAY[71999, 71998], 34.1255, -93.0725), - ('Farmington', 'MI', ARRAY[48335, 48332, 48333], 42.4614, -83.3784), - ('Lake Arbor', 'MD', ARRAY[20774], 38.9070, -76.8299), - ('Fox Lake', 'IL', ARRAY[60081, 60041], 42.4239, -88.1844), - ('Pine Hill', 'NJ', ARRAY[8021], 39.7879, -74.9857), - ('Martin', 'TN', ARRAY[38238], 36.3386, -88.8513), - ('Budd Lake', 'NJ', ARRAY[7836], 40.8733, -74.7374), - ('Shasta Lake', 'CA', ARRAY[96019, 96079], 40.6790, -122.3775), - ('Rodeo', 'CA', ARRAY[94572], 38.0368, -122.2526), - ('Vidor', 'TX', ARRAY[77670], 30.1291, -93.9967), - ('Bellefontaine Neighbors', 'MO', ARRAY[63137], 38.7529, -90.2280), - ('Lyons', 'IL', ARRAY[60525], 41.8121, -87.8192), - ('Miami Shores', 'FL', ARRAY[33138, 33153], 25.8670, -80.1779), - ('Magnolia', 'AR', ARRAY[71754], 33.2774, -93.2261), - ('Lanham', 'MD', ARRAY[20703], 38.9621, -76.8421), - ('Fairview', 'CA', ARRAY[94542, 94540], 37.6760, -122.0480), - ('Forest Acres', 'SC', ARRAY[29206], 34.0324, -80.9716), - ('Pine Ridge', 'FL', ARRAY[34442, 34445], 28.9330, -82.4761), - ('Doraville', 'GA', ARRAY[30360], 33.9072, -84.2711), - ('Box Elder', 'SD', ARRAY[57706, 57719], 44.1121, -103.0827), - ('Pasadena Hills', 'FL', ARRAY[33541, 33545], 28.2881, -82.2380), - ('Great Neck', 'NY', ARRAY[11023, 11027], 40.8028, -73.7332), - ('Victoria', 'MN', ARRAY[55331, 55318], 44.8634, -93.6586), - ('West Haverstraw', 'NY', ARRAY[10923], 41.2063, -73.9883), - ('Quartz Hill', 'CA', ARRAY[93586], 34.6527, -118.2163), - ('New Port Richey East', 'FL', ARRAY[34653], 28.2605, -82.6930), - ('Pike Road', 'AL', ARRAY[36013, 36116], 32.2934, -86.0902), - ('Snohomish', 'WA', ARRAY[98291], 47.9276, -122.0968), - ('Brookhaven', 'MS', ARRAY[39602, 39603], 31.5803, -90.4432), - ('Progress Village', 'FL', ARRAY[33578], 27.8832, -82.3593), - ('Warr Acres', 'OK', ARRAY[73122], 35.5285, -97.6182), - ('Hobart', 'WI', ARRAY[54115, 54155], 44.4967, -88.1602), - ('Clinton', 'TN', ARRAY[37717], 36.0981, -84.1283), - ('Garden City', 'SC', ARRAY[29576], 33.5927, -79.0070), - ('Wood River', 'IL', ARRAY[62095], 38.8631, -90.0773), - ('Fair Oaks Ranch', 'TX', ARRAY[78163], 29.7468, -98.6375), - ('Holmen', 'WI', ARRAY[54650], 43.9699, -91.2661), - ('Coweta', 'OK', ARRAY[74014], 35.9680, -95.6543), - ('Fairmount', 'NY', ARRAY[13031], 43.0414, -76.2485), - ('Fort Oglethorpe', 'GA', ARRAY[30707, 30741, 30742], 34.9319, -85.2460), - ('Alcoa', 'TN', ARRAY[37777, 37804], 35.8073, -83.9752), - ('Clay', 'AL', ARRAY[35126, 35048], 33.6976, -86.6070), - ('Mission', 'KS', ARRAY[66205], 39.0270, -94.6568), - ('Gages Lake', 'IL', ARRAY[60031], 42.3519, -87.9828), - ('Ellisville', 'MO', ARRAY[63011], 38.5897, -90.5884), - ('Mentone', 'CA', ARRAY[92374], 34.0609, -117.1108), - ('Scottsboro', 'AL', ARRAY[35769], 34.6438, -86.0491), - ('Lake Barcroft', 'VA', ARRAY[22041], 38.8514, -77.1579), - ('East Rockaway', 'NY', ARRAY[11518], 40.6432, -73.6672), - ('Inwood', 'NY', ARRAY[11096], 40.6218, -73.7507), - ('Gunbarrel', 'CO', ARRAY[80301], 40.0634, -105.1714), - ('Grenada', 'MS', ARRAY[38902, 38960], 33.7816, -89.8130), - ('Russellville', 'AL', ARRAY[35653], 34.5056, -87.7282), - ('Marina del Rey', 'CA', ARRAY[90295], 33.9765, -118.4486), - ('Lake Arrowhead', 'CA', ARRAY[92391, 92385, 92352, 92321], 34.2531, -117.1945), - ('Union City', 'TN', ARRAY[38281], 36.4268, -89.0474), - ('Denham Springs', 'LA', ARRAY[70727], 30.4743, -90.9594), - ('George Mason', 'VA', ARRAY[22032], 38.8355, -77.3185), - ('Boaz', 'AL', ARRAY[35956], 34.1985, -86.1529), - ('Medulla', 'FL', ARRAY[33811], 27.9570, -81.9866), - ('Gifford', 'FL', ARRAY[32967], 27.6747, -80.4102), - ('Valley Cottage', 'NY', ARRAY[10989], 41.1160, -73.9436), - ('Hermantown', 'MN', ARRAY[55810, 55811], 46.8058, -92.2407), - ('Wilmore', 'KY', ARRAY[40390], 37.8786, -84.6545), - ('Chevy Chase', 'MD', ARRAY[20815], 38.9943, -77.0737), - ('Howell', 'MI', ARRAY[48844], 42.6078, -83.9339), - ('Roxboro', 'NC', ARRAY[27574], 36.3879, -78.9812), - ('Bull Mountain', 'OR', ARRAY[97223, 97140], 45.4126, -122.8322), - ('Rice Lake', 'WI', ARRAY[54822], 45.4863, -91.7447), - ('Grand Rapids', 'MN', ARRAY[55730, 55745], 47.2380, -93.5327), - ('Harleysville', 'PA', ARRAY[19441], 40.2791, -75.3872), - ('Willoughby Hills', 'OH', ARRAY[44092], 41.5873, -81.4333), - ('Rye Brook', 'NY', ARRAY[10573], 41.0303, -73.6865), - ('Reedsburg', 'WI', ARRAY[53958], 43.5347, -89.9965), - ('Dayton', 'NV', ARRAY[89428], 39.2580, -119.5677), - ('Independent Hill', 'VA', ARRAY[20112], 38.6404, -77.4090), - ('Hope', 'AR', ARRAY[71802], 33.6682, -93.5895), - ('Helena-West Helena', 'AR', ARRAY[72342], 34.5314, -90.6201), - ('Airway Heights', 'WA', ARRAY[99001], 47.6460, -117.5792), - ('Laurel', 'FL', ARRAY[34272, 34274], 27.1446, -82.4618), - ('Orono', 'ME', ARRAY[4469], 44.8811, -68.6792), - ('Bithlo', 'FL', ARRAY[32833], 28.5644, -81.1074), - ('White Marsh', 'MD', ARRAY[21128, 21237, 21162], 39.3819, -76.4573), - ('Roxborough Park', 'CO', ARRAY[80135], 39.4492, -105.0746), - ('Picture Rocks', 'AZ', ARRAY[85743], 32.3274, -111.2557), - ('Carencro', 'LA', ARRAY[70507], 30.3126, -92.0387), - ('Ruidoso', 'NM', ARRAY[88338, 88355], 33.3647, -105.6432), - ('Monticello', 'AR', ARRAY[71656], 33.6258, -91.7934), - ('Brunswick', 'MD', ARRAY[21716], 39.3180, -77.6253), - ('Beverly Hills', 'FL', ARRAY[34464], 28.9175, -82.4541), - ('Crestline', 'CA', ARRAY[92322, 92325], 34.2486, -117.2890), - ('Flowood', 'MS', ARRAY[39208, 39232], 32.3359, -90.0802), - ('Bloomfield', 'NM', ARRAY[87410], 36.7401, -107.9734), - ('North Kensington', 'MD', ARRAY[20902], 39.0392, -77.0723), - ('Kendall Park', 'NJ', ARRAY[8852], 40.4138, -74.5626), - ('Woodlyn', 'PA', ARRAY[19022, 19033, 19081], 39.8774, -75.3445), - ('Fort Stewart', 'GA', ARRAY[31314], 31.8818, -81.6105), - ('Lenoir City', 'TN', ARRAY[37772], 35.8110, -84.2818), - ('College Place', 'WA', ARRAY[99362], 46.0419, -118.3879), - ('Wesley Chapel', 'NC', ARRAY[28173, 28110], 34.9985, -80.6905), - ('Gloucester Point', 'VA', ARRAY[23072, 23131, 23184], 37.2767, -76.5043), - ('Parsons', 'KS', ARRAY[67357], 37.3405, -95.2959), - ('Fultondale', 'AL', ARRAY[35119, 35068], 33.6177, -86.8015), - ('North College Hill', 'OH', ARRAY[45231, 45239], 39.2174, -84.5520), - ('Reserve', 'LA', ARRAY[70084], 30.0741, -90.5557), - ('Forestdale', 'AL', ARRAY[35005], 33.5737, -86.9002), - ('Marathon', 'FL', ARRAY[33052], 24.7262, -81.0376), - ('Hickam Housing', 'HI', ARRAY[96818], 21.3311, -157.9474), - ('St. Stephens', 'NC', ARRAY[28601], 35.7641, -81.2746), - ('Commerce', 'TX', ARRAY[75429], 33.2421, -95.8991), - ('Hampton', 'NH', ARRAY[3843], 42.9428, -70.8261), - ('Fort Polk South', 'LA', ARRAY[71459], 31.0512, -93.2159), - ('Girard', 'OH', ARRAY[44446], 41.1666, -80.6963), - ('Hillview', 'KY', ARRAY[40165, 40129], 38.0563, -85.6848), - ('Spanish Fort', 'AL', ARRAY[36527, 36578, 36577], 30.7257, -87.8601), - ('Bethalto', 'IL', ARRAY[62018], 38.9014, -90.0467), - ('Midland', 'WA', ARRAY[98445], 47.1734, -122.4120), - ('Plainedge', 'NY', ARRAY[11735], 40.7240, -73.4770), - ('Fair Oaks', 'GA', ARRAY[30008, 30080], 33.9192, -84.5444), - ('Stansbury Park', 'UT', ARRAY[84407], 40.6356, -112.3054), - ('Calimesa', 'CA', ARRAY[92223], 33.9874, -117.0542), - ('Dunn Loring', 'VA', ARRAY[22180, 22182], 38.8945, -77.2316), - ('Holualoa', 'HI', ARRAY[96740], 19.6238, -155.9269), - ('Beecher', 'MI', ARRAY[48505], 43.0903, -83.7039), - ('Economy', 'PA', ARRAY[15003, 15042, 15027, 15143], 40.6410, -80.1840), - ('Berthoud', 'CO', ARRAY[80534, 80513], 40.3070, -105.0419), - ('Whitestown', 'IN', ARRAY[46075], 39.9705, -86.3612), - ('Derby', 'CO', ARRAY[80024], 39.8401, -104.9171), - ('Sutherlin', 'OR', ARRAY[97462], 43.3884, -123.3231), - ('Alexander City', 'AL', ARRAY[35011], 32.9242, -85.9361), - ('Westphalia', 'MD', ARRAY[20772], 38.8385, -76.8231), - ('Dumbarton', 'VA', ARRAY[23230], 37.6130, -77.5065), - ('Northwest Harborcreek', 'PA', ARRAY[16511], 42.1494, -79.9946), - ('St. Anthony', 'MN', ARRAY[55418], 45.0278, -93.2174), - ('Farmingdale', 'NY', ARRAY[11737], 40.7328, -73.4465), - ('North Sarasota', 'FL', ARRAY[34243], 27.3711, -82.5177), - ('Powdersville', 'SC', ARRAY[29611, 29642], 34.7825, -82.4958), - ('Linganore', 'MD', ARRAY[21754], 39.4111, -77.3026), - ('Picnic Point', 'WA', ARRAY[98087], 47.8744, -122.3078), - ('Fort Knox', 'KY', ARRAY[40122], 37.8915, -85.9636), - ('Stony Brook University', 'NY', ARRAY[11794, 11733], 40.9099, -73.1213), - ('Oakwood', 'OH', ARRAY[45419], 39.7202, -84.1733), - ('Oakville', 'CT', ARRAY[6795], 41.5923, -73.0858), - ('Oak Grove', 'MN', ARRAY[55303, 55005], 45.3409, -93.3264), - ('Blanchard', 'OK', ARRAY[73101], 35.1523, -97.6613), - ('St. Albans', 'VT', ARRAY[5479], 44.8118, -73.0846), - ('Oakland', 'TN', ARRAY[38028], 35.2256, -89.5372), - ('Potsdam', 'NY', ARRAY[13699], 44.6699, -74.9830), - ('Sugarmill Woods', 'FL', ARRAY[34446], 28.7321, -82.4986), - ('Glencoe', 'IL', ARRAY[60022], 42.1347, -87.7641), - ('Orange Park', 'FL', ARRAY[32067], 30.1706, -81.7041), - ('Pine Lake Park', 'NJ', ARRAY[8759], 40.0017, -74.2595), - ('Old Orchard Beach', 'ME', ARRAY[4064], 43.5239, -70.3904), - ('Seffner', 'FL', ARRAY[33583], 27.9981, -82.2735), - ('Airmont', 'NY', ARRAY[10901, 10982], 41.0992, -74.0990), - ('Sans Souci', 'SC', ARRAY[29609], 34.8901, -82.4241), - ('South Kensington', 'MD', ARRAY[20814], 39.0188, -77.0785), - ('West Miami', 'FL', ARRAY[33155], 25.7578, -80.2969), - ('Clayton', 'NJ', ARRAY[8094], 39.6627, -75.0782), - ('Hernando', 'FL', ARRAY[34442, 34441], 28.9451, -82.3781), - ('Glenwood', 'IL', ARRAY[60411], 41.5409, -87.6116), - ('Garden City', 'GA', ARRAY[31405, 31415], 32.0868, -81.1773), - ('Fairmount', 'CO', ARRAY[80403], 39.7931, -105.1712), - ('Folsom', 'PA', ARRAY[19081], 39.8924, -75.3287), - ('Mount Vista', 'WA', ARRAY[98686], 45.7373, -122.6315), - ('Des Peres', 'MO', ARRAY[63131], 38.5973, -90.4480), - ('Perryville', 'MO', ARRAY[63776], 37.7263, -89.8759), - ('Scott', 'LA', ARRAY[70507, 70506], 30.2398, -92.0947), - ('West Vero Corridor', 'FL', ARRAY[32961], 27.6378, -80.4855), - ('Edgemere', 'MD', ARRAY[21052], 39.2273, -76.4590), - ('Salem', 'UT', ARRAY[84653], 40.0540, -111.6720), - ('Richlands', 'VA', ARRAY[24612], 37.0878, -81.8080), - ('Pleasant Hill', 'MO', ARRAY[64034], 38.8061, -94.2655), - ('Montecito', 'CA', ARRAY[93150], 34.4382, -119.6286), - ('Evergreen', 'CO', ARRAY[80437], 39.6349, -105.3356), - ('Elsmere', 'KY', ARRAY[41042], 38.9949, -84.6017), - ('Farmville', 'VA', ARRAY[23909], 37.2959, -78.4002), - ('Monroe', 'NY', ARRAY[10949], 41.3198, -74.1848), - ('Perry Heights', 'OH', ARRAY[44646], 40.7977, -81.4680), - ('Springfield', 'FL', ARRAY[32405, 32404], 30.1713, -85.6089), - ('Seven Corners', 'VA', ARRAY[22041], 38.8658, -77.1445), - ('West Athens', 'CA', ARRAY[90047], 33.9235, -118.3033), - ('Brooksville', 'FL', ARRAY[34603, 34605], 28.5404, -82.3903), - ('Fairfield Glade', 'TN', ARRAY[38557], 36.0028, -84.8711), - ('Fairwood', 'WA', ARRAY[99218], 47.7678, -117.4157), - ('Innsbrook', 'VA', ARRAY[23233], 37.6552, -77.5775), - ('Wetumpka', 'AL', ARRAY[36092], 32.5407, -86.2052), - ('Park Hills', 'MO', ARRAY[63640], 37.8211, -90.5050), - ('Odessa', 'FL', ARRAY[33558], 28.1820, -82.5530), - ('White Horse', 'NJ', ARRAY[8610], 40.1920, -74.7022), - ('Rolesville', 'NC', ARRAY[27587], 35.9224, -78.4656), - ('Incline Village', 'NV', ARRAY[89450, 89511, 89452], 39.2639, -119.9453), - ('University of Virginia', 'VA', ARRAY[22904], 38.0405, -78.5163), - ('Eufaula', 'AL', ARRAY[36072], 31.9102, -85.1505), - ('Cedar Hills', 'OR', ARRAY[97005, 97077], 45.5047, -122.8051), - ('Dock Junction', 'GA', ARRAY[31520, 31521], 31.2031, -81.5156), - ('Middleton', 'ID', ARRAY[83652], 43.7114, -116.6155), - ('Woodburn', 'VA', ARRAY[22003, 22042, 22037], 38.8503, -77.2322), - ('Sunset Hills', 'MO', ARRAY[63127], 38.5310, -90.4087), - ('Summit', 'WA', ARRAY[98373, 98446], 47.1694, -122.3628), - ('West Haven-Sylvan', 'OR', ARRAY[97229], 45.5164, -122.7654), - ('Los Altos Hills', 'CA', ARRAY[94024], 37.3671, -122.1390), - ('Citrus Springs', 'FL', ARRAY[34434, 34445], 28.9931, -82.4595), - ('Congers', 'NY', ARRAY[10920], 41.1484, -73.9456), - ('Savoy', 'IL', ARRAY[61822], 40.0600, -88.2552), - ('Center Moriches', 'NY', ARRAY[11955], 40.8015, -72.7960), - ('Aransas Pass', 'TX', ARRAY[78335], 27.8877, -97.1134), - ('Garrison', 'MD', ARRAY[21117, 21208], 39.4023, -76.7514), - ('Gaylord', 'MI', ARRAY[49734], 45.0213, -84.6803), - ('Greenville', 'RI', ARRAY[2917], 41.8800, -71.5549), - ('Somers', 'WI', ARRAY[53140, 53141, 53171], 42.6411, -87.8919), - ('Willow Street', 'PA', ARRAY[17602], 39.9809, -76.2705), - ('Millersville', 'PA', ARRAY[17603], 40.0047, -76.3522), - ('Jessup', 'MD', ARRAY[20794], 39.1457, -76.7745), - ('Tallulah', 'LA', ARRAY[71284], 32.4067, -91.1915), - ('Fern Park', 'FL', ARRAY[32730], 28.6484, -81.3458), - ('Orono', 'MN', ARRAY[55356, 55323], 44.9657, -93.5908), - ('Westwego', 'LA', ARRAY[70096], 29.9058, -90.1434), - ('Fair Lakes', 'VA', ARRAY[22033], 38.8530, -77.3885), - ('Pike Creek', 'DE', ARRAY[19707, 19711], 39.7485, -75.6953), - ('Bel Aire', 'KS', ARRAY[67226], 37.7749, -97.2457), - ('Milton', 'WA', ARRAY[98354], 47.2522, -122.3156), - ('Mahtomedi', 'MN', ARRAY[55115], 45.0619, -92.9660), - ('Haledon', 'NJ', ARRAY[7538], 40.9363, -74.1887), - ('Ashland', 'NJ', ARRAY[8034], 39.8782, -75.0085), - ('McRae-Helena', 'GA', ARRAY[31055], 32.0635, -82.8968), - ('Fishersville', 'VA', ARRAY[22939, 24401], 38.1005, -78.9687), - ('Druid Hills', 'GA', ARRAY[30306], 33.7842, -84.3273), - ('Fort Mitchell', 'KY', ARRAY[41017], 39.0459, -84.5563), - ('Westlake Village', 'CA', ARRAY[91362], 34.1369, -118.8220), - ('Kulpsville', 'PA', ARRAY[19446, 19443], 40.2440, -75.3407), - ('Burton', 'SC', ARRAY[29906], 32.4233, -80.7454), - ('Laurel Hill', 'VA', ARRAY[22199], 38.7026, -77.2422), - ('Monona', 'WI', ARRAY[53713, 53708], 43.0540, -89.3334), - ('Mayo', 'MD', ARRAY[21106], 38.9041, -76.5180), - ('Pismo Beach', 'CA', ARRAY[93448], 35.1484, -120.6492), - ('Milliken', 'CO', ARRAY[80543], 40.3115, -104.8561), - ('Murphy', 'MO', ARRAY[63049], 38.4922, -90.4856), - ('Kalifornsky', 'AK', ARRAY[99611, 99669], 60.4417, -151.1972), - ('Leesville', 'LA', ARRAY[71496], 31.1397, -93.2741), - ('Minnetrista', 'MN', ARRAY[55364, 55375, 55359], 44.9356, -93.7103), - ('Poteau', 'OK', ARRAY[74953, 74940], 35.0430, -94.6357), - ('Oak Hill', 'WV', ARRAY[25840, 25901], 37.9844, -81.1277), - ('Monument', 'CO', ARRAY[80921], 39.0735, -104.8467), - ('Alondra Park', 'CA', ARRAY[90260, 90506], 33.8885, -118.3350), - ('Shorewood', 'MN', ARRAY[55364], 44.9033, -93.5903), - ('Chester', 'IL', ARRAY[62259], 37.9199, -89.8259), - ('Gilberts', 'IL', ARRAY[60142, 60136], 42.1096, -88.3716), - ('Bargersville', 'IN', ARRAY[46106, 46143], 39.5412, -86.2004), - ('Rockmart', 'GA', ARRAY[30154], 34.0103, -85.0441), - ('South Cleveland', 'TN', ARRAY[37323], 35.1097, -84.9097), - ('Helena Valley Southeast', 'MT', ARRAY[59602], 46.6175, -111.9186), - ('Wyoming', 'MN', ARRAY[55092, 55013, 55025], 45.3365, -92.9766), - ('Bloomingdale', 'NJ', ARRAY[7465], 41.0300, -74.3319), - ('Conshohocken', 'PA', ARRAY[19429], 40.0772, -75.3035), - ('Wading River', 'NY', ARRAY[11792], 40.9464, -72.8230), - ('Chestnut Ridge', 'NY', ARRAY[10977], 41.0829, -74.0551), - ('Sudden Valley', 'WA', ARRAY[98228], 48.7199, -122.3468), - ('Ridgefield', 'CT', ARRAY[6879], 41.2712, -73.4953), - ('Southwest Ranches', 'FL', ARRAY[33330, 33332], 26.0476, -80.3750), - ('Quincy', 'FL', ARRAY[32353], 30.5659, -84.5857), - ('Templeton', 'CA', ARRAY[93465], 35.5560, -120.7182), - ('Hitchcock', 'TX', ARRAY[77563], 29.2945, -95.0250), - ('Lake Shore', 'WA', ARRAY[98685], 45.6911, -122.6911), - ('Camp Hill', 'PA', ARRAY[17001, 17089], 40.2423, -76.9274), - ('Waller', 'WA', ARRAY[98371, 98443], 47.2035, -122.3699), - ('Lincolnshire', 'IL', ARRAY[60045], 42.1957, -87.9182), - ('Jersey Village', 'TX', ARRAY[77040], 29.8903, -95.5721), - ('Centerville', 'GA', ARRAY[31093], 32.6342, -83.6853), - ('Middletown', 'KY', ARRAY[40299, 40223], 38.2410, -85.5215), - ('Tuskegee', 'AL', ARRAY[36083, 36803], 32.4395, -85.7139), - ('Grand Blanc', 'MI', ARRAY[48480], 42.9258, -83.6181), - ('Abingdon', 'VA', ARRAY[24211, 24212], 36.7089, -81.9713), - ('Temple Hills', 'MD', ARRAY[20748, 20757], 38.8106, -76.9495), - ('Boyes Hot Springs', 'CA', ARRAY[95416], 38.3126, -122.4888), - ('Bridge City', 'TX', ARRAY[77630], 30.0298, -93.8406), - ('DeFuniak Springs', 'FL', ARRAY[32435], 30.7123, -86.1208), - ('Montrose', 'VA', ARRAY[23231], 37.5200, -77.3772), - ('Port Jefferson Station', 'NY', ARRAY[11776], 40.9260, -73.0651), - ('Withamsville', 'OH', ARRAY[45245], 39.0628, -84.2808), - ('Pukalani', 'HI', ARRAY[96788], 20.8329, -156.3415), - ('Waite Park', 'MN', ARRAY[56301, 56388], 45.5313, -94.2528), - ('Park City', 'KS', ARRAY[67147], 37.8103, -97.3255), - ('Round Lake Park', 'IL', ARRAY[60030], 42.3309, -88.0750), - ('Rockwood', 'VA', ARRAY[23236], 37.4630, -77.5744), - ('West Samoset', 'FL', ARRAY[34203], 27.4702, -82.5552), - ('Oceano', 'CA', ARRAY[93475], 35.1019, -120.6090), - ('Sebastopol', 'CA', ARRAY[95473], 38.4001, -122.8276), - ('Half Moon', 'NC', ARRAY[28540], 34.8298, -77.4591), - ('Meadow Lakes', 'AK', ARRAY[99654], 61.6380, -149.6080), - ('Inwood', 'FL', ARRAY[33880], 28.0391, -81.7677), - ('Windsor', 'WI', ARRAY[53590, 53571, 53532], 43.2406, -89.2952), - ('Summit View', 'WA', ARRAY[98373], 47.1343, -122.3468), - ('Colonie', 'NY', ARRAY[12288], 42.7199, -73.8333), - ('Piñon Hills', 'CA', ARRAY[92372], 34.4438, -117.6214), - ('Sappington', 'MO', ARRAY[63126], 38.5260, -90.3730), - ('Harrison', 'TN', ARRAY[37341], 35.1276, -85.1464), - ('Delafield', 'WI', ARRAY[53058, 53029], 43.0720, -88.3913), - ('Pikeville', 'KY', ARRAY[41502], 37.4807, -82.5262), - ('Fairfax', 'CA', ARRAY[94978], 37.9886, -122.5952), - ('Laughlin', 'NV', ARRAY[89028], 35.1316, -114.6890), - ('Purcell', 'OK', ARRAY[73080], 35.0180, -97.3747), - ('West Slope', 'OR', ARRAY[97005, 97298], 45.4962, -122.7731), - ('Citrus Hills', 'FL', ARRAY[34453, 34442], 28.8870, -82.4312), - ('Silvis', 'IL', ARRAY[61239, 61282], 41.4976, -90.4101), - ('Ojai', 'CA', ARRAY[93024], 34.4487, -119.2469), - ('St. Gabriel', 'LA', ARRAY[70776, 70780], 30.2537, -91.1013), - ('Florence', 'CO', ARRAY[81290], 38.3836, -105.1114), - ('Old Town', 'ME', ARRAY[4489], 44.9491, -68.7249), - ('Etowah', 'NC', ARRAY[28739], 35.3061, -82.5902), - ('Hiawatha', 'IA', ARRAY[52233], 42.0547, -91.6911), - ('Belen', 'NM', ARRAY[87031], 34.7115, -106.7985), - ('Inverness', 'FL', ARRAY[34453, 34452], 28.8397, -82.3437), - ('Woodlawn', 'MD', ARRAY[20737], 38.9505, -76.9000), - ('Inverness', 'IL', ARRAY[60067], 42.1152, -88.1019), - ('Montpelier', 'VT', ARRAY[5603, 5604, 5620, 5633], 44.2658, -72.5717), - ('Pomona', 'NJ', ARRAY[8205], 39.4687, -74.5501), - ('St. Joseph', 'MN', ARRAY[56301], 45.5611, -94.3081), - ('Northridge', 'OH', ARRAY[45502], 39.9971, -83.7770), - ('Gibsonville', 'NC', ARRAY[27249], 36.0991, -79.5417), - ('Dade City', 'FL', ARRAY[33523, 33526], 28.3568, -82.1942), - ('Greenville', 'NY', ARRAY[10530], 40.9981, -73.8194), - ('Middleborough Center', 'MA', ARRAY[2344], 41.8945, -70.9260), - ('Bryans Road', 'MD', ARRAY[20640, 20616], 38.6144, -77.0850), - ('Meraux', 'LA', ARRAY[70092], 29.9284, -89.9179), - ('Hardeeville', 'SC', ARRAY[29936], 32.2951, -81.0318), - ('Wildwood', 'FL', ARRAY[34484, 34785], 28.8014, -82.0058), - ('Pinehurst', 'MA', ARRAY[1866], 42.5334, -71.2340), - ('Kenwood', 'OH', ARRAY[45243, 45236], 39.2067, -84.3746), - ('Richland', 'MS', ARRAY[39218], 32.2309, -90.1592), - ('Belle Isle', 'FL', ARRAY[32812], 28.4724, -81.3491), - ('East Hills', 'NY', ARRAY[11576], 40.7958, -73.6292), - ('Landen', 'OH', ARRAY[45039], 39.3153, -84.2770), - ('Riverdale Park', 'MD', ARRAY[20738], 38.9642, -76.9266), - ('Gunnison', 'CO', ARRAY[81230], 38.5455, -106.9225), - ('Hornsby Bend', 'TX', ARRAY[78724], 30.2450, -97.5833), - ('South Monrovia Island', 'CA', ARRAY[91010], 34.1234, -117.9958), - ('Morrow', 'GA', ARRAY[30287], 33.5816, -84.3392), - ('Pacific', 'WA', ARRAY[98047], 47.2610, -122.2507), - ('Commerce', 'GA', ARRAY[30599], 34.2133, -83.4730), - ('Austell', 'GA', ARRAY[30106, 30168, 30111], 33.8200, -84.6450), - ('Glenolden', 'PA', ARRAY[19039], 39.8996, -75.2920), - ('Gonzales', 'TX', ARRAY[78269], 29.5126, -97.4472), - ('Calverton', 'NY', ARRAY[11949], 40.9163, -72.7645), - ('Carneys Point', 'NJ', ARRAY[8069], 39.7075, -75.4673), - ('Yardville', 'NJ', ARRAY[8691], 40.1849, -74.6603), - ('De Soto', 'MO', ARRAY[63024], 38.1410, -90.5609), - ('Galliano', 'LA', ARRAY[70345], 29.4470, -90.3096), - ('Plymouth', 'MA', ARRAY[2362], 41.9539, -70.6693), - ('Pinson', 'AL', ARRAY[35126], 33.7057, -86.6674), - ('Selma', 'NC', ARRAY[27577], 35.5436, -78.2954), - ('Marble Falls', 'TX', ARRAY[78654], 30.5649, -98.2768), - ('Fort Myers Beach', 'FL', ARRAY[33932], 26.4324, -81.9168), - ('Ladera Heights', 'CA', ARRAY[90230, 90056], 33.9972, -118.3740), - ('Ben Lomond', 'CA', ARRAY[95018], 37.0782, -122.0882), - ('Fort Pierce North', 'FL', ARRAY[34946], 27.4736, -80.3594), - ('Sausalito', 'CA', ARRAY[94966], 37.8580, -122.4932), - ('Highland Heights', 'KY', ARRAY[41099], 39.0355, -84.4567), - ('Lemoore Station', 'CA', ARRAY[93246], 36.2633, -119.9049), - ('Sandston', 'VA', ARRAY[23250, 23231], 37.5120, -77.3149), - ('Oak Ridge', 'NC', ARRAY[27310], 36.1740, -79.9916), - ('Fort Payne', 'AL', ARRAY[35968], 34.4557, -85.6965), - ('Gateway', 'AK', ARRAY[99654], 61.5737, -149.2389), - ('Marksville', 'LA', ARRAY[71350], 31.1247, -92.0652), - ('Truth or Consequences', 'NM', ARRAY[87935], 33.1864, -107.2589), - ('Collinsville', 'VA', ARRAY[24112], 36.7215, -79.9121), - ('Willis', 'TX', ARRAY[77318, 77305], 30.4314, -95.4832), - ('East End', 'AR', ARRAY[72206, 72103], 34.5554, -92.3261), - ('San Martin', 'CA', ARRAY[95020], 37.0829, -121.5963), - ('Westmere', 'NY', ARRAY[12214, 12227], 42.6883, -73.8744), - ('Tappan', 'NY', ARRAY[10962, 10983], 41.0269, -73.9520), - ('Sedona', 'AZ', ARRAY[86339], 34.8574, -111.7951), - ('Leitchfield', 'KY', ARRAY[42755], 37.4862, -86.2857), - ('Catoosa', 'OK', ARRAY[74116], 36.1832, -95.7662), - ('Bremen', 'GA', ARRAY[30110], 33.7085, -85.1495), - ('Prairie View', 'TX', ARRAY[77445], 30.0850, -95.9897), - ('Ocean City', 'MD', ARRAY[21843], 38.3998, -75.0715), - ('Barberton', 'WA', ARRAY[98686, 98666, 98668], 45.7136, -122.6115), - ('Madison Park', 'NJ', ARRAY[8859, 8857], 40.4461, -74.2959), - ('Southport', 'NY', ARRAY[14904], 42.0640, -76.8185), - ('Lower Allen', 'PA', ARRAY[17011], 40.2261, -76.9017), - ('Fort Meade', 'FL', ARRAY[33841], 27.7645, -81.8058), - ('Willow Oak', 'FL', ARRAY[33811], 27.9216, -82.0244), - ('Kentfield', 'CA', ARRAY[94914, 94974], 37.9481, -122.5496), - ('Mount Ivy', 'NY', ARRAY[10970], 41.1926, -74.0297), - ('Page', 'AZ', ARRAY[86036], 36.9426, -111.5071), - ('Viola', 'NY', ARRAY[10901], 41.1287, -74.0855), - ('Mira Monte', 'CA', ARRAY[93022], 34.4284, -119.2853), - ('Pollock Pines', 'CA', ARRAY[95709], 38.7564, -120.5904), - ('Laurence Harbor', 'NJ', ARRAY[7721, 7735], 40.4489, -74.2494), - ('Clover Creek', 'WA', ARRAY[98446], 47.1404, -122.3827), - ('Gulf Breeze', 'FL', ARRAY[32562], 30.3685, -87.1769), - ('Union', 'OH', ARRAY[45377], 39.9090, -84.2896), - ('University Park', 'IL', ARRAY[60449], 41.4461, -87.7154), - ('Chestertown', 'MD', ARRAY[21690], 39.2182, -76.0714), - ('Belle Haven', 'VA', ARRAY[22307], 38.7775, -77.0574), - ('Beacon Square', 'FL', ARRAY[34652], 28.2118, -82.7504), - ('Harrisville', 'UT', ARRAY[84414], 41.2853, -111.9859), - ('Latimer', 'MS', ARRAY[39565], 30.4972, -88.8607), - ('North Branch', 'MN', ARRAY[55032], 45.5137, -92.9601), - ('Lake Mathews', 'CA', ARRAY[92504], 33.8250, -117.3683), - ('Moapa Valley', 'NV', ARRAY[89021], 36.6078, -114.4566), - ('Bee Cave', 'TX', ARRAY[78736], 30.3084, -97.9629), - ('Lovejoy', 'GA', ARRAY[30250], 33.4426, -84.3176), - ('Huntertown', 'IN', ARRAY[46845, 46818], 41.2155, -85.1715), - ('River Park', 'FL', ARRAY[34952], 27.3214, -80.3307), - ('Moores Mill', 'AL', ARRAY[35811, 35759], 34.8491, -86.5222), - ('St. Francis', 'MN', ARRAY[55070], 45.3991, -93.3902), - ('Kimberly', 'WI', ARRAY[54915], 44.2670, -88.3377), - ('Perry', 'FL', ARRAY[32348, 32357], 30.1090, -83.5821), - ('Kingston', 'RI', ARRAY[2881], 41.4738, -71.5236), - ('Lincoln', 'AL', ARRAY[35096], 33.5935, -86.1371), - ('Guánica', 'PR', ARRAY[653], 17.9698, -66.9309), - ('Brattleboro', 'VT', ARRAY[5303, 5304], 42.8588, -72.5628), - ('Pembroke Park', 'FL', ARRAY[33009], 25.9852, -80.1777), - ('Lake Hallie', 'WI', ARRAY[54703], 44.8921, -91.4199), - ('Ellettsville', 'IN', ARRAY[47404], 39.2322, -86.6232), - ('Litchfield', 'IL', ARRAY[62015], 39.1959, -89.6295), - ('Homeacre-Lyndora', 'PA', ARRAY[16045], 40.8721, -79.9211), - ('Medina', 'MN', ARRAY[55356, 55359], 45.0326, -93.5834), - ('Dahlonega', 'GA', ARRAY[30597], 34.5309, -83.9804), - ('Dayton', 'MN', ARRAY[55327], 45.1906, -93.4758), - ('Savage', 'MD', ARRAY[20794], 39.1485, -76.8228), - ('West Point', 'NY', ARRAY[10928, 10997], 41.3642, -74.0118), - ('Lauderdale-by-the-Sea', 'FL', ARRAY[33062], 26.1990, -80.0972), - ('Groesbeck', 'OH', ARRAY[45251, 45239], 39.2292, -84.5964), - ('Cherry Hills Village', 'CO', ARRAY[80111], 39.6375, -104.9481), - ('Barrington', 'NJ', ARRAY[8033], 39.8689, -75.0514), - ('Tecumseh', 'OK', ARRAY[74873], 35.2639, -96.9338), - ('Air Force Academy', 'CO', ARRAY[80841], 38.9942, -104.8639), - ('Folcroft', 'PA', ARRAY[19079], 39.8891, -75.2770), - ('North Syracuse', 'NY', ARRAY[13220, 13225, 13251], 43.1339, -76.1306), - ('Brewton', 'AL', ARRAY[36427], 31.1111, -87.0737), - ('Maple Glen', 'PA', ARRAY[19002], 40.1778, -75.1793), - ('Meridianville', 'AL', ARRAY[35750, 35759], 34.8729, -86.5722), - ('Trinity', 'NC', ARRAY[27263, 27360], 35.8756, -80.0093), - ('Forest Glen', 'MD', ARRAY[20902], 39.0191, -77.0445), - ('Notre Dame', 'IN', ARRAY[46637], 41.7014, -86.2378), - ('Tanglewilde', 'WA', ARRAY[98516], 47.0512, -122.7810), - ('Orlovista', 'FL', ARRAY[32835, 32811], 28.5441, -81.4629), - ('Mont Belvieu', 'TX', ARRAY[77535, 77580], 29.8524, -94.8784), - ('Enola', 'PA', ARRAY[17025], 40.2908, -76.9348), - ('Keene', 'TX', ARRAY[76009, 76031], 32.3955, -97.3226), - ('Thompson''s Station', 'TN', ARRAY[37179], 35.8090, -86.8994), - ('Stickney', 'IL', ARRAY[60804], 41.8183, -87.7730), - ('Rossford', 'OH', ARRAY[43460], 41.5832, -83.5692), - ('Cumming', 'GA', ARRAY[30041], 34.2064, -84.1337), - ('Plaquemine', 'LA', ARRAY[70765], 30.2834, -91.2429), - ('Hapeville', 'GA', ARRAY[30394], 33.6609, -84.4093), - ('Valley Falls', 'SC', ARRAY[29316], 35.0073, -81.9692), - ('Fairview', 'GA', ARRAY[30741], 34.9296, -85.2940), - ('Otis Orchards-East Farms', 'WA', ARRAY[99027], 47.7030, -117.0854), - ('Avon', 'CO', ARRAY[81655], 39.6445, -106.5133), - ('Contra Costa Centre', 'CA', ARRAY[94598], 37.9261, -122.0540), - ('Champion Heights', 'OH', ARRAY[44481], 41.3031, -80.8514), - ('Mulvane', 'KS', ARRAY[67120], 37.4788, -97.2724), - ('Lynchburg', 'TN', ARRAY[37388, 37359, 37352], 35.2846, -86.3587), - ('East Shoreham', 'NY', ARRAY[11786], 40.9460, -72.8811), - ('Hewlett', 'NY', ARRAY[11557], 40.6422, -73.6942), - ('Cheshire Village', 'CT', ARRAY[6408, 6411], 41.5026, -72.8993), - ('Theodore', 'AL', ARRAY[36582], 30.5408, -88.1884), - ('Irvington', 'NY', ARRAY[10533], 41.0349, -73.8661), - ('Prestonsburg', 'KY', ARRAY[41602], 37.6816, -82.7662), - ('Edgemoor', 'DE', ARRAY[19802], 39.7551, -75.5070), - ('Moraine', 'OH', ARRAY[45439, 45418], 39.6983, -84.2459), - ('Bridgeport', 'MI', ARRAY[48601], 43.3706, -83.8828), - ('Vine Grove', 'KY', ARRAY[40160], 37.8133, -85.9828), - ('Liberty', 'TX', ARRAY[77535], 30.0379, -94.7880), - ('Skowhegan', 'ME', ARRAY[94976], 44.7735, -69.7124), - ('Lake Murray of Richland', 'SC', ARRAY[29063, 29002], 34.1209, -81.2653), - ('Darnestown', 'MD', ARRAY[20874], 39.0960, -77.3033), - ('Garrett', 'IN', ARRAY[46706], 41.3526, -85.1238), - ('Schriever', 'LA', ARRAY[70395], 29.7334, -90.8310), - ('Andalusia', 'AL', ARRAY[36421], 31.3101, -86.4781), - ('Mila Doce', 'TX', ARRAY[78596], 26.2230, -97.9601), - ('Rockford', 'MI', ARRAY[49351], 43.1266, -85.5582), - ('Rhome', 'TX', ARRAY[76234], 33.0647, -97.4779), - ('Ellenville', 'NY', ARRAY[12428], 41.7009, -74.3609), - ('International Falls', 'MN', ARRAY[56679], 48.5884, -93.4083), - ('Jasper', 'GA', ARRAY[30175], 34.4710, -84.4496), - ('Nitro', 'WV', ARRAY[25064], 38.4119, -81.8194), - ('East Glenville', 'NY', ARRAY[12302], 42.8614, -73.9206), - ('South Gate Ridge', 'FL', ARRAY[34233], 27.2856, -82.4970), - ('Bensley', 'VA', ARRAY[23237], 37.4470, -77.4420), - ('Lionville', 'PA', ARRAY[19480], 40.0524, -75.6440), - ('Barnhart', 'MO', ARRAY[63057], 38.3360, -90.4046), - ('Islamorada, Village of Islands', 'FL', ARRAY[33070], 24.9408, -80.6097), - ('Lakeview', 'NY', ARRAY[11570], 40.6775, -73.6493), - ('Mascotte', 'FL', ARRAY[34753], 28.6110, -81.9107), - ('South Run', 'VA', ARRAY[22153], 38.7467, -77.2754), - ('Waveland', 'MS', ARRAY[39520], 30.2930, -89.3904), - ('Hingham', 'MA', ARRAY[2044], 42.2366, -70.8879), - ('Stone Mountain', 'GA', ARRAY[30086], 33.8034, -84.1724), - ('California', 'PA', ARRAY[15419, 15417], 40.0692, -79.9152), - ('Lecanto', 'FL', ARRAY[34460], 28.8359, -82.4880), - ('Corcoran', 'MN', ARRAY[55374, 55357], 45.1089, -93.5837), - ('Holly Springs', 'MS', ARRAY[38634], 34.7768, -89.4466), - ('Orange Beach', 'AL', ARRAY[36530, 36547], 30.2941, -87.5851), - ('Hillandale', 'MD', ARRAY[20903], 39.0254, -76.9751), - ('Edinboro', 'PA', ARRAY[16444], 41.8762, -80.1246), - ('Pea Ridge', 'WV', ARRAY[25504], 38.4154, -82.3188), - ('Wescosville', 'PA', ARRAY[18103, 18062], 40.5617, -75.5489), - ('Blue Bell', 'PA', ARRAY[19424], 40.1474, -75.2687), - ('Blakely', 'PA', ARRAY[18452], 41.4859, -75.6012), - ('Covedale', 'OH', ARRAY[45238], 39.1267, -84.6370), - ('Fishhook', 'AK', ARRAY[99654], 61.7110, -149.2657), - ('Heathcote', 'NJ', ARRAY[8540], 40.3908, -74.5756), - ('Keyes', 'CA', ARRAY[95326, 95307], 37.5618, -120.9088), - ('Oyster Bay', 'NY', ARRAY[11732], 40.8661, -73.5325), - ('University at Buffalo', 'NY', ARRAY[14228, 14260], 43.0025, -78.7887), - ('Eagar', 'AZ', ARRAY[85925], 34.1058, -109.2956), - ('Hebron', 'KY', ARRAY[41005, 41021], 39.0626, -84.7090), - ('Pinehurst', 'TX', ARRAY[77362], 30.1889, -95.7017), - ('Homeland Park', 'SC', ARRAY[29626], 34.4644, -82.6593), - ('Cocoa West', 'FL', ARRAY[32926], 28.3595, -80.7712), - ('Gardnerville', 'NV', ARRAY[89410], 38.9390, -119.7369), - ('Heber Springs', 'AR', ARRAY[72545], 35.5003, -92.0332), - ('Ashton-Sandy Spring', 'MD', ARRAY[20860, 20833, 20905], 39.1515, -77.0065), - ('Dunlap', 'IN', ARRAY[46516], 41.6346, -85.9235), - ('Los Ranchos de Albuquerque', 'NM', ARRAY[87107], 35.1625, -106.6481), - ('Edgewood', 'NM', ARRAY[87015], 35.1318, -106.2151), - ('Scenic Oaks', 'TX', ARRAY[78006], 29.7038, -98.6713), - ('Alpine', 'TX', ARRAY[79832], 30.3640, -103.6650), - ('Willard', 'OH', ARRAY[44888], 41.0518, -82.7232), - ('Lee Acres', 'NM', ARRAY[87413], 36.7103, -108.0725), - ('Ontario', 'OH', ARRAY[44903, 44096, 44862], 40.7710, -82.6105), - ('North Hobbs', 'NM', ARRAY[88240], 32.7731, -103.1250), - ('Anaconda', 'MT', ARRAY[59711, 59762], 46.0607, -113.0679), - ('Country Homes', 'WA', ARRAY[99218, 99251], 47.7478, -117.4196), - ('Indian Hills', 'NV', ARRAY[89423], 39.0894, -119.7977), - ('Hidden Valley Lake', 'CA', ARRAY[95467], 38.8003, -122.5505), - ('Dacono', 'CO', ARRAY[80603, 80514], 40.0620, -104.9484), - ('Cumberland', 'IN', ARRAY[46140], 39.7844, -85.9458), - ('Davenport', 'FL', ARRAY[33837, 33836], 28.1588, -81.6084), - ('Conley', 'GA', ARRAY[30297, 30294], 33.6398, -84.3376), - ('Eldorado at Santa Fe', 'NM', ARRAY[87540], 35.5273, -105.9340), - ('Wheelersburg', 'OH', ARRAY[45694], 38.7383, -82.8421), - ('District Heights', 'MD', ARRAY[20753], 38.8588, -76.8885), - ('Northern Cambria', 'PA', ARRAY[15775], 40.6561, -78.7784), - ('North Hills', 'NY', ARRAY[11576], 40.7765, -73.6778), - ('Newport', 'AR', ARRAY[72043], 35.6234, -91.2322), - ('East Alton', 'IL', ARRAY[62018, 62002], 38.8840, -90.1073), - ('Progreso', 'TX', ARRAY[78596], 26.0962, -97.9566), - ('Tracyton', 'WA', ARRAY[98310], 47.6095, -122.6533), - ('Wesley Hills', 'NY', ARRAY[10901, 10977], 41.1579, -74.0768), - ('Taylor', 'PA', ARRAY[18518], 41.3957, -75.7147), - ('West Modesto', 'CA', ARRAY[95351], 37.6180, -121.0343), - ('Clanton', 'AL', ARRAY[35046, 36045], 32.8440, -86.6230), - ('Brookhaven', 'WV', ARRAY[26531], 39.6062, -79.8812), - ('Gray', 'LA', ARRAY[70360, 70364], 29.6776, -90.7833), - ('Raleigh Hills', 'OR', ARRAY[97223], 45.4852, -122.7567), - ('Willard', 'MO', ARRAY[65803], 37.2929, -93.4171), - ('Los Chaves', 'NM', ARRAY[87031], 34.7332, -106.7631), - ('Stratmoor', 'CO', ARRAY[80911], 38.7732, -104.7787), - ('St. Johnsbury', 'VT', ARRAY[5863], 44.4287, -72.0116), - ('Crosspointe', 'VA', ARRAY[22079], 38.7253, -77.2638), - ('Windcrest', 'TX', ARRAY[78218], 29.5149, -98.3818), - ('Elsmere', 'DE', ARRAY[19805], 39.7385, -75.5946), - ('Hutchins', 'TX', ARRAY[75241], 32.6421, -96.7093), - ('Posen', 'IL', ARRAY[60469], 41.6291, -87.6858), - ('Paoli', 'PA', ARRAY[19301], 40.0420, -75.4912), - ('Atmore', 'AL', ARRAY[36503], 31.0927, -87.4763), - ('Durham', 'CA', ARRAY[95928, 95938, 95958], 39.6232, -121.7875), - ('Mount Arlington', 'NJ', ARRAY[7856], 40.9190, -74.6390), - ('Shady Side', 'MD', ARRAY[20764, 20778], 38.8285, -76.5211), - ('Cave Creek', 'AZ', ARRAY[85331], 33.8513, -111.9801), - ('Luling', 'TX', ARRAY[78468], 29.6814, -97.6468), - ('Naval Academy', 'MD', ARRAY[21412], 38.9859, -76.4880), - ('Moosic', 'PA', ARRAY[18507], 41.3584, -75.7027), - ('Oreland', 'PA', ARRAY[19075], 40.1148, -75.1801), - ('Mayflower Village', 'CA', ARRAY[91006], 34.1160, -118.0096), - ('El Granada', 'CA', ARRAY[94018], 37.5134, -122.4660), - ('Volo', 'IL', ARRAY[60073, 60041], 42.3298, -88.1599), - ('Fellsmere', 'FL', ARRAY[32966], 27.7241, -80.5975), - ('Aptos', 'CA', ARRAY[95001], 36.9912, -121.8934), - ('Mount Zion', 'IL', ARRAY[62549], 39.7794, -88.8834), - ('Marianna', 'FL', ARRAY[32447, 32448], 30.7943, -85.2260), - ('The Village of Indian Hill', 'OH', ARRAY[45243], 39.1916, -84.3344), - ('Palmview', 'TX', ARRAY[78572], 26.2303, -98.3791), - ('Sidney', 'NE', ARRAY[69160], 41.1340, -102.9681), - ('Dickson City', 'PA', ARRAY[18519], 41.4684, -75.6358), - ('Fort Wright', 'KY', ARRAY[41015, 41017], 39.0462, -84.5362), - ('Warrenton', 'OR', ARRAY[97121], 46.1685, -123.9302), - ('Oceanport', 'NJ', ARRAY[7757], 40.3160, -74.0205), - ('Douglass Hills', 'KY', ARRAY[40223], 38.2366, -85.5499), - ('North Fort Lewis', 'WA', ARRAY[98493], 47.1220, -122.5966), - ('Demopolis', 'AL', ARRAY[36742], 32.4980, -87.8298), - ('James City', 'NC', ARRAY[28562], 35.0592, -77.0200), - ('Media', 'PA', ARRAY[19091], 39.9198, -75.3888), - ('Forestbrook', 'SC', ARRAY[29579], 33.7243, -78.9678), - ('Pecan Acres', 'TX', ARRAY[76179], 32.9703, -97.4727), - ('Wailea', 'HI', ARRAY[96753], 20.6873, -156.4291), - ('Gardiner', 'ME', ARRAY[4359], 44.1910, -69.7921), - ('Bright', 'IN', ARRAY[47060], 39.2254, -84.8613), - ('Pontoon Beach', 'IL', ARRAY[62040, 62234], 38.7208, -90.0609), - ('Groveport', 'OH', ARRAY[43195, 43199], 39.8585, -82.8978), - ('Salton City', 'CA', ARRAY[92274], 33.2994, -115.9609), - ('Lake Delton', 'WI', ARRAY[53965, 53940], 43.5932, -89.7842), - ('Cottleville', 'MO', ARRAY[63304, 63338], 38.7513, -90.6582), - ('Blaine', 'WA', ARRAY[98231], 48.9839, -122.7414), - ('Semmes', 'AL', ARRAY[36575, 36663], 30.7941, -88.2358), - ('Seminole', 'OK', ARRAY[74884, 74818], 35.2346, -96.6500), - ('Frankenmuth', 'MI', ARRAY[48787], 43.3321, -83.7395), - ('Belmar', 'NJ', ARRAY[7715], 40.1798, -74.0255), - ('Palermo', 'CA', ARRAY[95965, 95966], 39.4313, -121.5225), - ('Old Fig Garden', 'CA', ARRAY[93705], 36.7989, -119.8051), - ('Falcon Heights', 'MN', ARRAY[55108], 44.9899, -93.1770), - ('Elmwood', 'LA', ARRAY[70123], 29.9555, -90.1880), - ('Old Bethpage', 'NY', ARRAY[11735], 40.7557, -73.4544), - ('Massanetta Springs', 'VA', ARRAY[22846], 38.3899, -78.8340), - ('Baxley', 'GA', ARRAY[31515], 31.7643, -82.3508), - ('Swartz Creek', 'MI', ARRAY[48473], 42.9626, -83.8260), - ('Stokesdale', 'NC', ARRAY[27284], 36.2318, -79.9834), - ('Scituate', 'MA', ARRAY[2040], 42.1867, -70.7355), - ('Severance', 'CO', ARRAY[80550, 80615, 80610], 40.5270, -104.8642), - ('Peculiar', 'MO', ARRAY[64078], 38.7306, -94.4736), - ('Rincon Valley', 'AZ', ARRAY[85641], 32.1101, -110.6889), - ('Buckner', 'KY', ARRAY[40014, 40010], 38.3867, -85.4503), - ('Jim Thorpe', 'PA', ARRAY[18235], 40.8712, -75.7433), - ('Carlisle', 'OH', ARRAY[45005], 39.5807, -84.3201), - ('Arlington Heights', 'PA', ARRAY[18301], 41.0039, -75.2116), - ('Hanamaulu', 'HI', ARRAY[96715], 21.9954, -159.3493), - ('Basehor', 'KS', ARRAY[66007], 39.1332, -94.9333), - ('Kensington', 'CA', ARRAY[94707], 37.9084, -122.2805), - ('Kenai', 'AK', ARRAY[99511], 60.5619, -151.1985), - ('Coal City', 'IL', ARRAY[60416], 41.2772, -88.2803), - ('Valparaiso', 'FL', ARRAY[32542], 30.4926, -86.5079), - ('Pinardville', 'NH', ARRAY[3102], 43.0010, -71.5171), - ('Minot AFB', 'ND', ARRAY[58704, 58703], 48.4209, -101.3381), - ('Jamul', 'CA', ARRAY[91935], 32.7184, -116.8709), - ('Mount Carmel', 'OH', ARRAY[45245], 39.0978, -84.2995), - ('Sunset', 'UT', ARRAY[84056], 41.1392, -112.0285), - ('Ward', 'AR', ARRAY[72176], 35.0117, -91.9577), - ('De Soto', 'KS', ARRAY[66019], 38.9686, -94.9548), - ('West Hills', 'NY', ARRAY[11747], 40.8198, -73.4339), - ('Exton', 'PA', ARRAY[19353], 40.0307, -75.6303), - ('Sterling', 'AK', ARRAY[99669], 60.5405, -150.8089), - ('Cavalero', 'WA', ARRAY[98205], 47.9846, -122.0743), - ('Batesburg-Leesville', 'SC', ARRAY[29006], 33.9125, -81.5313), - ('Brent', 'AL', ARRAY[35034], 32.9421, -87.1753), - ('Bulverde', 'TX', ARRAY[78070], 29.7744, -98.4364), - ('Williamson', 'AZ', ARRAY[86305], 34.7082, -112.5342), - ('Kings Point', 'NY', ARRAY[11023], 40.8162, -73.7407), - ('Myrtletown', 'CA', ARRAY[95501], 40.7888, -124.1286), - ('Zephyrhills West', 'FL', ARRAY[33541], 28.2311, -82.2052), - ('Cave Springs', 'AR', ARRAY[72718], 36.2701, -94.2225), - ('Samsula-Spruce Creek', 'FL', ARRAY[32168], 29.0484, -81.0628), - ('Rothschild', 'WI', ARRAY[54476], 44.8761, -89.6173), - ('Grandwood Park', 'IL', ARRAY[60046], 42.3929, -87.9871), - ('Albertson', 'NY', ARRAY[11577], 40.7715, -73.6482), - ('McGuire AFB', 'NJ', ARRAY[8562], 40.0285, -74.5883), - ('Walkertown', 'NC', ARRAY[27101, 27051], 36.1578, -80.1642), - ('Ranson', 'WV', ARRAY[25430], 39.3250, -77.8666), - ('Wrightsboro', 'NC', ARRAY[28405, 28429], 34.2895, -77.9217), - ('Hollywood', 'SC', ARRAY[29449], 32.7523, -80.2106), - ('Gilmer', 'TX', ARRAY[75644], 32.7317, -94.9460), - ('Quantico Base', 'VA', ARRAY[22135], 38.5228, -77.3187), - ('Big Flats', 'NY', ARRAY[14814, 14903], 42.1621, -76.9015), - ('Lake Montezuma', 'AZ', ARRAY[86342], 34.6414, -111.7960), - ('Roseburg North', 'OR', ARRAY[97495], 43.2653, -123.3025), - ('Gardnertown', 'NY', ARRAY[12551, 12552], 41.5328, -74.0594), - ('Obetz', 'OH', ARRAY[43137, 43207], 39.8671, -82.9451), - ('Sawmills', 'NC', ARRAY[28638], 35.8162, -81.4779), - ('Thiells', 'NY', ARRAY[10923], 41.2067, -74.0122), - ('Parker', 'TX', ARRAY[75002], 33.0570, -96.6248), - ('Cold Spring Harbor', 'NY', ARRAY[11724], 40.8608, -73.4488), - ('Zephyrhills South', 'FL', ARRAY[33541], 28.2152, -82.1886), - ('Three Points', 'AZ', ARRAY[85736, 85732], 32.0596, -111.2866), - ('Ettrick', 'VA', ARRAY[23806, 23834], 37.2435, -77.4287), - ('Erwin', 'NC', ARRAY[28334], 35.3226, -78.6734), - ('Grambling', 'LA', ARRAY[71270], 32.5276, -92.7124), - ('Bristol', 'WI', ARRAY[53104, 53194], 42.5378, -88.0149), - ('Red Oak', 'IA', ARRAY[51591], 41.0141, -95.2248), - ('Margaret', 'AL', ARRAY[35120], 33.6735, -86.4680), - ('Lone Grove', 'OK', ARRAY[73401], 34.1809, -97.2559), - ('Utica', 'MI', ARRAY[48317, 48318], 42.6290, -83.0218), - ('Fox Chapel', 'PA', ARRAY[15238], 40.5247, -79.8898), - ('Midway North', 'TX', ARRAY[78596], 26.1872, -98.0188), - ('Offutt AFB', 'NE', ARRAY[68123], 41.1207, -95.9209), - ('Glencoe', 'AL', ARRAY[35905], 33.9449, -85.9319), - ('Bay Hill', 'FL', ARRAY[32819], 28.4558, -81.5122), - ('Munroe Falls', 'OH', ARRAY[44262], 41.1386, -81.4344), - ('Canutillo', 'TX', ARRAY[79835], 31.9185, -106.6006), - ('Garnet', 'CA', ARRAY[92241], 33.9179, -116.4796), - ('Carver', 'MN', ARRAY[55318], 44.7600, -93.6305), - ('Dundee', 'FL', ARRAY[33877, 33838, 33844], 28.0115, -81.5995), - ('East Flat Rock', 'NC', ARRAY[28726, 28731], 35.2802, -82.4171), - ('Barling', 'AR', ARRAY[72923], 35.3284, -94.2792), - ('Gates', 'NY', ARRAY[14624], 43.1569, -77.6930), - ('Citrus Park', 'AZ', ARRAY[85340], 33.5304, -112.4440), - ('Olyphant', 'PA', ARRAY[18512, 18448], 41.4507, -75.5753), - ('Midfield', 'AL', ARRAY[35228], 33.4552, -86.9226), - ('Timnath', 'CO', ARRAY[80528, 80524, 80525], 40.5343, -104.9620), - ('Dellwood', 'MO', ARRAY[63135], 38.7564, -90.2767), - ('Highgrove', 'CA', ARRAY[92324, 92507], 34.0106, -117.3098), - ('Loughman', 'FL', ARRAY[33837], 28.2381, -81.5685), - ('Huxley', 'IA', ARRAY[50124], 41.8963, -93.5914), - ('Harrah', 'OK', ARRAY[73045], 35.4779, -97.1857), - ('Marshfield', 'MA', ARRAY[2065], 42.0939, -70.7049), - ('White Hall', 'AR', ARRAY[71612], 34.2737, -92.1005), - ('Jonesboro', 'GA', ARRAY[30237], 33.5212, -84.3541), - ('Parker', 'AZ', ARRAY[85346], 34.0286, -114.2224), - ('Prairie Grove', 'AR', ARRAY[72730], 35.9858, -94.3048), - ('Eagleville', 'PA', ARRAY[19408], 40.1604, -75.4090), - ('Maize', 'KS', ARRAY[67223], 37.7748, -97.4620), - ('Pleasant Garden', 'NC', ARRAY[27313], 35.9595, -79.7599), - ('Long View', 'NC', ARRAY[28602], 35.7217, -81.3858), - ('Royal Pines', 'NC', ARRAY[28704], 35.4783, -82.5038), - ('Midway', 'NC', ARRAY[27107], 35.9751, -80.2204), - ('Eastwood', 'LA', ARRAY[71067], 32.5606, -93.5625), - ('Deale', 'MD', ARRAY[20733, 20779], 38.7910, -76.5469), - ('Sugarcreek', 'PA', ARRAY[16323, 16343], 41.4380, -79.8183), - ('Winona Lake', 'IN', ARRAY[46590], 41.2166, -85.8106), - ('Centreville', 'IL', ARRAY[62205, 62203], 38.5798, -90.1039), - ('Sawgrass', 'FL', ARRAY[32004], 30.1900, -81.3704), - ('Flower Hill', 'NY', ARRAY[11576, 11050], 40.8075, -73.6755), - ('Desloge', 'MO', ARRAY[63601], 37.8751, -90.5192), - ('Miami Heights', 'OH', ARRAY[45248], 39.1687, -84.7152), - ('Shenandoah', 'IA', ARRAY[51603], 40.7583, -95.3720), - ('Vamo', 'FL', ARRAY[34238, 34229], 27.2254, -82.4944), - ('East Harwich', 'MA', ARRAY[2661], 41.7081, -70.0339), - ('Highland', 'IN', ARRAY[47711], 38.0474, -87.5616), - ('Highland Lakes', 'NJ', ARRAY[7422], 41.1716, -74.4643), - ('Childersburg', 'AL', ARRAY[35014], 33.2961, -86.3457), - ('Green Tree', 'PA', ARRAY[15220, 15242, 15244, 15283], 40.4170, -80.0544), - ('Rockford', 'MN', ARRAY[55373], 45.0920, -93.7453), - ('West Milton', 'OH', ARRAY[45383], 39.9585, -84.3262), - ('Pascoag', 'RI', ARRAY[2824], 41.9518, -71.7041), - ('Hartsdale', 'NY', ARRAY[10530], 41.0153, -73.8036), - ('New Burlington', 'OH', ARRAY[45231], 39.2624, -84.5520), - ('Whitfield', 'PA', ARRAY[19608, 19610], 40.3358, -76.0048), - ('Guerneville', 'CA', ARRAY[95471], 38.5137, -122.9894), - ('West Sayville', 'NY', ARRAY[11796], 40.7294, -73.1050), - ('Bethel', 'AK', ARRAY[99545], 60.7928, -161.7917), - ('Magnolia', 'TX', ARRAY[77355], 30.2117, -95.7419), - ('West Jefferson', 'OH', ARRAY[43162], 39.9481, -83.2983), - ('Hyde Park', 'UT', ARRAY[84335], 41.8008, -111.8119), - ('Santa Venetia', 'CA', ARRAY[94903], 38.0055, -122.5032), - ('Vandercook Lake', 'MI', ARRAY[49203], 42.1916, -84.3854), - ('Clifton Forge', 'VA', ARRAY[24474], 37.8232, -79.8250), - ('Potosi', 'MO', ARRAY[63660], 37.9337, -90.7750), - ('Dodgeville', 'WI', ARRAY[53595], 42.9660, -90.1297), - ('Bloomfield', 'WI', ARRAY[53128, 53157], 42.5488, -88.3520), - ('Spry', 'PA', ARRAY[17402, 17313], 39.9125, -76.6863), - ('Nowthen', 'MN', ARRAY[55330], 45.3421, -93.4495), - ('Michigan Center', 'MI', ARRAY[49201, 49203], 42.2267, -84.3230), - ('Palos Park', 'IL', ARRAY[60439], 41.6682, -87.8885), - ('Battlement Mesa', 'CO', ARRAY[81636], 39.4505, -108.0066), - ('Mead', 'CO', ARRAY[80504, 80513], 40.2321, -104.9928), - ('Silverton', 'OH', ARRAY[45236, 45227], 39.1884, -84.4010), - ('Penitas', 'TX', ARRAY[78572], 26.2508, -98.4426), - ('Crystal City', 'MO', ARRAY[63019], 38.2226, -90.3813), - ('Briar', 'TX', ARRAY[76020], 32.9884, -97.5528), - ('Spotsylvania Courthouse', 'VA', ARRAY[22551], 38.1982, -77.5885), - ('Sherman', 'IL', ARRAY[62707], 39.8876, -89.6066), - ('South Lebanon', 'OH', ARRAY[45036, 45034, 45039], 39.3672, -84.2204), - ('Rock Hill', 'MO', ARRAY[63144], 38.6091, -90.3673), - ('Franklin Center', 'NJ', ARRAY[8890], 40.5321, -74.5415), - ('Old Westbury', 'NY', ARRAY[11568], 40.7866, -73.5975), - ('Perezville', 'TX', ARRAY[78572], 26.2396, -98.4023), - ('Wickenburg', 'AZ', ARRAY[85358], 33.9837, -112.7668), - ('Bushnell', 'FL', ARRAY[33538, 33585], 28.6856, -82.1160), - ('Harlan', 'IA', ARRAY[51593], 41.6496, -95.3268), - ('Loch Lomond', 'VA', ARRAY[20111], 38.7812, -77.4817), - ('Roselawn', 'IN', ARRAY[46372], 41.1535, -87.2881), - ('Neptune City', 'NJ', ARRAY[7754], 40.2005, -74.0333), - ('Hollister', 'MO', ARRAY[65673], 36.6058, -93.2338), - ('Coopertown', 'TN', ARRAY[37172, 37146], 36.4143, -86.9658), - ('Nikiski', 'AK', ARRAY[99635], 60.7152, -151.2317), - ('Pine Level', 'AL', ARRAY[36022], 32.5797, -86.4529), - ('White City', 'FL', ARRAY[34981], 27.3722, -80.3403), - ('Breckenridge Hills', 'MO', ARRAY[63074], 38.7158, -90.3685), - ('Campbelltown', 'PA', ARRAY[17010], 40.2761, -76.5848), - ('Paulden', 'AZ', ARRAY[86334], 34.8899, -112.4938), - ('Searingtown', 'NY', ARRAY[11577, 11576], 40.7705, -73.6603), - ('Pea Ridge', 'FL', ARRAY[32571], 30.6029, -87.1022), - ('Elko New Market', 'MN', ARRAY[55054], 44.5667, -93.3380), - ('Lake Holiday', 'IL', ARRAY[60552], 41.6156, -88.6703), - ('Surfside Beach', 'SC', ARRAY[29587], 33.6093, -78.9772), - ('Flourtown', 'PA', ARRAY[19031], 40.1039, -75.2069), - ('Raynham Center', 'MA', ARRAY[2768], 41.9327, -71.0431), - ('South Hill', 'VA', ARRAY[23950], 36.7254, -78.1287), - ('Gibraltar', 'MI', ARRAY[48183], 42.0960, -83.2029), - ('Reminderville', 'OH', ARRAY[44202], 41.3338, -81.4018), - ('Oak Hill', 'TN', ARRAY[37220], 36.0735, -86.7856), - ('Capitol Heights', 'MD', ARRAY[20790, 20791, 20799], 38.8766, -76.9074), - ('Westwood', 'KY', ARRAY[41101], 38.4806, -82.6798), - ('Crystal River', 'FL', ARRAY[34429], 28.8964, -82.5992), - ('Alachua', 'FL', ARRAY[32616], 29.7778, -82.4831), - ('Edwardsville', 'KS', ARRAY[66113], 39.0765, -94.8166), - ('Fremont', 'MI', ARRAY[49413], 43.4630, -85.9541), - ('Florence', 'MS', ARRAY[39218], 32.1557, -90.1225), - ('Ottawa Hills', 'OH', ARRAY[43606], 41.6682, -83.6433), - ('Jamestown', 'NC', ARRAY[27265], 35.9985, -79.9347), - ('Sierra View', 'PA', ARRAY[18610], 41.0007, -75.4476), - ('Spurgeon', 'TN', ARRAY[37663], 36.4430, -82.4621), - ('Walhalla', 'SC', ARRAY[29691], 34.7705, -83.0615), - ('Pinetop-Lakeside', 'AZ', ARRAY[85929], 34.1486, -109.9658), - ('Lindale', 'GA', ARRAY[30161], 34.1884, -85.1808), - ('Bonsall', 'CA', ARRAY[92084], 33.2761, -117.1942), - ('Connerton', 'FL', ARRAY[34639], 28.3022, -82.4624), - ('Pleasant Run', 'OH', ARRAY[45231], 39.2927, -84.5757), - ('Cramerton', 'NC', ARRAY[28012], 35.2344, -81.0734), - ('North Alamo', 'TX', ARRAY[78516], 26.2160, -98.1264), - ('Boiling Springs', 'NC', ARRAY[28152], 35.2521, -81.6636), - ('Cortez', 'FL', ARRAY[34210], 27.4668, -82.6687), - ('Unalaska', 'AK', ARRAY[99685], 53.8984, -166.5680), - ('Tazewell', 'VA', ARRAY[24630], 37.1268, -81.5134), - ('Fulton', 'MD', ARRAY[20759], 39.1516, -76.9163), - ('Crestline', 'OH', ARRAY[44827], 40.7836, -82.7458), - ('Valdese', 'NC', ARRAY[28690, 28655], 35.7566, -81.5634), - ('Perryville', 'MD', ARRAY[21904], 39.5738, -76.0669), - ('Planada', 'CA', ARRAY[95365], 37.2892, -120.3207), - ('McMurray', 'PA', ARRAY[15317], 40.2815, -80.0874), - ('Okauchee Lake', 'WI', ARRAY[53066], 43.1248, -88.4408), - ('Mather', 'CA', ARRAY[95827], 38.5489, -121.2832), - ('Cortland', 'IL', ARRAY[60151], 41.9255, -88.6794), - ('Kingsville', 'MD', ARRAY[21087], 39.4496, -76.4204), - ('Santa Ynez', 'CA', ARRAY[93460], 34.6151, -120.0944), - ('Clarkdale', 'AZ', ARRAY[86324], 34.7503, -112.0550), - ('Fort Pierce South', 'FL', ARRAY[34981], 27.4096, -80.3539), - ('Goldstream', 'AK', ARRAY[99708, 99710], 64.9339, -148.0083), - ('Larksville', 'PA', ARRAY[18651], 41.2639, -75.9326), - ('Cornwall', 'PA', ARRAY[17016, 17085], 40.2659, -76.4077), - ('Wonder Lake', 'IL', ARRAY[60050], 42.3792, -88.3496), - ('Euharlee', 'GA', ARRAY[30120], 34.1441, -84.9327), - ('Clarkson', 'NY', ARRAY[14430], 43.2398, -77.9162), - ('Lake Providence', 'LA', ARRAY[71254, 71154], 32.8133, -91.1826), - ('Shallotte', 'NC', ARRAY[28470], 33.9759, -78.3807), - ('Argo', 'AL', ARRAY[35120], 33.6961, -86.5066), - ('Lake Wisconsin', 'WI', ARRAY[53555], 43.3782, -89.5762), - ('Four Corners', 'MT', ARRAY[59771], 45.6704, -111.1780), - ('Hayfield', 'VA', ARRAY[22315], 38.7536, -77.1321), - ('Noyack', 'NY', ARRAY[11969], 40.9827, -72.3350), - ('Garden City South', 'NY', ARRAY[11552], 40.7121, -73.6605), - ('Beavercreek', 'OR', ARRAY[97004], 45.2756, -122.5136), - ('Spring Valley Village', 'TX', ARRAY[77055], 29.7898, -95.5041), - ('West Ocean City', 'MD', ARRAY[21811], 38.3476, -75.1115), - ('Clearwater', 'SC', ARRAY[29842], 33.5038, -81.9100), - ('Suquamish', 'WA', ARRAY[98370], 47.7237, -122.5830), - ('Holmes Beach', 'FL', ARRAY[34218], 27.5108, -82.7153), - ('Madeira Beach', 'FL', ARRAY[33738], 27.7985, -82.7887), - ('Goulding', 'FL', ARRAY[32503], 30.4397, -87.2299), - ('Slaughterville', 'OK', ARRAY[73068], 35.0910, -97.2879), - ('La Joya', 'TX', ARRAY[78560], 26.2518, -98.4699), - ('Nelson', 'GA', ARRAY[30107, 30151], 34.3790, -84.3707), - ('Grant-Valkaria', 'FL', ARRAY[32950, 32949], 27.9322, -80.5655), - ('Buena', 'NJ', ARRAY[8310, 8341, 8360], 39.5282, -74.9448), - ('Adamsville', 'AL', ARRAY[35005, 35060, 35073], 33.6063, -86.9745), - ('Imperial', 'MO', ARRAY[63052], 38.3672, -90.3706), - ('Welcome', 'NC', ARRAY[27374], 35.9066, -80.2548), - ('Shady Hollow', 'TX', ARRAY[78739], 30.1646, -97.8629), - ('Rising Sun-Lebanon', 'DE', ARRAY[19962, 19901], 39.0999, -75.5047), - ('Larch Way', 'WA', ARRAY[98037], 47.8429, -122.2528), - ('Mulberry', 'FL', ARRAY[33860, 33863], 27.9058, -81.9872), - ('Hokes Bluff', 'AL', ARRAY[35905], 33.9902, -85.8639), - ('Edgewood', 'OH', ARRAY[44005], 41.8783, -80.7461), - ('Freeburg', 'IL', ARRAY[62243], 38.4398, -89.9170), - ('Monroeville', 'AL', ARRAY[36461], 31.5162, -87.3279), - ('Mojave', 'CA', ARRAY[93502], 35.0139, -118.1895), - ('Dorneyville', 'PA', ARRAY[18103], 40.5755, -75.5188), - ('Harbison Canyon', 'CA', ARRAY[92019, 91901], 32.8273, -116.8381), - ('Mount Pleasant', 'PA', ARRAY[15685], 40.1510, -79.5435), - ('Kenmar', 'PA', ARRAY[17754], 41.2547, -76.9550), - ('University Gardens', 'NY', ARRAY[11020], 40.7751, -73.7279), - ('Woodstock', 'AL', ARRAY[35111], 33.2193, -87.1489), - ('Orangeburg', 'NY', ARRAY[10976], 41.0488, -73.9407), - ('Central Gardens', 'TX', ARRAY[77705], 29.9893, -94.0217), - ('Heritage Hills', 'NY', ARRAY[10540], 41.3398, -73.7016), - ('Scandia', 'MN', ARRAY[55047], 45.2540, -92.8278), - ('Indian Mountain Lake', 'PA', ARRAY[18210], 41.0003, -75.5058), - ('Tiffin', 'IA', ARRAY[52240], 41.7067, -91.6582), - ('Oakwood', 'GA', ARRAY[30542, 30502], 34.2237, -83.8849), - ('Port Reading', 'NJ', ARRAY[7001, 7064], 40.5669, -74.2475), - ('Herculaneum', 'MO', ARRAY[63048], 38.2579, -90.3949), - ('McSwain', 'CA', ARRAY[95301], 37.3146, -120.5867), - ('Dewey-Humboldt', 'AZ', ARRAY[86327], 34.5175, -112.2498), - ('Holtville', 'AL', ARRAY[36022], 32.6314, -86.3268), - ('Alfred', 'NY', ARRAY[14803], 42.2541, -77.7897), - ('Christopher', 'IL', ARRAY[62822], 37.9708, -89.0531), - ('New Tazewell', 'TN', ARRAY[37824], 36.4381, -83.6053), - ('Skippack', 'PA', ARRAY[19426, 19474, 19473, 19430], 40.2225, -75.3998), - ('Grant', 'MN', ARRAY[55082], 45.0825, -92.9090), - ('Malmstrom AFB', 'MT', ARRAY[59402], 47.5059, -111.1825), - ('Walthourville', 'GA', ARRAY[31313, 31333], 31.7716, -81.6216), - ('Goodview', 'MN', ARRAY[55987], 44.0693, -91.7167), - ('Niwot', 'CO', ARRAY[80503], 40.0980, -105.1552), - ('Moxee', 'WA', ARRAY[98901], 46.5640, -120.3966), - ('Rosewood Heights', 'IL', ARRAY[62018], 38.8885, -90.0722), - ('West Milwaukee', 'WI', ARRAY[53214, 53215], 43.0124, -87.9710), - ('Whiteman AFB', 'MO', ARRAY[65305], 38.7302, -93.5590), - ('Austin', 'AR', ARRAY[72176], 35.0061, -91.9895), - ('Herricks', 'NY', ARRAY[11596], 40.7567, -73.6635), - ('Mississippi State', 'MS', ARRAY[39762], 33.4515, -88.7913), - ('Arcadia', 'SC', ARRAY[29301, 29336], 34.9609, -81.9929), - ('Rio Dell', 'CA', ARRAY[95562], 40.5022, -124.1103), - ('Bethlehem', 'NC', ARRAY[28681], 35.8162, -81.2962), - ('Ellisburg', 'NJ', ARRAY[8034], 39.9199, -75.0093), - ('Haleiwa', 'HI', ARRAY[96791], 21.5871, -158.1074), - ('Lorane', 'PA', ARRAY[19508], 40.2921, -75.8486), - ('Eatonton', 'GA', ARRAY[31026], 33.3258, -83.3886), - ('Northwest Harwich', 'MA', ARRAY[2645, 2646], 41.6917, -70.1027), - ('Peaceful Valley', 'WA', ARRAY[98244, 98266], 48.9477, -122.1406), - ('North El Monte', 'CA', ARRAY[91006], 34.1030, -118.0238), - ('Weaverville', 'NC', ARRAY[28804], 35.6963, -82.5584), - ('Riva', 'MD', ARRAY[21037, 21140], 38.9449, -76.5876), - ('Fussels Corner', 'FL', ARRAY[33801], 28.0574, -81.8610), - ('Fenton', 'MO', ARRAY[63099], 38.5279, -90.4489), - ('Churchville', 'PA', ARRAY[18954], 40.1994, -74.9986), - ('South Chicago Heights', 'IL', ARRAY[60411], 41.4831, -87.6370), - ('Kahaluu-Keauhou', 'HI', ARRAY[96739], 19.5726, -155.9580), - ('Lakewood', 'IL', ARRAY[60098], 42.2278, -88.3930), - ('Alexandria', 'AL', ARRAY[36250], 33.7675, -85.8792), - ('Silver Lake', 'NJ', ARRAY[7003], 40.7804, -74.1829), - ('Shannon Hills', 'AR', ARRAY[72103], 34.6157, -92.4217), - ('Captain Cook', 'HI', ARRAY[96750], 19.4995, -155.8937), - ('Mills', 'WY', ARRAY[82601, 82644], 42.8473, -106.3830), - ('Shavano Park', 'TX', ARRAY[78230, 78249], 29.5861, -98.5563), - ('Park Hill', 'OK', ARRAY[74471, 74464], 35.8546, -94.9559), - ('Spencer', 'OK', ARRAY[73084], 35.5108, -97.3715), - ('Verona', 'VA', ARRAY[24482], 38.1939, -79.0087), - ('Thorndale', 'PA', ARRAY[19335], 39.9991, -75.7517), - ('Holloman AFB', 'NM', ARRAY[88352], 32.8483, -106.0998), - ('South Brooksville', 'FL', ARRAY[34601], 28.5243, -82.4158), - ('Nichols Hills', 'OK', ARRAY[73120], 35.5468, -97.5444), - ('Clearview', 'WA', ARRAY[98012, 98072], 47.8292, -122.1452), - ('Brewerton', 'NY', ARRAY[13036], 43.2344, -76.1411), - ('Deephaven', 'MN', ARRAY[55391], 44.9318, -93.5293), - ('Carefree', 'AZ', ARRAY[85327], 33.8234, -111.9161), - ('Glenwood Landing', 'NY', ARRAY[11545], 40.8295, -73.6378), - ('Tyro', 'NC', ARRAY[27295], 35.7997, -80.3765), - ('Fairview', 'NC', ARRAY[28079], 35.1545, -80.5345), - ('Green Oaks', 'IL', ARRAY[60048], 42.2954, -87.9116), - ('Belleville', 'MI', ARRAY[48112], 42.2021, -83.4838), - ('Haleyville', 'AL', ARRAY[35551], 34.2331, -87.6175), - ('Odenville', 'AL', ARRAY[35120], 33.6987, -86.4225), - ('Farmington', 'ME', ARRAY[4992], 44.6680, -70.1459), - ('Dupo', 'IL', ARRAY[62236, 62239], 38.5146, -90.2168), - ('Bunk Foss', 'WA', ARRAY[98205], 47.9617, -122.0944), - ('Angels', 'CA', ARRAY[95221], 38.0707, -120.5501), - ('Rochester', 'WI', ARRAY[53105, 53138], 42.7338, -88.2489), - ('Spring House', 'PA', ARRAY[19002], 40.1847, -75.2267), - ('Washington Park', 'IL', ARRAY[62203], 38.6285, -90.0928), - ('Menands', 'NY', ARRAY[12247], 42.6910, -73.7271), - ('Benson', 'AZ', ARRAY[85630], 31.9157, -110.3257), - ('Lyncourt', 'NY', ARRAY[13208], 43.0821, -76.1264), - ('Cle Elum', 'WA', ARRAY[98922], 47.1943, -120.9539), - ('Mountain Home', 'NC', ARRAY[28758], 35.3708, -82.5021), - ('Smithton', 'IL', ARRAY[62243, 62285], 38.4159, -89.9903), - ('Manchester', 'GA', ARRAY[31830], 32.8566, -84.6329), - ('Lake Goodwin', 'WA', ARRAY[98292, 98271], 48.1387, -122.2804), - ('Calcium', 'NY', ARRAY[13616], 44.0401, -75.8468), - ('Bardonia', 'NY', ARRAY[10954], 41.1129, -73.9823), - ('Conway', 'NH', ARRAY[3813, 3818], 43.9845, -71.1180), - ('Fairview', 'NJ', ARRAY[7799], 40.3658, -74.0803), - ('St. Augusta', 'MN', ARRAY[56301], 45.4497, -94.1996), - ('Abbotsford', 'WI', ARRAY[54421], 44.9432, -90.3169), - ('Toa Alta', 'PR', ARRAY[954], 18.3883, -66.2503), - ('Nash', 'TX', ARRAY[75501], 33.4422, -94.1283), - ('Key Center', 'WA', ARRAY[98329, 98394, 98395], 47.3376, -122.7505), - ('Ellenton', 'FL', ARRAY[34221], 27.5266, -82.5261), - ('Maytown', 'PA', ARRAY[17547], 40.0791, -76.5791), - ('Carmel-by-the-Sea', 'CA', ARRAY[93921, 93922], 36.5528, -121.9222), - ('Moss Beach', 'CA', ARRAY[94019], 37.5184, -122.5036), - ('Longbranch', 'WA', ARRAY[98351], 47.2257, -122.7739), - ('Cross Mountain', 'TX', ARRAY[78255], 29.6535, -98.6564), - ('Armona', 'CA', ARRAY[93230], 36.3179, -119.7054), - ('Northlake', 'SC', ARRAY[29621], 34.5691, -82.6837), - ('Grayling', 'MI', ARRAY[49739], 44.6566, -84.7091), - ('Red Rock', 'AZ', ARRAY[85145, 85658], 32.5610, -111.3745), - ('Level Park-Oak Park', 'MI', ARRAY[49037], 42.3642, -85.2665), - ('Mount Pleasant', 'TN', ARRAY[38474], 35.5484, -87.1872), - ('Pleasant Hills', 'MD', ARRAY[21087, 21047, 21018], 39.4861, -76.3908), - ('Newfane', 'NY', ARRAY[14028], 43.2857, -78.6940), - ('Merton', 'WI', ARRAY[53029, 53056], 43.1423, -88.3088), - ('Stanley', 'NC', ARRAY[28164], 35.3552, -81.0937), - ('Eastover', 'NC', ARRAY[28312], 35.0958, -78.7862), - ('New Hope', 'MS', ARRAY[39703], 33.4521, -88.3399), - ('Madison', 'IL', ARRAY[62201, 62060], 38.7001, -90.1425), - ('Balm', 'FL', ARRAY[33503], 27.7541, -82.2882), - ('Johnson', 'AR', ARRAY[72762, 72741], 36.1328, -94.1757), - ('Sumiton', 'AL', ARRAY[35148], 33.7503, -87.0483), - ('Bryn Mawr', 'PA', ARRAY[19010], 40.0227, -75.3156), - ('West Point', 'GA', ARRAY[31833], 32.8937, -85.1453), - ('Madison', 'FL', ARRAY[32341], 30.4716, -83.4130), - ('Chattanooga Valley', 'GA', ARRAY[30725], 34.9241, -85.3431), - ('Narragansett Pier', 'RI', ARRAY[2880], 41.4280, -71.4670), - ('Boulevard Park', 'WA', ARRAY[98168], 47.5136, -122.3160), - ('Freedom', 'CA', ARRAY[95019], 36.9402, -121.7953), - ('Lyman', 'SC', ARRAY[29365], 34.9661, -82.1231), - ('Maiden', 'NC', ARRAY[28650], 35.5853, -81.2201), - ('Saxon', 'SC', ARRAY[29301], 34.9616, -81.9713), - ('Marietta-Alderwood', 'WA', ARRAY[98226], 48.7932, -122.5566), - ('Norwood Young America', 'MN', ARRAY[55368, 55554, 55573], 44.7721, -93.9192), - ('Barrett', 'TX', ARRAY[77562], 29.8671, -95.0537), - ('Aurora', 'IN', ARRAY[47001], 39.0677, -84.9046), - ('Alturas', 'FL', ARRAY[33859, 33841, 33820], 27.8419, -81.6952), - ('Sagamore', 'MA', ARRAY[2562], 41.7842, -70.5332), - ('Milan', 'NM', ARRAY[87021], 35.1950, -107.8947), - ('Muttontown', 'NY', ARRAY[11791, 11732], 40.8254, -73.5363), - ('Gordon Heights', 'NY', ARRAY[11953], 40.8645, -72.9678), - ('Empire', 'CA', ARRAY[95357], 37.6432, -120.9045), - ('Kennedy', 'CA', ARRAY[95206], 37.9290, -121.2457), - ('Lloyd Harbor', 'NY', ARRAY[11724], 40.9139, -73.4618), - ('Wadsworth', 'IL', ARRAY[60083], 42.4441, -87.9198), - ('Old River-Winfree', 'TX', ARRAY[77535], 29.8745, -94.8268), - ('North East', 'MD', ARRAY[21921], 39.6077, -75.9414), - ('Brookmont', 'MD', ARRAY[20816], 38.9546, -77.1292), - ('Duncan', 'SC', ARRAY[29651], 34.9351, -82.1440), - ('Panther Valley', 'NJ', ARRAY[7838], 40.9078, -74.8412), - ('Rockfish', 'NC', ARRAY[28306], 34.9902, -79.0694), - ('New London', 'MN', ARRAY[56273], 45.2975, -94.9476), - ('Meridian', 'CO', ARRAY[80134], 39.5389, -104.8476), - ('Shark River Hills', 'NJ', ARRAY[7753], 40.1923, -74.0463), - ('Brookville', 'NY', ARRAY[11548], 40.8123, -73.5696), - ('Paw Paw Lake', 'MI', ARRAY[49038], 42.2113, -86.2759), - ('Dunean', 'SC', ARRAY[29605], 34.8203, -82.4225), - ('Turnersville', 'NJ', ARRAY[8012], 39.7666, -75.0614), - ('Kimberly', 'AL', ARRAY[35091, 35116], 33.7760, -86.7968), - ('Pine Lawn', 'MO', ARRAY[63120], 38.6953, -90.2756), - ('Dana', 'NC', ARRAY[28731, 28724], 35.3239, -82.3722), - ('Darien', 'GA', ARRAY[31331], 31.3568, -81.4315), - ('Port Hadlock-Irondale', 'WA', ARRAY[98368, 98339], 48.0316, -122.7890), - ('Valley Grande', 'AL', ARRAY[36701], 32.4862, -87.0305), - ('Pantops', 'VA', ARRAY[22909], 38.0308, -78.4444), - ('Dixmoor', 'IL', ARRAY[60406], 41.6330, -87.6672), - ('Hainesville', 'IL', ARRAY[60030], 42.3414, -88.0686), - ('Camden', 'DE', ARRAY[19904], 39.0991, -75.5570), - ('Houghton Lake', 'MI', ARRAY[48630, 48629], 44.3124, -84.7625), - ('Amberley', 'OH', ARRAY[45236], 39.2035, -84.4283), - ('Sloan', 'NY', ARRAY[14212], 42.8921, -78.7918), - ('Robins', 'IA', ARRAY[52411, 52328], 42.0799, -91.6762), - ('Indianola', 'WA', ARRAY[98346, 98370], 47.7566, -122.5142), - ('Doolittle', 'TX', ARRAY[78541], 26.3598, -98.1168), - ('Ross', 'OH', ARRAY[45013, 45061], 39.3146, -84.6599), - ('Canyon Creek', 'WA', ARRAY[98252], 48.1157, -121.9831), - ('Putnam Lake', 'NY', ARRAY[10509], 41.4747, -73.5483), - ('Mariemont', 'OH', ARRAY[45227], 39.1429, -84.3784), - ('Gravette', 'AR', ARRAY[72736], 36.4291, -94.3714), - ('Old Mystic', 'CT', ARRAY[6372], 41.3854, -71.9850), - ('Lake Cassidy', 'WA', ARRAY[98258, 98270], 48.0639, -122.0920), - ('Clayton', 'DE', ARRAY[19938], 39.2846, -75.6364), - ('Watertown', 'FL', ARRAY[32025], 30.1855, -82.6026), - ('Cloverdale', 'VA', ARRAY[24019], 37.3566, -79.9055), - ('Holden Heights', 'FL', ARRAY[32839, 32855], 28.5013, -81.3878), - ('Saylorville', 'IA', ARRAY[50313], 41.6809, -93.6279), - ('High Springs', 'FL', ARRAY[32655], 29.8080, -82.5949), - ('Loyalhanna', 'PA', ARRAY[15650, 15620], 40.3144, -79.3560), - ('Elkins', 'AR', ARRAY[72727], 36.0163, -94.0250), - ('Shady Spring', 'WV', ARRAY[25918, 25989], 37.7032, -81.0912), - ('Royal Palm Estates', 'FL', ARRAY[33415], 26.6815, -80.1265), - ('Forsyth', 'IL', ARRAY[62535], 39.9259, -88.9640), - ('Mineral Ridge', 'OH', ARRAY[44515], 41.1379, -80.7653), - ('Bagdad', 'FL', ARRAY[32530], 30.5824, -87.0447), - ('Brentwood', 'MD', ARRAY[20712], 38.9439, -76.9571), - ('Cottondale', 'AL', ARRAY[35453], 33.1922, -87.4544), - ('Red Oak', 'NC', ARRAY[27856, 27804, 27868], 36.0415, -77.9065), - ('Lake Isabella', 'CA', ARRAY[93240], 35.6378, -118.4819), - ('Squaw Valley', 'CA', ARRAY[93646], 36.6944, -119.2000), - ('Ladonia', 'AL', ARRAY[36869], 32.4609, -85.0877), - ('Port Ewen', 'NY', ARRAY[12417, 12487], 41.9048, -73.9776), - ('Day Valley', 'CA', ARRAY[95003], 37.0255, -121.8559), - ('Reamstown', 'PA', ARRAY[17567], 40.2113, -76.1180), - ('Cherokee Village', 'AR', ARRAY[72525], 36.2959, -91.5696), - ('Riverton', 'IL', ARRAY[62707, 62651, 62761], 39.8456, -89.5394), - ('Richwood', 'NJ', ARRAY[8071, 8074, 8062, 8025], 39.7140, -75.1734), - ('Skidway Lake', 'MI', ARRAY[48756], 44.1919, -84.0467), - ('Oakhurst', 'CA', ARRAY[95644], 37.3342, -119.6483), - ('Bonanza', 'GA', ARRAY[30238], 33.4589, -84.3379), - ('La Vale', 'MD', ARRAY[21501, 21504], 39.6518, -78.8162), - ('Quartzsite', 'AZ', ARRAY[85359, 85369, 85376], 33.6675, -114.2170), - ('Ahtanum', 'WA', ARRAY[98908, 98909], 46.5583, -120.6110), - ('Long Lake', 'IL', ARRAY[60041], 42.3765, -88.1266), - ('Baldwin', 'GA', ARRAY[30510, 30511], 34.4864, -83.5494), - ('Hansville', 'WA', ARRAY[98346], 47.8978, -122.5579), - ('Fort Hall', 'ID', ARRAY[83203, 83221], 43.0145, -112.4573), - ('Ridgecrest', 'FL', ARRAY[33774], 27.8953, -82.8063), - ('Lockeford', 'CA', ARRAY[95237], 38.1509, -121.1554), - ('Frontenac', 'KS', ARRAY[66763], 37.4583, -94.7018), - ('Dewey', 'OK', ARRAY[74029], 36.7915, -95.9328), - ('Flat Rock', 'NC', ARRAY[28731], 35.2677, -82.4526), - ('Sylvan Beach', 'NY', ARRAY[13308], 43.2061, -75.7234), - ('Cleves', 'OH', ARRAY[45002], 39.1635, -84.7469), - ('County Center', 'VA', ARRAY[22195], 38.6917, -77.3507), - ('Inwood', 'WV', ARRAY[25428], 39.3538, -78.0552), - ('Cedar Grove', 'FL', ARRAY[32405], 30.1812, -85.6268), - ('La Center', 'WA', ARRAY[98642], 45.8595, -122.6757), - ('Northlake', 'TX', ARRAY[76247, 76262], 33.0802, -97.2545), - ('Kings Bay Base', 'GA', ARRAY[31547], 30.7985, -81.5628), - ('Howe', 'TX', ARRAY[75459], 33.5066, -96.6155), - ('Manor', 'PA', ARRAY[15665, 15636], 40.3459, -79.6693), - ('Nellis AFB', 'NV', ARRAY[89191], 36.2473, -115.0574), - ('Kinsey', 'AL', ARRAY[36345], 31.2926, -85.3353), - ('Mayfield', 'OH', ARRAY[44143], 41.5501, -81.4369), - ('Wynantskill', 'NY', ARRAY[12198], 42.6881, -73.6467), - ('Pottsville', 'AR', ARRAY[72802], 35.2314, -93.0652), - ('Upland', 'PA', ARRAY[19013], 39.8562, -75.3795), - ('Blennerhassett', 'WV', ARRAY[26181], 39.2562, -81.6316), - ('Chattahoochee Hills', 'GA', ARRAY[30213], 33.5695, -84.7441), - ('Goshen', 'CA', ARRAY[93227], 36.3518, -119.4210), - ('Ponce Inlet', 'FL', ARRAY[32168], 29.0927, -80.9473), - ('Richville', 'OH', ARRAY[44706, 44646], 40.7529, -81.4684), - ('Balcones Heights', 'TX', ARRAY[78213], 29.4900, -98.5503), - ('Mar-Mac', 'NC', ARRAY[27530], 35.3345, -78.0545), - ('Orange', 'OH', ARRAY[44022], 41.4415, -81.4743), - ('Smithville-Sanders', 'IN', ARRAY[47401], 39.0597, -86.5108), - ('Ohioville', 'PA', ARRAY[15052], 40.6872, -80.4783), - ('Alderton', 'WA', ARRAY[98372, 98374], 47.1718, -122.2192), - ('Cleveland', 'FL', ARRAY[33951], 26.9529, -81.9925), - ('Berwyn', 'PA', ARRAY[19301, 19333], 40.0396, -75.4439), - ('McChord AFB', 'WA', ARRAY[98438], 47.1328, -122.4924), - ('North Wales', 'PA', ARRAY[19455], 40.2111, -75.2744), - ('Rural Hall', 'NC', ARRAY[27094, 27098, 27099], 36.2251, -80.2973), - ('Pomona', 'NY', ARRAY[10970], 41.1892, -74.0543), - ('Sugar Creek', 'MO', ARRAY[64054, 64050, 64053], 39.1421, -94.4018), - ('Braddock Heights', 'MD', ARRAY[21702, 21714], 39.4114, -77.5009), - ('Lordstown', 'OH', ARRAY[44481], 41.1684, -80.8590), - ('Spencer', 'NC', ARRAY[28159], 35.6989, -80.4248), - ('North Pembroke', 'MA', ARRAY[2358], 42.0989, -70.7823), - ('Pistakee Highlands', 'IL', ARRAY[60051], 42.4023, -88.2115), - ('Newburgh', 'IN', ARRAY[47629], 37.9494, -87.4053), - ('Haviland', 'NY', ARRAY[12538], 41.7682, -73.9007), - ('Northwest Harwinton', 'CT', ARRAY[6792], 41.7769, -73.0794), - ('Greentown', 'OH', ARRAY[44720, 44630], 40.9274, -81.4020), - ('Christiana', 'TN', ARRAY[37128], 35.7204, -86.4109), - ('Kemmerer', 'WY', ARRAY[83121, 83116], 41.7761, -110.5555), - ('Locust', 'NC', ARRAY[28097], 35.2687, -80.4368), - ('Verona', 'MS', ARRAY[38879], 34.1907, -88.7203), - ('Russell', 'KY', ARRAY[41139], 38.5116, -82.6996), - ('Norris', 'TN', ARRAY[37828], 36.2136, -84.0629), - ('Port Monmouth', 'NJ', ARRAY[7758], 40.4337, -74.1010), - ('Lopezville', 'TX', ARRAY[78542], 26.2453, -98.1537), - ('Orchard City', 'CO', ARRAY[81418, 81414], 38.8144, -107.9705), - ('Algona', 'WA', ARRAY[98047], 47.2819, -122.2504), - ('Reno', 'TX', ARRAY[76082], 32.9454, -97.5769), - ('Bay Pines', 'FL', ARRAY[33744], 27.8139, -82.7747), - ('Emerald Mountain', 'AL', ARRAY[36078], 32.4396, -86.0857), - ('Port Washington North', 'NY', ARRAY[11052, 11053, 11055], 40.8434, -73.7014), - ('Fairview', 'NY', ARRAY[10607], 41.0442, -73.7963), - ('Bethel Acres', 'OK', ARRAY[74801], 35.3048, -97.0370), - ('Grand Mound', 'WA', ARRAY[98531], 46.8053, -123.0119), - ('Kenvil', 'NJ', ARRAY[7847], 40.8747, -74.6274), - ('Fiskdale', 'MA', ARRAY[1566], 42.1227, -72.1087), - ('Oak Ridge North', 'TX', ARRAY[77386], 30.1570, -95.4421), - ('Liberty', 'SC', ARRAY[29632], 34.7904, -82.6962), - ('Hurley', 'NY', ARRAY[12443], 41.9123, -74.0591), - ('Heritage Lake', 'IN', ARRAY[46121], 39.7288, -86.7123), - ('Lake Success', 'NY', ARRAY[11020], 40.7680, -73.7089), - ('Pleasant Valley', 'WV', ARRAY[26578], 39.4505, -80.1552), - ('North Lakeport', 'CA', ARRAY[95433], 39.0883, -122.9054), - ('Blanchard', 'LA', ARRAY[71009], 32.6090, -93.8842), - ('Centerville', 'PA', ARRAY[15358, 15417, 15333], 40.0300, -79.9632), - ('Landis', 'NC', ARRAY[28088], 35.5484, -80.6116), - ('Oakland', 'FL', ARRAY[34787, 34740], 28.5535, -81.6357), - ('South Hempstead', 'NY', ARRAY[11570], 40.6814, -73.6233), - ('Vails Gate', 'NY', ARRAY[12584], 41.4587, -74.0533), - ('Maugansville', 'MD', ARRAY[21740], 39.6936, -77.7472), - ('University Park', 'NM', ARRAY[88003], 32.2767, -106.7462), - ('Mauriceville', 'TX', ARRAY[77626], 30.2187, -93.8758), - ('Gosnell', 'AR', ARRAY[72319], 35.9645, -89.9721), - ('Mineral Springs', 'NC', ARRAY[28173, 28112], 34.9411, -80.6846), - ('Wallburg', 'NC', ARRAY[27373], 36.0088, -80.1453), - ('New Holstein', 'WI', ARRAY[53062], 43.9491, -88.0942), - ('Homer', 'NY', ARRAY[13045], 42.6371, -76.1849), - ('Vienna', 'GA', ARRAY[31902], 32.0925, -83.7864), - ('St. James', 'MD', ARRAY[21781, 21740], 39.5738, -77.7482), - ('Big Sky', 'MT', ARRAY[59716], 45.2592, -111.3426), - ('Zellwood', 'FL', ARRAY[32757], 28.7301, -81.5915), - ('High Bridge', 'WA', ARRAY[98272], 47.7968, -122.0281), - ('Lakemore', 'OH', ARRAY[44312], 41.0215, -81.4264), - ('Double Oak', 'TX', ARRAY[75077], 33.0633, -97.1117), - ('Emigsville', 'PA', ARRAY[17318], 40.0085, -76.7310), - ('Lake Junaluska', 'NC', ARRAY[28786, 28785], 35.5305, -82.9749), - ('Wilder', 'KY', ARRAY[41076], 39.0400, -84.4816), - ('Wormleysburg', 'PA', ARRAY[17011], 40.2604, -76.9094), - ('Sharpes', 'FL', ARRAY[32926, 32959], 28.4368, -80.7555), - ('Loxley', 'AL', ARRAY[36527, 36578], 30.6813, -87.7418), - ('Sherwood', 'WI', ARRAY[54169], 44.1764, -88.2756), - ('Greenfield', 'MN', ARRAY[55357], 45.0997, -93.6884), - ('Capitanejo', 'PR', ARRAY[795], 18.0132, -66.5359), - ('Dade City North', 'FL', ARRAY[33523], 28.3838, -82.1943), - ('Ferrysburg', 'MI', ARRAY[49409], 43.0850, -86.2221), - ('Granite Quarry', 'NC', ARRAY[28072], 35.6126, -80.4484), - ('Lido Beach', 'NY', ARRAY[11561], 40.5904, -73.6121), - ('Johnson Creek', 'WI', ARRAY[53094], 43.0812, -88.7702), - ('Edgewood', 'FL', ARRAY[32809, 32839], 28.4878, -81.3772), - ('Byrnes Mill', 'MO', ARRAY[63051], 38.4395, -90.5741), - ('The Plains', 'OH', ARRAY[45780], 39.3656, -82.1343), - ('Iron River', 'MI', ARRAY[49964], 46.0966, -88.6396), - ('Palmer Lake', 'CO', ARRAY[80132, 80932, 80933], 39.1152, -104.9057), - ('Shenandoah', 'TX', ARRAY[77381, 77385], 30.1840, -95.4555), - ('Penbrook', 'PA', ARRAY[17109], 40.2780, -76.8484), - ('Combes', 'TX', ARRAY[78552, 78535, 78551, 78553], 26.2444, -97.7254), - ('Monument Beach', 'MA', ARRAY[2532, 2559], 41.7192, -70.6061), - ('Chevy Chase', 'MD', ARRAY[20825], 38.9819, -77.0833), - ('Hawaiian Acres', 'HI', ARRAY[96760], 19.5325, -155.0497), - ('Ferris', 'TX', ARRAY[75125], 32.5369, -96.6738), - ('Keeseville', 'NY', ARRAY[12911], 44.5035, -73.4812), - ('Vista Santa Rosa', 'CA', ARRAY[92236], 33.6227, -116.2126), - ('Yountville', 'CA', ARRAY[94558], 38.3963, -122.3671), - ('Andrews AFB', 'MD', ARRAY[20762], 38.8053, -76.8744), - ('Springfield', 'KY', ARRAY[40061], 37.6921, -85.2193), - ('Boutte', 'LA', ARRAY[70080], 29.8825, -90.3936), - ('Pioneer Village', 'KY', ARRAY[40165], 38.0599, -85.6800), - ('Port Richey', 'FL', ARRAY[34673], 28.2758, -82.7250), - ('Winchester', 'CA', ARRAY[92596], 33.7146, -117.0775), - ('Churchill', 'PA', ARRAY[15221], 40.4389, -79.8417), - ('Norco', 'LA', ARRAY[70047], 29.9986, -90.4036), - ('Greenbriar', 'FL', ARRAY[34698], 28.0112, -82.7523), - ('Murfreesboro', 'NC', ARRAY[27855], 36.4421, -77.0964), - ('Oxoboxo River', 'CT', ARRAY[6382], 41.4441, -72.1250), - ('Eagle Lake', 'FL', ARRAY[33839], 27.9760, -81.7573), - ('Wanakah', 'NY', ARRAY[14085], 42.7434, -78.9028), - ('East Norwich', 'NY', ARRAY[11732], 40.8496, -73.5288), - ('Fairbanks Ranch', 'CA', ARRAY[92168], 32.9919, -117.1859), - ('Westhampton', 'NY', ARRAY[11977], 40.8325, -72.6617), - ('Great Neck Estates', 'NY', ARRAY[11022], 40.7857, -73.7396), - ('Cherry Valley', 'IL', ARRAY[61016, 61109], 42.2222, -88.9716), - ('Buckeye Lake', 'OH', ARRAY[43008], 39.9355, -82.4826), - ('Wolfeboro', 'NH', ARRAY[3896], 43.5913, -71.2092), - ('Belle Meade', 'TN', ARRAY[37215], 36.0994, -86.8562), - ('Youngwood', 'PA', ARRAY[15601], 40.2443, -79.5812), - ('Oliver', 'PA', ARRAY[15401], 39.9153, -79.7213), - ('Experiment', 'GA', ARRAY[30212], 33.2789, -84.2760), - ('Konterra', 'MD', ARRAY[20707], 39.0774, -76.9022), - ('Ellsworth', 'WI', ARRAY[54011], 44.7364, -92.4806), - ('Peterborough', 'NH', ARRAY[3468], 42.8790, -71.9594), - ('Meadowood', 'PA', ARRAY[16045], 40.8443, -79.8939), - ('Manatee Road', 'FL', ARRAY[32693], 29.5145, -82.9192), - ('Midway South', 'TX', ARRAY[78596], 26.1567, -98.0209), - ('Chico', 'WA', ARRAY[98383], 47.6234, -122.7198), - ('North Boston', 'NY', ARRAY[14110], 42.6773, -78.7797), - ('Granite Hills', 'CA', ARRAY[92019], 32.8033, -116.9056), - ('St. Clair', 'PA', ARRAY[17901], 40.7211, -76.1903), - ('Gambrills', 'MD', ARRAY[21108], 39.0929, -76.6512), - ('Stamford', 'TX', ARRAY[79521], 33.0156, -99.6716), - ('Lyndonville', 'VT', ARRAY[5849], 44.5352, -72.0016), - ('Brush Prairie', 'WA', ARRAY[98662], 45.7251, -122.5483), - ('Escatawpa', 'MS', ARRAY[39552], 30.4912, -88.5495), - ('Lesslie', 'SC', ARRAY[29730], 34.8856, -80.9541), - ('Douglas', 'MI', ARRAY[49408], 42.6410, -86.2082), - ('Fraser', 'CO', ARRAY[80442], 39.9303, -105.8030), - ('Montana City', 'MT', ARRAY[59635], 46.5257, -111.9400), - ('Dallas', 'PA', ARRAY[18690], 41.3306, -75.9736), - ('North Kingsville', 'OH', ARRAY[44004, 44068], 41.9189, -80.6724), - ('Weatogue', 'CT', ARRAY[6089], 41.8459, -72.8294), - ('Gloverville', 'SC', ARRAY[29851], 33.5274, -81.8145), - ('Grantville', 'GA', ARRAY[30264], 33.2371, -84.8293), - ('Harveys Lake', 'PA', ARRAY[18612, 18654], 41.3626, -76.0381), - ('Hudson', 'CO', ARRAY[80642], 40.0898, -104.6216), - ('Big Lake', 'AK', ARRAY[99623], 61.5260, -149.9720), - ('Tainter Lake', 'WI', ARRAY[54730], 44.9882, -91.8437), - ('Talty', 'TX', ARRAY[75160], 32.6945, -96.4007), - ('Wilson''s Mills', 'NC', ARRAY[27577, 27527, 27593], 35.5863, -78.3644), - ('Sells', 'AZ', ARRAY[85734], 31.9202, -111.8775), - ('Burnettown', 'SC', ARRAY[29851, 29834, 29816, 29841], 33.5186, -81.8634), - ('Crest', 'CA', ARRAY[92019], 32.8000, -116.8671), - ('Chester Heights', 'PA', ARRAY[19063, 19017], 39.8926, -75.4698), - ('Osseo', 'MN', ARRAY[55569], 45.1179, -93.3992), - ('Springdale', 'SC', ARRAY[29171], 33.9616, -81.1119), - ('Snowmass Village', 'CO', ARRAY[81611], 39.2207, -106.9386), - ('Longtown', 'OK', ARRAY[74432, 74462], 35.2405, -95.5183), - ('Evendale', 'OH', ARRAY[45241], 39.2509, -84.4268), - ('Hartford', 'KY', ARRAY[42347], 37.4506, -86.8930), - ('Cohasset', 'MN', ARRAY[55721], 47.2389, -93.6396), - ('Homestead Valley', 'CA', ARRAY[92285], 34.2730, -116.4145), - ('Muse', 'PA', ARRAY[15350], 40.2924, -80.2055), - ('Tobaccoville', 'NC', ARRAY[27045, 27050], 36.2256, -80.3591), - ('South Creek', 'WA', ARRAY[98387, 98338], 46.9994, -122.3921), - ('Hamilton', 'IL', ARRAY[62341], 40.3899, -91.3623), - ('West Sand Lake', 'NY', ARRAY[12196], 42.6403, -73.6032), - ('Perryman', 'MD', ARRAY[21130], 39.4633, -76.2115), - ('Moonachie', 'NJ', ARRAY[7608], 40.8409, -74.0590), - ('Stroud', 'OK', ARRAY[74028], 35.7680, -96.6474), - ('Timberville', 'VA', ARRAY[22853], 38.6340, -78.7730), - ('Tusculum', 'TN', ARRAY[37745], 36.1750, -82.7454), - ('Gastonville', 'PA', ARRAY[15336], 40.2669, -80.0095), - ('Tilton', 'IL', ARRAY[61833, 61832], 40.0941, -87.6398), - ('Riverton', 'NJ', ARRAY[8076], 40.0115, -75.0148), - ('Grand Forks AFB', 'ND', ARRAY[58205], 47.9557, -97.3913), - ('Riverview', 'DE', ARRAY[19943], 39.0293, -75.5202), - ('Dupont', 'PA', ARRAY[18641], 41.3237, -75.7421), - ('Circle D-KC Estates', 'TX', ARRAY[78659], 30.1611, -97.2349), - ('Oronogo', 'MO', ARRAY[64855], 37.1917, -94.4639), - ('Arcola', 'TX', ARRAY[77583], 29.5032, -95.4693), - ('Folly Beach', 'SC', ARRAY[29412], 32.6693, -79.9500), - ('Summerset', 'SD', ARRAY[57769], 44.1912, -103.3393), - ('Pablo', 'MT', ARRAY[59864, 59860], 47.6035, -114.1059), - ('Reidsville', 'GA', ARRAY[30499], 32.0871, -82.1244), - ('De Leon Springs', 'FL', ARRAY[32130], 29.1172, -81.3517), - ('Collierville', 'CA', ARRAY[95220], 38.2141, -121.2675), - ('Gleed', 'WA', ARRAY[98908], 46.6594, -120.6025), - ('Thunderbolt', 'GA', ARRAY[31410], 32.0339, -81.0480), - ('Ridgeway', 'AK', ARRAY[99669], 60.5305, -151.0301), - ('Clarcona', 'FL', ARRAY[32818], 28.6201, -81.5002), - ('Glasco', 'NY', ARRAY[12432], 42.0461, -73.9487), - ('Turley', 'OK', ARRAY[74126], 36.2473, -95.9654), - ('Bella Vista', 'CA', ARRAY[96003], 40.6502, -122.2450), - ('Holiday Shores', 'IL', ARRAY[62097], 38.9227, -89.9360), - ('White Mountain Lake', 'AZ', ARRAY[85901], 34.3441, -109.9879), - ('Marietta', 'PA', ARRAY[17547], 40.0574, -76.5515), - ('Lexington Hills', 'CA', ARRAY[95026, 95044], 37.1616, -121.9879), - ('Hoxie', 'AR', ARRAY[72476], 36.0360, -90.9736), - ('Zephyrhills North', 'FL', ARRAY[33540], 28.2520, -82.1654), - ('Peapack and Gladstone', 'NJ', ARRAY[7934, 7977], 40.7168, -74.6561), - ('Gray Summit', 'MO', ARRAY[63069, 63055], 38.4951, -90.8173), - ('East Prospect', 'PA', ARRAY[17368], 39.9710, -76.5215), - ('Deenwood', 'GA', ARRAY[31503], 31.2476, -82.3677), - ('Rockville', 'MN', ARRAY[56369, 56301], 45.4650, -94.3222), - ('Vado', 'NM', ARRAY[88048], 32.1279, -106.6571), - ('Brooks', 'KY', ARRAY[40109, 40165], 38.0656, -85.7178), - ('Maine', 'WI', ARRAY[54417, 54452], 45.0497, -89.6816), - ('La Fermina', 'PR', ARRAY[791], 18.1744, -65.8527), - ('Edwards AFB', 'CA', ARRAY[93524], 34.9045, -117.9295), - ('Williamsburg', 'OH', ARRAY[45176], 39.0556, -84.0478), - ('Yorkville', 'NY', ARRAY[13495], 43.1124, -75.2739), - ('Preston Heights', 'IL', ARRAY[60436], 41.4944, -88.0757), - ('Indian Springs Village', 'AL', ARRAY[35124], 33.3591, -86.7493), - ('Bakerstown', 'PA', ARRAY[15044], 40.6528, -79.9407), - ('Wrightsville Beach', 'NC', ARRAY[28408], 34.2130, -77.7980), - ('Woodside East', 'DE', ARRAY[19962], 39.0676, -75.5376), - ('Princeton Junction', 'NJ', ARRAY[8540], 40.3207, -74.6236), - ('Pacolet', 'SC', ARRAY[29373], 34.9100, -81.7666), - ('McQueeney', 'TX', ARRAY[78155], 29.6000, -98.0439), - ('Green Acres', 'CA', ARRAY[92596], 33.7350, -117.0782), - ('Heber-Overgaard', 'AZ', ARRAY[85928], 34.4141, -110.5696), - ('York Harbor', 'ME', ARRAY[3911], 43.1435, -70.6490), - ('South Fallsburg', 'NY', ARRAY[12747, 12733], 41.7218, -74.6350), - ('Haw River', 'NC', ARRAY[27258, 27217], 36.0925, -79.3616), - ('Whitesboro', 'NJ', ARRAY[8252], 39.0417, -74.8674), - ('Cannon AFB', 'NM', ARRAY[88103], 34.3885, -103.3185), - ('Twain Harte', 'CA', ARRAY[95383], 38.0384, -120.2340), - ('Downs', 'IL', ARRAY[61736], 40.3988, -88.8894), - ('West Simsbury', 'CT', ARRAY[6070], 41.8747, -72.8448); - -INSERT INTO faker.dictionary ( - type, - word -) VALUES - ('colors', 'amaranth'), - ('colors', 'amber'), - ('colors', 'amethyst'), - ('colors', 'apricot'), - ('colors', 'aqua'), - ('colors', 'aquamarine'), - ('colors', 'azure'), - ('colors', 'beige'), - ('colors', 'black'), - ('colors', 'blue'), - ('colors', 'blush'), - ('colors', 'bronze'), - ('colors', 'brown'), - ('colors', 'chocolate'), - ('colors', 'coffee'), - ('colors', 'copper'), - ('colors', 'coral'), - ('colors', 'crimson'), - ('colors', 'cyan'), - ('colors', 'emerald'), - ('colors', 'fuchsia'), - ('colors', 'gold'), - ('colors', 'gray'), - ('colors', 'green'), - ('colors', 'harlequin'), - ('colors', 'indigo'), - ('colors', 'ivory'), - ('colors', 'jade'), - ('colors', 'lavender'), - ('colors', 'lime'), - ('colors', 'magenta'), - ('colors', 'maroon'), - ('colors', 'moccasin'), - ('colors', 'olive'), - ('colors', 'orange'), - ('colors', 'peach'), - ('colors', 'pink'), - ('colors', 'plum'), - ('colors', 'purple'), - ('colors', 'red'), - ('colors', 'rose'), - ('colors', 'salmon'), - ('colors', 'sapphire'), - ('colors', 'scarlet'), - ('colors', 'silver'), - ('colors', 'tan'), - ('colors', 'teal'), - ('colors', 'tomato'), - ('colors', 'turquoise'), - ('colors', 'violet'), - ('colors', 'white'), - ('colors', 'yellow'), - ('stop', 'I'), - ('stop', 'a'), - ('stop', 'about'), - ('stop', 'an'), - ('stop', 'are'), - ('stop', 'as'), - ('stop', 'at'), - ('stop', 'be'), - ('stop', 'by'), - ('stop', 'com'), - ('stop', 'for'), - ('stop', 'from'), - ('stop', 'how'), - ('stop', 'in'), - ('stop', 'is'), - ('stop', 'it'), - ('stop', 'of'), - ('stop', 'on'), - ('stop', 'or'), - ('stop', 'that'), - ('stop', 'the'), - ('stop', 'this'), - ('stop', 'to'), - ('stop', 'was'), - ('stop', 'what'), - ('stop', 'when'), - ('stop', 'where'), - ('stop', 'who'), - ('stop', 'will'), - ('stop', 'with'), - ('stop', 'the'), - ('bizsuffix', 'Inc.'), - ('bizsuffix', 'Corp.'), - ('bizsuffix', 'Co.'), - ('bizsurname', 'Networks'), - ('bizsurname', 'Systems'), - ('bizsurname', 'Industries'), - ('bizsurname', 'Corporation'), - ('bizsurname', 'Tech'), - ('bizsurname', 'Acoustics'), - ('bizsurname', 'Lighting'), - ('bizsurname', 'Partners'), - ('bizsurname', 'Solutions'), - ('bizsurname', 'Security'), - ('bizsurname', 'Fund'), - ('bizsurname', 'Software'), - ('bizsurname', 'Bank'), - ('bizsurname', 'Sports'), - ('bizsurname', 'Technologies'), - ('bizsurname', 'Media'), - ('bizsurname', 'Capital'), - ('bizsurname', 'Capital Partners'), - ('bizsurname', 'Enterprises'), - ('bizsurname', 'Electronics'), - ('bizname', 'Sail'), - ('bizname', 'Oak'), - ('bizname', 'Spirit'), - ('bizname', 'Thunder'), - ('bizname', 'Saturn'), - ('bizname', 'Angel'), - ('bizname', 'Dream'), - ('bizname', 'Sales'), - ('bizname', 'Soul'), - ('bizname', 'Wave'), - ('bizname', 'Jewel'), - ('bizname', 'Vine'), - ('bizname', 'Day'), - ('bizname', 'Micro'), - ('bizname', 'Flux'), - ('bizname', 'Seed'), - ('bizname', 'Brand'), - ('bizname', 'Blue'), - ('bizname', 'Iron'), - ('bizname', 'Famous'), - ('bizname', 'Happy'), - ('bizname', 'Umbrella'), - ('bizname', 'Maple'), - ('bizname', 'Hooli'), - ('bizname', 'Lioness'), - ('bizname', 'Touch'), - ('bizname', 'Timber'), - ('bizname', 'Jet'), - ('bizname', 'Tulip'), - ('bizname', 'Apache'), - ('bizpostfix', 'tronics'), - ('bizpostfix', 'works'), - ('bizpostfix', 'dale'), - ('bizpostfix', 'water'), - ('bizpostfix', 'coms'), - ('bizpostfix', 'records'), - ('bizpostfix', 'page'), - ('bizpostfix', 'space'), - ('bizpostfix', 'bond'), - ('bizpostfix', 'bit'), - ('bizpostfix', 'point'), - ('bizpostfix', 'cast'), - ('bizpostfix', 'fire'), - ('bizpostfix', 'arts'), - ('bizpostfix', 'scape'), - ('bizpostfix', 'bank'), - ('bizpostfix', 'life'), - ('bizpostfix', 'stone'), - ('animals', 'canidae'), - ('animals', 'felidae'), - ('animals', 'cat'), - ('animals', 'cattle'), - ('animals', 'dog'), - ('animals', 'donkey'), - ('animals', 'goat'), - ('animals', 'horse'), - ('animals', 'pig'), - ('animals', 'rabbit'), - ('animals', 'aardvark'), - ('animals', 'aardwolf'), - ('animals', 'albatross'), - ('animals', 'alligator'), - ('animals', 'alpaca'), - ('animals', 'amphibian'), - ('animals', 'anaconda'), - ('animals', 'angelfish'), - ('animals', 'anglerfish'), - ('animals', 'ant'), - ('animals', 'anteater'), - ('animals', 'antelope'), - ('animals', 'antlion'), - ('animals', 'ape'), - ('animals', 'aphid'), - ('animals', 'armadillo'), - ('animals', 'asp'), - ('animals', 'baboon'), - ('animals', 'badger'), - ('animals', 'bandicoot'), - ('animals', 'barnacle'), - ('animals', 'barracuda'), - ('animals', 'basilisk'), - ('animals', 'bass'), - ('animals', 'bat'), - ('animals', 'bear'), - ('animals', 'beaver'), - ('animals', 'bedbug'), - ('animals', 'bee'), - ('animals', 'beetle'), - ('animals', 'bird'), - ('animals', 'bison'), - ('animals', 'blackbird'), - ('animals', 'boa'), - ('animals', 'boar'), - ('animals', 'bobcat'), - ('animals', 'bobolink'), - ('animals', 'bonobo'), - ('animals', 'booby'), - ('animals', 'bovid'), - ('animals', 'bug'), - ('animals', 'butterfly'), - ('animals', 'buzzard'), - ('animals', 'camel'), - ('animals', 'canid'), - ('animals', 'capybara'), - ('animals', 'cardinal'), - ('animals', 'caribou'), - ('animals', 'carp'), - ('animals', 'cat'), - ('animals', 'catshark'), - ('animals', 'caterpillar'), - ('animals', 'catfish'), - ('animals', 'cattle'), - ('animals', 'centipede'), - ('animals', 'cephalopod'), - ('animals', 'chameleon'), - ('animals', 'cheetah'), - ('animals', 'chickadee'), - ('animals', 'chicken'), - ('animals', 'chimpanzee'), - ('animals', 'chinchilla'), - ('animals', 'chipmunk'), - ('animals', 'clam'), - ('animals', 'clownfish'), - ('animals', 'cobra'), - ('animals', 'cockroach'), - ('animals', 'cod'), - ('animals', 'condor'), - ('animals', 'constrictor'), - ('animals', 'coral'), - ('animals', 'cougar'), - ('animals', 'cow'), - ('animals', 'coyote'), - ('animals', 'crab'), - ('animals', 'crane'), - ('animals', 'crawdad'), - ('animals', 'crayfish'), - ('animals', 'cricket'), - ('animals', 'crocodile'), - ('animals', 'crow'), - ('animals', 'cuckoo'), - ('animals', 'cicada'), - ('animals', 'damselfly'), - ('animals', 'deer'), - ('animals', 'dingo'), - ('animals', 'dinosaur'), - ('animals', 'dog'), - ('animals', 'dolphin'), - ('animals', 'donkey'), - ('animals', 'dormouse'), - ('animals', 'dove'), - ('animals', 'dragonfly'), - ('animals', 'dragon'), - ('animals', 'duck'), - ('animals', 'eagle'), - ('animals', 'earthworm'), - ('animals', 'earwig'), - ('animals', 'echidna'), - ('animals', 'eel'), - ('animals', 'egret'), - ('animals', 'elephant'), - ('animals', 'elk'), - ('animals', 'emu'), - ('animals', 'ermine'), - ('animals', 'falcon'), - ('animals', 'ferret'), - ('animals', 'finch'), - ('animals', 'firefly'), - ('animals', 'fish'), - ('animals', 'flamingo'), - ('animals', 'flea'), - ('animals', 'fly'), - ('animals', 'flyingfish'), - ('animals', 'fowl'), - ('animals', 'fox'), - ('animals', 'frog'), - ('animals', 'gamefowl'), - ('animals', 'galliform'), - ('animals', 'gazelle'), - ('animals', 'gecko'), - ('animals', 'gerbil'), - ('animals', 'gibbon'), - ('animals', 'giraffe'), - ('animals', 'goat'), - ('animals', 'goldfish'), - ('animals', 'goose'), - ('animals', 'gopher'), - ('animals', 'gorilla'), - ('animals', 'grasshopper'), - ('animals', 'grouse'), - ('animals', 'guan'), - ('animals', 'guanaco'), - ('animals', 'guineafowl'), - ('animals', 'gull'), - ('animals', 'guppy'), - ('animals', 'haddock'), - ('animals', 'halibut'), - ('animals', 'hamster'), - ('animals', 'hare'), - ('animals', 'harrier'), - ('animals', 'hawk'), - ('animals', 'hedgehog'), - ('animals', 'heron'), - ('animals', 'herring'), - ('animals', 'hippopotamus'), - ('animals', 'hookworm'), - ('animals', 'hornet'), - ('animals', 'horse'), - ('animals', 'hoverfly'), - ('animals', 'hummingbird'), - ('animals', 'hyena'), - ('animals', 'iguana'), - ('animals', 'impala'), - ('animals', 'jackal'), - ('animals', 'jaguar'), - ('animals', 'jay'), - ('animals', 'jellyfish'), - ('animals', 'junglefowl'), - ('animals', 'kangaroo'), - ('animals', 'kingfisher'), - ('animals', 'kite'), - ('animals', 'kiwi'), - ('animals', 'koala'), - ('animals', 'koi'), - ('animals', 'krill'), - ('animals', 'ladybug'), - ('animals', 'lamprey'), - ('animals', 'landfowl'), - ('animals', 'lark'), - ('animals', 'leech'), - ('animals', 'lemming'), - ('animals', 'lemur'), - ('animals', 'leopard'), - ('animals', 'leopon'), - ('animals', 'limpet'), - ('animals', 'lion'), - ('animals', 'lizard'), - ('animals', 'llama'), - ('animals', 'lobster'), - ('animals', 'locust'), - ('animals', 'loon'), - ('animals', 'louse'), - ('animals', 'lungfish'), - ('animals', 'lynx'), - ('animals', 'macaw'), - ('animals', 'mackerel'), - ('animals', 'magpie'), - ('animals', 'mammal'), - ('animals', 'manatee'), - ('animals', 'mandrill'), - ('animals', 'marlin'), - ('animals', 'marmoset'), - ('animals', 'marmot'), - ('animals', 'marsupial'), - ('animals', 'marten'), - ('animals', 'mastodon'), - ('animals', 'meadowlark'), - ('animals', 'meerkat'), - ('animals', 'mink'), - ('animals', 'minnow'), - ('animals', 'mite'), - ('animals', 'mockingbird'), - ('animals', 'mole'), - ('animals', 'mollusk'), - ('animals', 'mongoose'), - ('animals', 'monkey'), - ('animals', 'moose'), - ('animals', 'mosquito'), - ('animals', 'moth'), - ('animals', 'mouse'), - ('animals', 'mule'), - ('animals', 'muskox'), - ('animals', 'narwhal'), - ('animals', 'newt'), - ('animals', 'nightingale'), - ('animals', 'ocelot'), - ('animals', 'octopus'), - ('animals', 'opossum'), - ('animals', 'orangutan'), - ('animals', 'orca'), - ('animals', 'ostrich'), - ('animals', 'otter'), - ('animals', 'owl'), - ('animals', 'ox'), - ('animals', 'panda'), - ('animals', 'panther'), - ('animals', 'parakeet'), - ('animals', 'parrot'), - ('animals', 'parrotfish'), - ('animals', 'partridge'), - ('animals', 'peacock'), - ('animals', 'peafowl'), - ('animals', 'pelican'), - ('animals', 'penguin'), - ('animals', 'perch'), - ('animals', 'pheasant'), - ('animals', 'pig'), - ('animals', 'pigeon'), - ('animals', 'pike'), - ('animals', 'pinniped'), - ('animals', 'piranha'), - ('animals', 'planarian'), - ('animals', 'platypus'), - ('animals', 'pony'), - ('animals', 'porcupine'), - ('animals', 'porpoise'), - ('animals', 'possum'), - ('animals', 'prawn'), - ('animals', 'primate'), - ('animals', 'ptarmigan'), - ('animals', 'puffin'), - ('animals', 'puma'), - ('animals', 'python'), - ('animals', 'quail'), - ('animals', 'quelea'), - ('animals', 'quokka'), - ('animals', 'rabbit'), - ('animals', 'raccoon'), - ('animals', 'rat'), - ('animals', 'rattlesnake'), - ('animals', 'raven'), - ('animals', 'reindeer'), - ('animals', 'reptile'), - ('animals', 'rhinoceros'), - ('animals', 'roadrunner'), - ('animals', 'rodent'), - ('animals', 'rook'), - ('animals', 'rooster'), - ('animals', 'roundworm'), - ('animals', 'sailfish'), - ('animals', 'salamander'), - ('animals', 'salmon'), - ('animals', 'sawfish'), - ('animals', 'scallop'), - ('animals', 'scorpion'), - ('animals', 'seahorse'), - ('animals', 'shark'), - ('animals', 'sheep'), - ('animals', 'shrew'), - ('animals', 'shrimp'), - ('animals', 'silkworm'), - ('animals', 'silverfish'), - ('animals', 'skink'), - ('animals', 'skunk'), - ('animals', 'sloth'), - ('animals', 'slug'), - ('animals', 'smelt'), - ('animals', 'snail'), - ('animals', 'snake'), - ('animals', 'snipe'), - ('animals', 'sole'), - ('animals', 'sparrow'), - ('animals', 'spider'), - ('animals', 'spoonbill'), - ('animals', 'squid'), - ('animals', 'squirrel'), - ('animals', 'starfish'), - ('animals', 'stingray'), - ('animals', 'stoat'), - ('animals', 'stork'), - ('animals', 'sturgeon'), - ('animals', 'swallow'), - ('animals', 'swan'), - ('animals', 'swift'), - ('animals', 'swordfish'), - ('animals', 'swordtail'), - ('animals', 'tahr'), - ('animals', 'takin'), - ('animals', 'tapir'), - ('animals', 'tarantula'), - ('animals', 'tarsier'), - ('animals', 'termite'), - ('animals', 'tern'), - ('animals', 'thrush'), - ('animals', 'tick'), - ('animals', 'tiger'), - ('animals', 'tiglon'), - ('animals', 'toad'), - ('animals', 'tortoise'), - ('animals', 'toucan'), - ('animals', 'trout'), - ('animals', 'tuna'), - ('animals', 'turkey'), - ('animals', 'turtle'), - ('animals', 'tyrannosaurus'), - ('animals', 'urial'), - ('animals', 'vicuna'), - ('animals', 'viper'), - ('animals', 'vole'), - ('animals', 'vulture'), - ('animals', 'wallaby'), - ('animals', 'walrus'), - ('animals', 'wasp'), - ('animals', 'warbler'), - ('animals', 'weasel'), - ('animals', 'whale'), - ('animals', 'whippet'), - ('animals', 'whitefish'), - ('animals', 'wildcat'), - ('animals', 'wildebeest'), - ('animals', 'wildfowl'), - ('animals', 'wolf'), - ('animals', 'wolverine'), - ('animals', 'wombat'), - ('animals', 'woodpecker'), - ('animals', 'worm'), - ('animals', 'wren'), - ('animals', 'xerinae'), - ('animals', 'yak'), - ('animals', 'zebra'), - ('animals', 'alpaca'), - ('animals', 'cat'), - ('animals', 'cattle'), - ('animals', 'chicken'), - ('animals', 'dog'), - ('animals', 'donkey'), - ('animals', 'ferret'), - ('animals', 'gayal'), - ('animals', 'goldfish'), - ('animals', 'guppy'), - ('animals', 'horse'), - ('animals', 'koi'), - ('animals', 'llama'), - ('animals', 'sheep'), - ('animals', 'yak'), - ('animals', 'unicorn'), - ('adjectives', 'average'), - ('adjectives', 'big'), - ('adjectives', 'colossal'), - ('adjectives', 'fat'), - ('adjectives', 'giant'), - ('adjectives', 'gigantic'), - ('adjectives', 'great'), - ('adjectives', 'huge'), - ('adjectives', 'immense'), - ('adjectives', 'large'), - ('adjectives', 'little'), - ('adjectives', 'long'), - ('adjectives', 'mammoth'), - ('adjectives', 'massive'), - ('adjectives', 'miniature'), - ('adjectives', 'petite'), - ('adjectives', 'puny'), - ('adjectives', 'short'), - ('adjectives', 'small'), - ('adjectives', 'tall'), - ('adjectives', 'tiny'), - ('adjectives', 'boiling'), - ('adjectives', 'breezy'), - ('adjectives', 'broken'), - ('adjectives', 'bumpy'), - ('adjectives', 'chilly'), - ('adjectives', 'cold'), - ('adjectives', 'cool'), - ('adjectives', 'creepy'), - ('adjectives', 'crooked'), - ('adjectives', 'cuddly'), - ('adjectives', 'curly'), - ('adjectives', 'damaged'), - ('adjectives', 'damp'), - ('adjectives', 'dirty'), - ('adjectives', 'dry'), - ('adjectives', 'dusty'), - ('adjectives', 'filthy'), - ('adjectives', 'flaky'), - ('adjectives', 'fluffy'), - ('adjectives', 'wet'), - ('adjectives', 'broad'), - ('adjectives', 'chubby'), - ('adjectives', 'crooked'), - ('adjectives', 'curved'), - ('adjectives', 'deep'), - ('adjectives', 'flat'), - ('adjectives', 'high'), - ('adjectives', 'hollow'), - ('adjectives', 'low'), - ('adjectives', 'narrow'), - ('adjectives', 'round'), - ('adjectives', 'shallow'), - ('adjectives', 'skinny'), - ('adjectives', 'square'), - ('adjectives', 'steep'), - ('adjectives', 'straight'), - ('adjectives', 'wide'), - ('adjectives', 'ancient'), - ('adjectives', 'brief'), - ('adjectives', 'early'), - ('adjectives', 'fast'), - ('adjectives', 'late'), - ('adjectives', 'long'), - ('adjectives', 'modern'), - ('adjectives', 'old'), - ('adjectives', 'quick'), - ('adjectives', 'rapid'), - ('adjectives', 'short'), - ('adjectives', 'slow'), - ('adjectives', 'swift'), - ('adjectives', 'young'), - ('adjectives', 'abundant'), - ('adjectives', 'empty'), - ('adjectives', 'few'), - ('adjectives', 'heavy'), - ('adjectives', 'light'), - ('adjectives', 'many'), - ('adjectives', 'numerous'), - ('adjectives', 'Sound'), - ('adjectives', 'cooing'), - ('adjectives', 'deafening'), - ('adjectives', 'faint'), - ('adjectives', 'harsh'), - ('adjectives', 'hissing'), - ('adjectives', 'hushed'), - ('adjectives', 'husky'), - ('adjectives', 'loud'), - ('adjectives', 'melodic'), - ('adjectives', 'moaning'), - ('adjectives', 'mute'), - ('adjectives', 'noisy'), - ('adjectives', 'purring'), - ('adjectives', 'quiet'), - ('adjectives', 'raspy'), - ('adjectives', 'resonant'), - ('adjectives', 'screeching'), - ('adjectives', 'shrill'), - ('adjectives', 'silent'), - ('adjectives', 'soft'), - ('adjectives', 'squealing'), - ('adjectives', 'thundering'), - ('adjectives', 'voiceless'), - ('adjectives', 'whispering'), - ('adjectives', 'bitter'), - ('adjectives', 'delicious'), - ('adjectives', 'fresh'), - ('adjectives', 'juicy'), - ('adjectives', 'ripe'), - ('adjectives', 'rotten'), - ('adjectives', 'salty'), - ('adjectives', 'sour'), - ('adjectives', 'spicy'), - ('adjectives', 'stale'), - ('adjectives', 'sticky'), - ('adjectives', 'strong'), - ('adjectives', 'sweet'), - ('adjectives', 'tasteless'), - ('adjectives', 'tasty'), - ('adjectives', 'thirsty'), - ('adjectives', 'fluttering'), - ('adjectives', 'fuzzy'), - ('adjectives', 'greasy'), - ('adjectives', 'grubby'), - ('adjectives', 'hard'), - ('adjectives', 'hot'), - ('adjectives', 'icy'), - ('adjectives', 'loose'), - ('adjectives', 'melted'), - ('adjectives', 'plastic'), - ('adjectives', 'prickly'), - ('adjectives', 'rainy'), - ('adjectives', 'rough'), - ('adjectives', 'scattered'), - ('adjectives', 'shaggy'), - ('adjectives', 'shaky'), - ('adjectives', 'sharp'), - ('adjectives', 'shivering'), - ('adjectives', 'silky'), - ('adjectives', 'slimy'), - ('adjectives', 'slippery'), - ('adjectives', 'smooth'), - ('adjectives', 'soft'), - ('adjectives', 'solid'), - ('adjectives', 'steady'), - ('adjectives', 'sticky'), - ('adjectives', 'tender'), - ('adjectives', 'tight'), - ('adjectives', 'uneven'), - ('adjectives', 'weak'), - ('adjectives', 'wet'), - ('adjectives', 'wooden'), - ('adjectives', 'afraid'), - ('adjectives', 'angry'), - ('adjectives', 'annoyed'), - ('adjectives', 'anxious'), - ('adjectives', 'arrogant'), - ('adjectives', 'ashamed'), - ('adjectives', 'awful'), - ('adjectives', 'bad'), - ('adjectives', 'bewildered'), - ('adjectives', 'bored'), - ('adjectives', 'combative'), - ('adjectives', 'condemned'), - ('adjectives', 'confused'), - ('adjectives', 'creepy'), - ('adjectives', 'cruel'), - ('adjectives', 'dangerous'), - ('adjectives', 'defeated'), - ('adjectives', 'defiant'), - ('adjectives', 'depressed'), - ('adjectives', 'disgusted'), - ('adjectives', 'disturbed'), - ('adjectives', 'eerie'), - ('adjectives', 'embarrassed'), - ('adjectives', 'envious'), - ('adjectives', 'evil'), - ('adjectives', 'fierce'), - ('adjectives', 'foolish'), - ('adjectives', 'frantic'), - ('adjectives', 'frightened'), - ('adjectives', 'grieving'), - ('adjectives', 'helpless'), - ('adjectives', 'homeless'), - ('adjectives', 'hungry'), - ('adjectives', 'hurt'), - ('adjectives', 'ill'), - ('adjectives', 'jealous'), - ('adjectives', 'lonely'), - ('adjectives', 'mysterious'), - ('adjectives', 'naughty'), - ('adjectives', 'nervous'), - ('adjectives', 'obnoxious'), - ('adjectives', 'outrageous'), - ('adjectives', 'panicky'), - ('adjectives', 'repulsive'), - ('adjectives', 'scary'), - ('adjectives', 'scornful'), - ('adjectives', 'selfish'), - ('adjectives', 'sore'), - ('adjectives', 'tense'), - ('adjectives', 'terrible'), - ('adjectives', 'thoughtless'), - ('adjectives', 'tired'), - ('adjectives', 'troubled'), - ('adjectives', 'upset'), - ('adjectives', 'uptight'), - ('adjectives', 'weary'), - ('adjectives', 'wicked'), - ('adjectives', 'worried'), - ('adjectives', 'agreeable'), - ('adjectives', 'amused'), - ('adjectives', 'brave'), - ('adjectives', 'calm'), - ('adjectives', 'charming'), - ('adjectives', 'cheerful'), - ('adjectives', 'comfortable'), - ('adjectives', 'cooperative'), - ('adjectives', 'courageous'), - ('adjectives', 'delightful'), - ('adjectives', 'determined'), - ('adjectives', 'eager'), - ('adjectives', 'elated'), - ('adjectives', 'enchanting'), - ('adjectives', 'encouraging'), - ('adjectives', 'energetic'), - ('adjectives', 'enthusiastic'), - ('adjectives', 'excited'), - ('adjectives', 'exuberant'), - ('adjectives', 'fair'), - ('adjectives', 'faithful'), - ('adjectives', 'fantastic'), - ('adjectives', 'fine'), - ('adjectives', 'friendly'), - ('adjectives', 'funny'), - ('adjectives', 'gentle'), - ('adjectives', 'glorious'), - ('adjectives', 'good'), - ('adjectives', 'happy'), - ('adjectives', 'healthy'), - ('adjectives', 'helpful'), - ('adjectives', 'hilarious'), - ('adjectives', 'jolly'), - ('adjectives', 'joyous'), - ('adjectives', 'kind'), - ('adjectives', 'lively'), - ('adjectives', 'lovely'), - ('adjectives', 'lucky'), - ('adjectives', 'obedient'), - ('adjectives', 'perfect'), - ('adjectives', 'pleasant'), - ('adjectives', 'proud'), - ('adjectives', 'relieved'), - ('adjectives', 'silly'), - ('adjectives', 'smiling'), - ('adjectives', 'splendid'), - ('adjectives', 'successful'), - ('adjectives', 'thoughtful'), - ('adjectives', 'victorious'), - ('adjectives', 'vivacious'), - ('adjectives', 'witty'), - ('adjectives', 'wonderful'), - ('adjectives', 'zealous'), - ('adjectives', 'zany'), - ('adjectives', 'other'), - ('adjectives', 'good'), - ('adjectives', 'new'), - ('adjectives', 'old'), - ('adjectives', 'great'), - ('adjectives', 'high'), - ('adjectives', 'small'), - ('adjectives', 'different'), - ('adjectives', 'large'), - ('adjectives', 'local'), - ('adjectives', 'social'), - ('adjectives', 'important'), - ('adjectives', 'long'), - ('adjectives', 'young'), - ('adjectives', 'national'), - ('adjectives', 'british'), - ('adjectives', 'right'), - ('adjectives', 'early'), - ('adjectives', 'possible'), - ('adjectives', 'big'), - ('adjectives', 'little'), - ('adjectives', 'political'), - ('adjectives', 'able'), - ('adjectives', 'late'), - ('adjectives', 'general'), - ('adjectives', 'full'), - ('adjectives', 'far'), - ('adjectives', 'low'), - ('adjectives', 'public'), - ('adjectives', 'available'), - ('adjectives', 'bad'), - ('adjectives', 'main'), - ('adjectives', 'sure'), - ('adjectives', 'clear'), - ('adjectives', 'major'), - ('adjectives', 'economic'), - ('adjectives', 'only'), - ('adjectives', 'likely'), - ('adjectives', 'real'), - ('adjectives', 'black'), - ('adjectives', 'particular'), - ('adjectives', 'international'), - ('adjectives', 'special'), - ('adjectives', 'difficult'), - ('adjectives', 'certain'), - ('adjectives', 'open'), - ('adjectives', 'whole'), - ('adjectives', 'white'), - ('adjectives', 'free'), - ('adjectives', 'short'), - ('adjectives', 'easy'), - ('adjectives', 'strong'), - ('adjectives', 'european'), - ('adjectives', 'central'), - ('adjectives', 'similar'), - ('adjectives', 'human'), - ('adjectives', 'common'), - ('adjectives', 'necessary'), - ('adjectives', 'single'), - ('adjectives', 'personal'), - ('adjectives', 'hard'), - ('adjectives', 'private'), - ('adjectives', 'poor'), - ('adjectives', 'financial'), - ('adjectives', 'wide'), - ('adjectives', 'foreign'), - ('adjectives', 'simple'), - ('adjectives', 'recent'), - ('adjectives', 'concerned'), - ('adjectives', 'american'), - ('adjectives', 'various'), - ('adjectives', 'close'), - ('adjectives', 'fine'), - ('adjectives', 'english'), - ('adjectives', 'wrong'), - ('adjectives', 'present'), - ('adjectives', 'royal'), - ('adjectives', 'natural'), - ('adjectives', 'individual'), - ('adjectives', 'nice'), - ('adjectives', 'french'), - ('adjectives', 'following'), - ('adjectives', 'current'), - ('adjectives', 'modern'), - ('adjectives', 'labour'), - ('adjectives', 'legal'), - ('adjectives', 'happy'), - ('adjectives', 'final'), - ('adjectives', 'red'), - ('adjectives', 'normal'), - ('adjectives', 'serious'), - ('adjectives', 'previous'), - ('adjectives', 'total'), - ('adjectives', 'prime'), - ('adjectives', 'significant'), - ('adjectives', 'industrial'), - ('adjectives', 'sorry'), - ('adjectives', 'dead'), - ('adjectives', 'specific'), - ('adjectives', 'appropriate'), - ('adjectives', 'top'), - ('adjectives', 'soviet'), - ('adjectives', 'basic'), - ('adjectives', 'military'), - ('adjectives', 'original'), - ('adjectives', 'successful'), - ('adjectives', 'aware'), - ('adjectives', 'hon'), - ('adjectives', 'popular'), - ('adjectives', 'heavy'), - ('adjectives', 'professional'), - ('adjectives', 'direct'), - ('adjectives', 'dark'), - ('adjectives', 'cold'), - ('adjectives', 'ready'), - ('adjectives', 'green'), - ('adjectives', 'useful'), - ('adjectives', 'effective'), - ('adjectives', 'western'), - ('adjectives', 'traditional'), - ('adjectives', 'scottish'), - ('adjectives', 'german'), - ('adjectives', 'independent'), - ('adjectives', 'deep'), - ('adjectives', 'interesting'), - ('adjectives', 'considerable'), - ('adjectives', 'involved'), - ('adjectives', 'physical'), - ('adjectives', 'left'), - ('adjectives', 'hot'), - ('adjectives', 'existing'), - ('adjectives', 'responsible'), - ('adjectives', 'complete'), - ('adjectives', 'medical'), - ('adjectives', 'blue'), - ('adjectives', 'extra'), - ('adjectives', 'past'), - ('adjectives', 'male'), - ('adjectives', 'interested'), - ('adjectives', 'fair'), - ('adjectives', 'essential'), - ('adjectives', 'beautiful'), - ('adjectives', 'civil'), - ('adjectives', 'primary'), - ('adjectives', 'obvious'), - ('adjectives', 'future'), - ('adjectives', 'environmental'), - ('adjectives', 'positive'), - ('adjectives', 'senior'), - ('adjectives', 'nuclear'), - ('adjectives', 'annual'), - ('adjectives', 'relevant'), - ('adjectives', 'huge'), - ('adjectives', 'rich'), - ('adjectives', 'commercial'), - ('adjectives', 'safe'), - ('adjectives', 'regional'), - ('adjectives', 'practical'), - ('adjectives', 'official'), - ('adjectives', 'separate'), - ('adjectives', 'key'), - ('adjectives', 'chief'), - ('adjectives', 'regular'), - ('adjectives', 'due'), - ('adjectives', 'additional'), - ('adjectives', 'active'), - ('adjectives', 'powerful'), - ('adjectives', 'complex'), - ('adjectives', 'standard'), - ('adjectives', 'impossible'), - ('adjectives', 'light'), - ('adjectives', 'warm'), - ('adjectives', 'middle'), - ('adjectives', 'fresh'), - ('adjectives', 'sexual'), - ('adjectives', 'front'), - ('adjectives', 'domestic'), - ('adjectives', 'actual'), - ('adjectives', 'united'), - ('adjectives', 'technical'), - ('adjectives', 'ordinary'), - ('adjectives', 'cheap'), - ('adjectives', 'strange'), - ('adjectives', 'internal'), - ('adjectives', 'excellent'), - ('adjectives', 'quiet'), - ('adjectives', 'soft'), - ('adjectives', 'potential'), - ('adjectives', 'northern'), - ('adjectives', 'religious'), - ('adjectives', 'quick'), - ('adjectives', 'very'), - ('adjectives', 'famous'), - ('adjectives', 'cultural'), - ('adjectives', 'proper'), - ('adjectives', 'broad'), - ('adjectives', 'joint'), - ('adjectives', 'formal'), - ('adjectives', 'limited'), - ('adjectives', 'conservative'), - ('adjectives', 'lovely'), - ('adjectives', 'usual'), - ('adjectives', 'ltd'), - ('adjectives', 'unable'), - ('adjectives', 'rural'), - ('adjectives', 'initial'), - ('adjectives', 'substantial'), - ('adjectives', 'christian'), - ('adjectives', 'bright'), - ('adjectives', 'average'), - ('adjectives', 'leading'), - ('adjectives', 'reasonable'), - ('adjectives', 'immediate'), - ('adjectives', 'suitable'), - ('adjectives', 'equal'), - ('adjectives', 'detailed'), - ('adjectives', 'working'), - ('adjectives', 'overall'), - ('adjectives', 'female'), - ('adjectives', 'afraid'), - ('adjectives', 'democratic'), - ('adjectives', 'growing'), - ('adjectives', 'sufficient'), - ('adjectives', 'scientific'), - ('adjectives', 'eastern'), - ('adjectives', 'correct'), - ('adjectives', 'inc'), - ('adjectives', 'irish'), - ('adjectives', 'expensive'), - ('adjectives', 'educational'), - ('adjectives', 'mental'), - ('adjectives', 'dangerous'), - ('adjectives', 'critical'), - ('adjectives', 'increased'), - ('adjectives', 'familiar'), - ('adjectives', 'unlikely'), - ('adjectives', 'double'), - ('adjectives', 'perfect'), - ('adjectives', 'slow'), - ('adjectives', 'tiny'), - ('adjectives', 'dry'), - ('adjectives', 'historical'), - ('adjectives', 'thin'), - ('adjectives', 'daily'), - ('adjectives', 'southern'), - ('adjectives', 'increasing'), - ('adjectives', 'wild'), - ('adjectives', 'alone'), - ('adjectives', 'urban'), - ('adjectives', 'empty'), - ('adjectives', 'married'), - ('adjectives', 'narrow'), - ('adjectives', 'liberal'), - ('adjectives', 'supposed'), - ('adjectives', 'upper'), - ('adjectives', 'apparent'), - ('adjectives', 'tall'), - ('adjectives', 'busy'), - ('adjectives', 'bloody'), - ('adjectives', 'prepared'), - ('adjectives', 'russian'), - ('adjectives', 'moral'), - ('adjectives', 'careful'), - ('adjectives', 'clean'), - ('adjectives', 'attractive'), - ('adjectives', 'japanese'), - ('adjectives', 'vital'), - ('adjectives', 'thick'), - ('adjectives', 'alternative'), - ('adjectives', 'fast'), - ('adjectives', 'ancient'), - ('adjectives', 'elderly'), - ('adjectives', 'rare'), - ('adjectives', 'external'), - ('adjectives', 'capable'), - ('adjectives', 'brief'), - ('adjectives', 'wonderful'), - ('adjectives', 'grand'), - ('adjectives', 'typical'), - ('adjectives', 'entire'), - ('adjectives', 'grey'), - ('adjectives', 'constant'), - ('adjectives', 'vast'), - ('adjectives', 'surprised'), - ('adjectives', 'ideal'), - ('adjectives', 'terrible'), - ('adjectives', 'academic'), - ('adjectives', 'funny'), - ('adjectives', 'minor'), - ('adjectives', 'pleased'), - ('adjectives', 'severe'), - ('adjectives', 'ill'), - ('adjectives', 'corporate'), - ('adjectives', 'negative'), - ('adjectives', 'permanent'), - ('adjectives', 'weak'), - ('adjectives', 'brown'), - ('adjectives', 'fundamental'), - ('adjectives', 'odd'), - ('adjectives', 'crucial'), - ('adjectives', 'inner'), - ('adjectives', 'used'), - ('adjectives', 'criminal'), - ('adjectives', 'contemporary'), - ('adjectives', 'sharp'), - ('adjectives', 'sick'), - ('adjectives', 'near'), - ('adjectives', 'roman'), - ('adjectives', 'massive'), - ('adjectives', 'unique'), - ('adjectives', 'secondary'), - ('adjectives', 'parliamentary'), - ('adjectives', 'african'), - ('adjectives', 'unknown'), - ('adjectives', 'subsequent'), - ('adjectives', 'angry'), - ('adjectives', 'alive'), - ('adjectives', 'guilty'), - ('adjectives', 'lucky'), - ('adjectives', 'enormous'), - ('adjectives', 'well'), - ('adjectives', 'communist'), - ('adjectives', 'yellow'), - ('adjectives', 'unusual'), - ('adjectives', 'net'), - ('adjectives', 'tough'), - ('adjectives', 'dear'), - ('adjectives', 'extensive'), - ('adjectives', 'glad'), - ('adjectives', 'remaining'), - ('adjectives', 'agricultural'), - ('adjectives', 'alright'), - ('adjectives', 'healthy'), - ('adjectives', 'italian'), - ('adjectives', 'principal'), - ('adjectives', 'tired'), - ('adjectives', 'efficient'), - ('adjectives', 'comfortable'), - ('adjectives', 'chinese'), - ('adjectives', 'relative'), - ('adjectives', 'friendly'), - ('adjectives', 'conventional'), - ('adjectives', 'willing'), - ('adjectives', 'sudden'), - ('adjectives', 'proposed'), - ('adjectives', 'voluntary'), - ('adjectives', 'slight'), - ('adjectives', 'valuable'), - ('adjectives', 'dramatic'), - ('adjectives', 'golden'), - ('adjectives', 'temporary'), - ('adjectives', 'federal'), - ('adjectives', 'keen'), - ('adjectives', 'flat'), - ('adjectives', 'silent'), - ('adjectives', 'indian'), - ('adjectives', 'worried'), - ('adjectives', 'pale'), - ('adjectives', 'statutory'), - ('adjectives', 'welsh'), - ('adjectives', 'dependent'), - ('adjectives', 'firm'), - ('adjectives', 'wet'), - ('adjectives', 'competitive'), - ('adjectives', 'armed'), - ('adjectives', 'radical'), - ('adjectives', 'outside'), - ('adjectives', 'acceptable'), - ('adjectives', 'sensitive'), - ('adjectives', 'living'), - ('adjectives', 'pure'), - ('adjectives', 'global'), - ('adjectives', 'emotional'), - ('adjectives', 'sad'), - ('adjectives', 'secret'), - ('adjectives', 'rapid'), - ('adjectives', 'adequate'), - ('adjectives', 'fixed'), - ('adjectives', 'sweet'), - ('adjectives', 'administrative'), - ('adjectives', 'wooden'), - ('adjectives', 'remarkable'), - ('adjectives', 'comprehensive'), - ('adjectives', 'surprising'), - ('adjectives', 'solid'), - ('adjectives', 'rough'), - ('adjectives', 'mere'), - ('adjectives', 'mass'), - ('adjectives', 'brilliant'), - ('adjectives', 'maximum'), - ('adjectives', 'absolute'), - ('adjectives', 'tory'), - ('adjectives', 'electronic'), - ('adjectives', 'visual'), - ('adjectives', 'electric'), - ('adjectives', 'cool'), - ('adjectives', 'spanish'), - ('adjectives', 'literary'), - ('adjectives', 'continuing'), - ('adjectives', 'supreme'), - ('adjectives', 'chemical'), - ('adjectives', 'genuine'), - ('adjectives', 'exciting'), - ('adjectives', 'written'), - ('adjectives', 'stupid'), - ('adjectives', 'advanced'), - ('adjectives', 'extreme'), - ('adjectives', 'classical'), - ('adjectives', 'fit'), - ('adjectives', 'favourite'), - ('adjectives', 'socialist'), - ('adjectives', 'widespread'), - ('adjectives', 'confident'), - ('adjectives', 'straight'), - ('adjectives', 'catholic'), - ('adjectives', 'proud'), - ('adjectives', 'numerous'), - ('adjectives', 'opposite'), - ('adjectives', 'distinct'), - ('adjectives', 'mad'), - ('adjectives', 'helpful'), - ('adjectives', 'given'), - ('adjectives', 'disabled'), - ('adjectives', 'consistent'), - ('adjectives', 'anxious'), - ('adjectives', 'nervous'), - ('adjectives', 'awful'), - ('adjectives', 'stable'), - ('adjectives', 'constitutional'), - ('adjectives', 'satisfied'), - ('adjectives', 'conscious'), - ('adjectives', 'developing'), - ('adjectives', 'strategic'), - ('adjectives', 'holy'), - ('adjectives', 'smooth'), - ('adjectives', 'dominant'), - ('adjectives', 'remote'), - ('adjectives', 'theoretical'), - ('adjectives', 'outstanding'), - ('adjectives', 'pink'), - ('adjectives', 'pretty'), - ('adjectives', 'clinical'), - ('adjectives', 'minimum'), - ('adjectives', 'honest'), - ('adjectives', 'impressive'), - ('adjectives', 'related'), - ('adjectives', 'residential'), - ('adjectives', 'extraordinary'), - ('adjectives', 'plain'), - ('adjectives', 'visible'), - ('adjectives', 'accurate'), - ('adjectives', 'distant'), - ('adjectives', 'still'), - ('adjectives', 'greek'), - ('adjectives', 'complicated'), - ('adjectives', 'musical'), - ('adjectives', 'precise'), - ('adjectives', 'gentle'), - ('adjectives', 'broken'), - ('adjectives', 'live'), - ('adjectives', 'silly'), - ('adjectives', 'fat'), - ('adjectives', 'tight'), - ('adjectives', 'monetary'), - ('adjectives', 'round'), - ('adjectives', 'psychological'), - ('adjectives', 'violent'), - ('adjectives', 'unemployed'), - ('adjectives', 'inevitable'), - ('adjectives', 'junior'), - ('adjectives', 'sensible'), - ('adjectives', 'grateful'), - ('adjectives', 'pleasant'), - ('adjectives', 'dirty'), - ('adjectives', 'structural'), - ('adjectives', 'welcome'), - ('adjectives', 'deaf'), - ('adjectives', 'above'), - ('adjectives', 'continuous'), - ('adjectives', 'blind'), - ('adjectives', 'overseas'), - ('adjectives', 'mean'), - ('adjectives', 'entitled'), - ('adjectives', 'delighted'), - ('adjectives', 'loose'), - ('adjectives', 'occasional'), - ('adjectives', 'evident'), - ('adjectives', 'desperate'), - ('adjectives', 'fellow'), - ('adjectives', 'universal'), - ('adjectives', 'square'), - ('adjectives', 'steady'), - ('adjectives', 'classic'), - ('adjectives', 'equivalent'), - ('adjectives', 'intellectual'), - ('adjectives', 'victorian'), - ('adjectives', 'level'), - ('adjectives', 'ultimate'), - ('adjectives', 'creative'), - ('adjectives', 'lost'), - ('adjectives', 'medieval'), - ('adjectives', 'clever'), - ('adjectives', 'linguistic'), - ('adjectives', 'convinced'), - ('adjectives', 'judicial'), - ('adjectives', 'raw'), - ('adjectives', 'sophisticated'), - ('adjectives', 'asleep'), - ('adjectives', 'vulnerable'), - ('adjectives', 'illegal'), - ('adjectives', 'outer'), - ('adjectives', 'revolutionary'), - ('adjectives', 'bitter'), - ('adjectives', 'changing'), - ('adjectives', 'australian'), - ('adjectives', 'native'), - ('adjectives', 'imperial'), - ('adjectives', 'strict'), - ('adjectives', 'wise'), - ('adjectives', 'informal'), - ('adjectives', 'flexible'), - ('adjectives', 'collective'), - ('adjectives', 'frequent'), - ('adjectives', 'experimental'), - ('adjectives', 'spiritual'), - ('adjectives', 'intense'), - ('adjectives', 'rational'), - ('adjectives', 'ethnic'), - ('adjectives', 'generous'), - ('adjectives', 'inadequate'), - ('adjectives', 'prominent'), - ('adjectives', 'logical'), - ('adjectives', 'bare'), - ('adjectives', 'historic'), - ('adjectives', 'modest'), - ('adjectives', 'dutch'), - ('adjectives', 'acute'), - ('adjectives', 'electrical'), - ('adjectives', 'valid'), - ('adjectives', 'weekly'), - ('adjectives', 'gross'), - ('adjectives', 'automatic'), - ('adjectives', 'loud'), - ('adjectives', 'reliable'), - ('adjectives', 'mutual'), - ('adjectives', 'liable'), - ('adjectives', 'multiple'), - ('adjectives', 'ruling'), - ('adjectives', 'curious'), - ('adjectives', 'arab'), - ('adjectives', 'sole'), - ('adjectives', 'jewish'), - ('adjectives', 'managing'), - ('adjectives', 'pregnant'), - ('adjectives', 'latin'), - ('adjectives', 'nearby'), - ('adjectives', 'exact'), - ('adjectives', 'underlying'), - ('adjectives', 'identical'), - ('adjectives', 'satisfactory'), - ('adjectives', 'marginal'), - ('adjectives', 'distinctive'), - ('adjectives', 'electoral'), - ('adjectives', 'urgent'), - ('adjectives', 'presidential'), - ('adjectives', 'controversial'), - ('adjectives', 'oral'), - ('adjectives', 'everyday'), - ('adjectives', 'encouraging'), - ('adjectives', 'organic'), - ('adjectives', 'continued'), - ('adjectives', 'expected'), - ('adjectives', 'statistical'), - ('adjectives', 'desirable'), - ('adjectives', 'innocent'), - ('adjectives', 'improved'), - ('adjectives', 'exclusive'), - ('adjectives', 'marked'), - ('adjectives', 'experienced'), - ('adjectives', 'unexpected'), - ('adjectives', 'superb'), - ('adjectives', 'sheer'), - ('adjectives', 'disappointed'), - ('adjectives', 'frightened'), - ('adjectives', 'gastric'), - ('adjectives', 'capitalist'), - ('adjectives', 'romantic'), - ('adjectives', 'naked'), - ('adjectives', 'reluctant'), - ('adjectives', 'magnificent'), - ('adjectives', 'convenient'), - ('adjectives', 'established'), - ('adjectives', 'closed'), - ('adjectives', 'uncertain'), - ('adjectives', 'artificial'), - ('adjectives', 'diplomatic'), - ('adjectives', 'tremendous'), - ('adjectives', 'marine'), - ('adjectives', 'mechanical'), - ('adjectives', 'retail'), - ('adjectives', 'institutional'), - ('adjectives', 'mixed'), - ('adjectives', 'required'), - ('adjectives', 'biological'), - ('adjectives', 'known'), - ('adjectives', 'functional'), - ('adjectives', 'straightforward'), - ('adjectives', 'superior'), - ('adjectives', 'digital'), - ('adjectives', 'spectacular'), - ('adjectives', 'unhappy'), - ('adjectives', 'confused'), - ('adjectives', 'unfair'), - ('adjectives', 'aggressive'), - ('adjectives', 'spare'), - ('adjectives', 'painful'), - ('adjectives', 'abstract'), - ('adjectives', 'asian'), - ('adjectives', 'associated'), - ('adjectives', 'legislative'), - ('adjectives', 'monthly'), - ('adjectives', 'intelligent'), - ('adjectives', 'hungry'), - ('adjectives', 'explicit'), - ('adjectives', 'nasty'), - ('adjectives', 'just'), - ('adjectives', 'faint'), - ('adjectives', 'coloured'), - ('adjectives', 'ridiculous'), - ('adjectives', 'amazing'), - ('adjectives', 'comparable'), - ('adjectives', 'successive'), - ('adjectives', 'realistic'), - ('adjectives', 'back'), - ('adjectives', 'decent'), - ('adjectives', 'unnecessary'), - ('adjectives', 'flying'), - ('adjectives', 'random'), - ('adjectives', 'influential'), - ('adjectives', 'dull'), - ('adjectives', 'genetic'), - ('adjectives', 'neat'), - ('adjectives', 'marvellous'), - ('adjectives', 'crazy'), - ('adjectives', 'damp'), - ('adjectives', 'giant'), - ('adjectives', 'secure'), - ('adjectives', 'bottom'), - ('adjectives', 'skilled'), - ('adjectives', 'subtle'), - ('adjectives', 'elegant'), - ('adjectives', 'brave'), - ('adjectives', 'lesser'), - ('adjectives', 'parallel'), - ('adjectives', 'steep'), - ('adjectives', 'intensive'), - ('adjectives', 'casual'), - ('adjectives', 'tropical'), - ('adjectives', 'lonely'), - ('adjectives', 'partial'), - ('adjectives', 'preliminary'), - ('adjectives', 'concrete'), - ('adjectives', 'alleged'), - ('adjectives', 'assistant'), - ('adjectives', 'vertical'), - ('adjectives', 'upset'), - ('adjectives', 'delicate'), - ('adjectives', 'mild'), - ('adjectives', 'occupational'), - ('adjectives', 'excessive'), - ('adjectives', 'progressive'), - ('adjectives', 'iraqi'), - ('adjectives', 'exceptional'), - ('adjectives', 'integrated'), - ('adjectives', 'striking'), - ('adjectives', 'continental'), - ('adjectives', 'okay'), - ('adjectives', 'harsh'), - ('adjectives', 'combined'), - ('adjectives', 'fierce'), - ('adjectives', 'handsome'), - ('adjectives', 'characteristic'), - ('adjectives', 'chronic'), - ('adjectives', 'compulsory'), - ('adjectives', 'interim'), - ('adjectives', 'objective'), - ('adjectives', 'splendid'), - ('adjectives', 'magic'), - ('adjectives', 'systematic'), - ('adjectives', 'obliged'), - ('adjectives', 'payable'), - ('adjectives', 'fun'), - ('adjectives', 'horrible'), - ('adjectives', 'primitive'), - ('adjectives', 'fascinating'), - ('adjectives', 'ideological'), - ('adjectives', 'metropolitan'), - ('adjectives', 'surrounding'), - ('adjectives', 'estimated'), - ('adjectives', 'peaceful'), - ('adjectives', 'premier'), - ('adjectives', 'operational'), - ('adjectives', 'technological'), - ('adjectives', 'kind'), - ('adjectives', 'advisory'), - ('adjectives', 'hostile'), - ('adjectives', 'precious'), - ('adjectives', 'gay'), - ('adjectives', 'accessible'), - ('adjectives', 'determined'), - ('adjectives', 'excited'), - ('adjectives', 'impressed'), - ('adjectives', 'provincial'), - ('adjectives', 'smart'), - ('adjectives', 'endless'), - ('adjectives', 'isolated'), - ('adjectives', 'drunk'), - ('adjectives', 'geographical'), - ('adjectives', 'like'), - ('adjectives', 'dynamic'), - ('adjectives', 'boring'), - ('adjectives', 'forthcoming'), - ('adjectives', 'unfortunate'), - ('adjectives', 'definite'), - ('adjectives', 'super'), - ('adjectives', 'notable'), - ('adjectives', 'indirect'), - ('adjectives', 'stiff'), - ('adjectives', 'wealthy'), - ('adjectives', 'awkward'), - ('adjectives', 'lively'), - ('adjectives', 'neutral'), - ('adjectives', 'artistic'), - ('adjectives', 'content'), - ('adjectives', 'mature'), - ('adjectives', 'colonial'), - ('adjectives', 'ambitious'), - ('adjectives', 'evil'), - ('adjectives', 'magnetic'), - ('adjectives', 'verbal'), - ('adjectives', 'legitimate'), - ('adjectives', 'sympathetic'), - ('adjectives', 'empirical'), - ('adjectives', 'head'), - ('adjectives', 'shallow'), - ('adjectives', 'vague'), - ('adjectives', 'naval'), - ('adjectives', 'depressed'), - ('adjectives', 'shared'), - ('adjectives', 'added'), - ('adjectives', 'shocked'), - ('adjectives', 'mid'), - ('adjectives', 'worthwhile'), - ('adjectives', 'qualified'), - ('adjectives', 'missing'), - ('adjectives', 'blank'), - ('adjectives', 'absent'), - ('adjectives', 'favourable'), - ('adjectives', 'polish'), - ('adjectives', 'israeli'), - ('adjectives', 'developed'), - ('adjectives', 'profound'), - ('adjectives', 'representative'), - ('adjectives', 'enthusiastic'), - ('adjectives', 'dreadful'), - ('adjectives', 'rigid'), - ('adjectives', 'reduced'), - ('adjectives', 'cruel'), - ('adjectives', 'coastal'), - ('adjectives', 'peculiar'), - ('adjectives', 'racial'), - ('adjectives', 'ugly'), - ('adjectives', 'swiss'), - ('adjectives', 'crude'), - ('adjectives', 'extended'), - ('adjectives', 'selected'), - ('adjectives', 'eager'), - ('adjectives', 'feminist'), - ('adjectives', 'canadian'), - ('adjectives', 'bold'), - ('adjectives', 'relaxed'), - ('adjectives', 'corresponding'), - ('adjectives', 'running'), - ('adjectives', 'planned'), - ('adjectives', 'applicable'), - ('adjectives', 'immense'), - ('adjectives', 'allied'), - ('adjectives', 'comparative'), - ('adjectives', 'uncomfortable'), - ('adjectives', 'conservation'), - ('adjectives', 'productive'), - ('adjectives', 'beneficial'), - ('adjectives', 'bored'), - ('adjectives', 'charming'), - ('adjectives', 'minimal'), - ('adjectives', 'mobile'), - ('adjectives', 'turkish'), - ('adjectives', 'orange'), - ('adjectives', 'rear'), - ('adjectives', 'passive'), - ('adjectives', 'suspicious'), - ('adjectives', 'overwhelming'), - ('adjectives', 'fatal'), - ('adjectives', 'resulting'), - ('adjectives', 'symbolic'), - ('adjectives', 'registered'), - ('adjectives', 'neighbouring'), - ('adjectives', 'calm'), - ('adjectives', 'irrelevant'), - ('adjectives', 'patient'), - ('adjectives', 'compact'), - ('adjectives', 'profitable'), - ('adjectives', 'rival'), - ('adjectives', 'loyal'), - ('adjectives', 'moderate'), - ('adjectives', 'distinguished'), - ('adjectives', 'interior'), - ('adjectives', 'noble'), - ('adjectives', 'insufficient'), - ('adjectives', 'eligible'), - ('adjectives', 'mysterious'), - ('adjectives', 'varying'), - ('adjectives', 'managerial'), - ('adjectives', 'molecular'), - ('adjectives', 'olympic'), - ('adjectives', 'linear'), - ('adjectives', 'prospective'), - ('adjectives', 'printed'), - ('adjectives', 'parental'), - ('adjectives', 'diverse'), - ('adjectives', 'elaborate'), - ('adjectives', 'furious'), - ('adjectives', 'fiscal'), - ('adjectives', 'burning'), - ('adjectives', 'useless'), - ('adjectives', 'semantic'), - ('adjectives', 'embarrassed'), - ('adjectives', 'inherent'), - ('adjectives', 'philosophical'), - ('adjectives', 'deliberate'), - ('adjectives', 'awake'), - ('adjectives', 'variable'), - ('adjectives', 'promising'), - ('adjectives', 'unpleasant'), - ('adjectives', 'varied'), - ('adjectives', 'sacred'), - ('adjectives', 'selective'), - ('adjectives', 'inclined'), - ('adjectives', 'tender'), - ('adjectives', 'hidden'), - ('adjectives', 'worthy'), - ('adjectives', 'intermediate'), - ('adjectives', 'sound'), - ('adjectives', 'protective'), - ('adjectives', 'fortunate'), - ('adjectives', 'slim'), - ('adjectives', 'islamic'), - ('adjectives', 'defensive'), - ('adjectives', 'divine'), - ('adjectives', 'stuck'), - ('adjectives', 'driving'), - ('adjectives', 'invisible'), - ('adjectives', 'misleading'), - ('adjectives', 'circular'), - ('adjectives', 'mathematical'), - ('adjectives', 'inappropriate'), - ('adjectives', 'liquid'), - ('adjectives', 'persistent'), - ('adjectives', 'solar'), - ('adjectives', 'doubtful'), - ('adjectives', 'manual'), - ('adjectives', 'architectural'), - ('adjectives', 'intact'), - ('adjectives', 'incredible'), - ('adjectives', 'devoted'), - ('adjectives', 'prior'), - ('adjectives', 'tragic'), - ('adjectives', 'respectable'), - ('adjectives', 'optimistic'), - ('adjectives', 'convincing'), - ('adjectives', 'unacceptable'), - ('adjectives', 'decisive'), - ('adjectives', 'competent'), - ('adjectives', 'spatial'), - ('adjectives', 'respective'), - ('adjectives', 'binding'), - ('adjectives', 'relieved'), - ('adjectives', 'nursing'), - ('adjectives', 'toxic'), - ('adjectives', 'select'), - ('adjectives', 'redundant'), - ('adjectives', 'integral'), - ('adjectives', 'then'), - ('adjectives', 'probable'), - ('adjectives', 'amateur'), - ('adjectives', 'fond'), - ('adjectives', 'passing'), - ('adjectives', 'specified'), - ('adjectives', 'territorial'), - ('adjectives', 'horizontal'), - ('adjectives', 'inland'), - ('adjectives', 'cognitive'), - ('adjectives', 'regulatory'), - ('adjectives', 'miserable'), - ('adjectives', 'resident'), - ('adjectives', 'polite'), - ('adjectives', 'scared'), - ('adjectives', 'marxist'), - ('adjectives', 'gothic'), - ('adjectives', 'civilian'), - ('adjectives', 'instant'), - ('adjectives', 'lengthy'), - ('adjectives', 'adverse'), - ('adjectives', 'korean'), - ('adjectives', 'unconscious'), - ('adjectives', 'anonymous'), - ('adjectives', 'aesthetic'), - ('adjectives', 'orthodox'), - ('adjectives', 'static'), - ('adjectives', 'unaware'), - ('adjectives', 'costly'), - ('adjectives', 'fantastic'), - ('adjectives', 'foolish'), - ('adjectives', 'fashionable'), - ('adjectives', 'causal'), - ('adjectives', 'compatible'), - ('adjectives', 'wee'), - ('adjectives', 'implicit'), - ('adjectives', 'dual'), - ('adjectives', 'ok'), - ('adjectives', 'cheerful'), - ('adjectives', 'subjective'), - ('adjectives', 'forward'), - ('adjectives', 'surviving'), - ('adjectives', 'exotic'), - ('adjectives', 'purple'), - ('adjectives', 'cautious'), - ('adjectives', 'visiting'), - ('adjectives', 'aggregate'), - ('adjectives', 'ethical'), - ('adjectives', 'protestant'), - ('adjectives', 'teenage'), - ('adjectives', 'dying'), - ('adjectives', 'disastrous'), - ('adjectives', 'delicious'), - ('adjectives', 'confidential'), - ('adjectives', 'underground'), - ('adjectives', 'thorough'), - ('adjectives', 'grim'), - ('adjectives', 'autonomous'), - ('adjectives', 'atomic'), - ('adjectives', 'frozen'), - ('adjectives', 'colourful'), - ('adjectives', 'injured'), - ('adjectives', 'uniform'), - ('adjectives', 'ashamed'), - ('adjectives', 'glorious'), - ('adjectives', 'wicked'), - ('adjectives', 'coherent'), - ('adjectives', 'rising'), - ('adjectives', 'shy'), - ('adjectives', 'novel'), - ('adjectives', 'balanced'), - ('adjectives', 'delightful'), - ('adjectives', 'arbitrary'), - ('adjectives', 'adjacent'), - ('adjectives', 'psychiatric'), - ('adjectives', 'worrying'), - ('adjectives', 'weird'), - ('adjectives', 'unchanged'), - ('adjectives', 'rolling'), - ('adjectives', 'evolutionary'), - ('adjectives', 'intimate'), - ('adjectives', 'sporting'), - ('adjectives', 'disciplinary'), - ('adjectives', 'formidable'), - ('adjectives', 'lexical'), - ('adjectives', 'noisy'), - ('adjectives', 'gradual'), - ('adjectives', 'accused'), - ('adjectives', 'homeless'), - ('adjectives', 'supporting'), - ('adjectives', 'coming'), - ('adjectives', 'renewed'), - ('adjectives', 'excess'), - ('adjectives', 'retired'), - ('adjectives', 'rubber'), - ('adjectives', 'chosen'), - ('adjectives', 'outdoor'), - ('adjectives', 'embarrassing'), - ('adjectives', 'preferred'), - ('adjectives', 'bizarre'), - ('adjectives', 'appalling'), - ('adjectives', 'agreed'), - ('adjectives', 'imaginative'), - ('adjectives', 'governing'), - ('adjectives', 'accepted'), - ('adjectives', 'vocational'), - ('adjectives', 'palestinian'), - ('adjectives', 'mighty'), - ('adjectives', 'puzzled'), - ('adjectives', 'worldwide'), - ('adjectives', 'handicapped'), - ('adjectives', 'organisational'), - ('adjectives', 'sunny'), - ('adjectives', 'eldest'), - ('adjectives', 'eventual'), - ('adjectives', 'spontaneous'), - ('adjectives', 'vivid'), - ('adjectives', 'rude'), - ('adjectives', 'faithful'), - ('adjectives', 'ministerial'), - ('adjectives', 'innovative'), - ('adjectives', 'controlled'), - ('adjectives', 'conceptual'), - ('adjectives', 'unwilling'), - ('adjectives', 'civic'), - ('adjectives', 'meaningful'), - ('adjectives', 'disturbing'), - ('adjectives', 'alive'), - ('adjectives', 'brainy'), - ('adjectives', 'breakable'), - ('adjectives', 'busy'), - ('adjectives', 'careful'), - ('adjectives', 'cautious'), - ('adjectives', 'clever'), - ('adjectives', 'concerned'), - ('adjectives', 'crazy'), - ('adjectives', 'curious'), - ('adjectives', 'dead'), - ('adjectives', 'different'), - ('adjectives', 'difficult'), - ('adjectives', 'doubtful'), - ('adjectives', 'easy'), - ('adjectives', 'famous'), - ('adjectives', 'fragile'), - ('adjectives', 'helpful'), - ('adjectives', 'helpless'), - ('adjectives', 'important'), - ('adjectives', 'impossible'), - ('adjectives', 'innocent'), - ('adjectives', 'inquisitive'), - ('adjectives', 'modern'), - ('adjectives', 'open'), - ('adjectives', 'outstanding'), - ('adjectives', 'poor'), - ('adjectives', 'powerful'), - ('adjectives', 'puzzled'), - ('adjectives', 'real'), - ('adjectives', 'rich'), - ('adjectives', 'shy'), - ('adjectives', 'sleepy'), - ('adjectives', 'stupid'), - ('adjectives', 'super'), - ('adjectives', 'tame'), - ('adjectives', 'uninterested'), - ('adjectives', 'wandering'), - ('adjectives', 'wild'), - ('adjectives', 'wrong'), - ('adjectives', 'adorable'), - ('adjectives', 'alert'), - ('adjectives', 'average'), - ('adjectives', 'beautiful'), - ('adjectives', 'blonde'), - ('adjectives', 'bloody'), - ('adjectives', 'blushing'), - ('adjectives', 'bright'), - ('adjectives', 'clean'), - ('adjectives', 'clear'), - ('adjectives', 'cloudy'), - ('adjectives', 'colorful'), - ('adjectives', 'crowded'), - ('adjectives', 'cute'), - ('adjectives', 'dark'), - ('adjectives', 'drab'), - ('adjectives', 'distinct'), - ('adjectives', 'dull'), - ('adjectives', 'elegant'), - ('adjectives', 'fancy'), - ('adjectives', 'filthy'), - ('adjectives', 'glamorous'), - ('adjectives', 'gleaming'), - ('adjectives', 'graceful'), - ('adjectives', 'grotesque'), - ('adjectives', 'homely'), - ('adjectives', 'light'), - ('adjectives', 'misty'), - ('adjectives', 'motionless'), - ('adjectives', 'muddy'), - ('adjectives', 'plain'), - ('adjectives', 'poised'), - ('adjectives', 'quaint'), - ('adjectives', 'shiny'), - ('adjectives', 'smoggy'), - ('adjectives', 'sparkling'), - ('adjectives', 'spotless'), - ('adjectives', 'stormy'), - ('adjectives', 'strange'), - ('adjectives', 'ugly'), - ('adjectives', 'unsightly'), - ('adjectives', 'unusual'), - ('adjectives', 'bad'), - ('adjectives', 'better'), - ('adjectives', 'beautiful'), - ('adjectives', 'big'), - ('adjectives', 'black'), - ('adjectives', 'blue'), - ('adjectives', 'bright'), - ('adjectives', 'clumsy'), - ('adjectives', 'crazy'), - ('adjectives', 'dizzy'), - ('adjectives', 'dull'), - ('adjectives', 'fat'), - ('adjectives', 'frail'), - ('adjectives', 'friendly'), - ('adjectives', 'funny'), - ('adjectives', 'great'), - ('adjectives', 'green'), - ('adjectives', 'gigantic'), - ('adjectives', 'gorgeous'), - ('adjectives', 'grumpy'), - ('adjectives', 'handsome'), - ('adjectives', 'happy'), - ('adjectives', 'horrible'), - ('adjectives', 'itchy'), - ('adjectives', 'jittery'), - ('adjectives', 'jolly'), - ('adjectives', 'kind'), - ('adjectives', 'long'), - ('adjectives', 'lazy'), - ('adjectives', 'magnificent'), - ('adjectives', 'magenta'), - ('adjectives', 'many'), - ('adjectives', 'mighty'), - ('adjectives', 'mushy'), - ('adjectives', 'nasty'), - ('adjectives', 'new'), - ('adjectives', 'nice'), - ('adjectives', 'nosy'), - ('adjectives', 'nutty'), - ('adjectives', 'nutritious'), - ('adjectives', 'odd'), - ('adjectives', 'orange'), - ('adjectives', 'ordinary'), - ('adjectives', 'pretty'), - ('adjectives', 'precious'), - ('adjectives', 'prickly'), - ('adjectives', 'purple'), - ('adjectives', 'quaint'), - ('adjectives', 'quiet'), - ('adjectives', 'quick'), - ('adjectives', 'quickest'), - ('adjectives', 'rainy'), - ('adjectives', 'rare'), - ('adjectives', 'ratty'), - ('adjectives', 'red'), - ('adjectives', 'roasted'), - ('adjectives', 'robust'), - ('adjectives', 'round'), - ('adjectives', 'sad'), - ('adjectives', 'scary'), - ('adjectives', 'scrawny'), - ('adjectives', 'short'), - ('adjectives', 'silly'), - ('adjectives', 'stingy'), - ('adjectives', 'strange'), - ('adjectives', 'striped'), - ('adjectives', 'spotty'), - ('adjectives', 'tart'), - ('adjectives', 'tall'), - ('adjectives', 'tame'), - ('adjectives', 'tan'), - ('adjectives', 'tender'), - ('adjectives', 'testy'), - ('adjectives', 'tricky'), - ('adjectives', 'tough'), - ('adjectives', 'ugly'), - ('adjectives', 'ugliest'), - ('adjectives', 'vast'), - ('adjectives', 'watery'), - ('adjectives', 'wasteful'), - ('adjectives', 'wonderful'), - ('adjectives', 'yellow'), - ('adjectives', 'yummy'), - ('adjectives', 'zany'), - ('lorem', 'aenean'), - ('lorem', 'aliquam'), - ('lorem', 'class'), - ('lorem', 'cras'), - ('lorem', 'curabitur'), - ('lorem', 'donec'), - ('lorem', 'duis'), - ('lorem', 'etiam'), - ('lorem', 'fusce'), - ('lorem', 'in'), - ('lorem', 'integer'), - ('lorem', 'interdum'), - ('lorem', 'lorem'), - ('lorem', 'maecenas'), - ('lorem', 'mauris'), - ('lorem', 'morbi'), - ('lorem', 'nam'), - ('lorem', 'nulla'), - ('lorem', 'nullam'), - ('lorem', 'nunc'), - ('lorem', 'pellentesque'), - ('lorem', 'phasellus'), - ('lorem', 'praesent'), - ('lorem', 'proin'), - ('lorem', 'quisque'), - ('lorem', 'sed'), - ('lorem', 'suspendisse'), - ('lorem', 'ut'), - ('lorem', 'vestibulum'), - ('lorem', 'vivamus'), - ('lorem', 'a'), - ('lorem', 'ac'), - ('lorem', 'accumsan'), - ('lorem', 'ad'), - ('lorem', 'adipiscing'), - ('lorem', 'aliquam'), - ('lorem', 'aliquet'), - ('lorem', 'amet'), - ('lorem', 'ante'), - ('lorem', 'aptent'), - ('lorem', 'arcu'), - ('lorem', 'at'), - ('lorem', 'auctor'), - ('lorem', 'augue'), - ('lorem', 'bibendum'), - ('lorem', 'blandit'), - ('lorem', 'commodo'), - ('lorem', 'condimentum'), - ('lorem', 'congue'), - ('lorem', 'consectetur'), - ('lorem', 'consequat'), - ('lorem', 'conubia'), - ('lorem', 'convallis'), - ('lorem', 'cubilia'), - ('lorem', 'curae;'), - ('lorem', 'cursus'), - ('lorem', 'dapibus'), - ('lorem', 'diam'), - ('lorem', 'dictum'), - ('lorem', 'dictumst'), - ('lorem', 'dignissim'), - ('lorem', 'dolor'), - ('lorem', 'dui'), - ('lorem', 'efficitur'), - ('lorem', 'egestas'), - ('lorem', 'eget'), - ('lorem', 'eleifend'), - ('lorem', 'elementum'), - ('lorem', 'elit'), - ('lorem', 'enim'), - ('lorem', 'erat'), - ('lorem', 'eros'), - ('lorem', 'est'), - ('lorem', 'et'), - ('lorem', 'eu'), - ('lorem', 'euismod'), - ('lorem', 'ex'), - ('lorem', 'facilisi'), - ('lorem', 'facilisis'), - ('lorem', 'fames'), - ('lorem', 'faucibus'), - ('lorem', 'felis'), - ('lorem', 'fermentum'), - ('lorem', 'feugiat'), - ('lorem', 'finibus'), - ('lorem', 'fringilla'), - ('lorem', 'gravida'), - ('lorem', 'habitant'), - ('lorem', 'habitasse'), - ('lorem', 'hac'), - ('lorem', 'hendrerit'), - ('lorem', 'himenaeos'), - ('lorem', 'iaculis'), - ('lorem', 'id'), - ('lorem', 'imperdiet'), - ('lorem', 'in'), - ('lorem', 'inceptos'), - ('lorem', 'interdum'), - ('lorem', 'ipsum'), - ('lorem', 'justo'), - ('lorem', 'lacinia'), - ('lorem', 'lacus'), - ('lorem', 'laoreet'), - ('lorem', 'lectus'), - ('lorem', 'leo'), - ('lorem', 'libero'), - ('lorem', 'ligula'), - ('lorem', 'litora'), - ('lorem', 'lobortis'), - ('lorem', 'lorem'), - ('lorem', 'luctus'), - ('lorem', 'magna'), - ('lorem', 'malesuada'), - ('lorem', 'massa'), - ('lorem', 'mattis'), - ('lorem', 'mauris'), - ('lorem', 'maximus'), - ('lorem', 'metus'), - ('lorem', 'mi'), - ('lorem', 'molestie'), - ('lorem', 'mollis'), - ('lorem', 'morbi'), - ('lorem', 'nec'), - ('lorem', 'neque'), - ('lorem', 'netus'), - ('lorem', 'nibh'), - ('lorem', 'nisi'), - ('lorem', 'nisl'), - ('lorem', 'non'), - ('lorem', 'nostra'), - ('lorem', 'nulla'), - ('lorem', 'nunc'), - ('lorem', 'odio'), - ('lorem', 'orci'), - ('lorem', 'ornare'), - ('lorem', 'pellentesque'), - ('lorem', 'per'), - ('lorem', 'pharetra'), - ('lorem', 'placerat'), - ('lorem', 'platea'), - ('lorem', 'porta'), - ('lorem', 'porttitor'), - ('lorem', 'posuere'), - ('lorem', 'pretium'), - ('lorem', 'primis'), - ('lorem', 'pulvinar'), - ('lorem', 'purus'), - ('lorem', 'quam'), - ('lorem', 'quis'), - ('lorem', 'rhoncus'), - ('lorem', 'risus'), - ('lorem', 'rutrum'), - ('lorem', 'sagittis'), - ('lorem', 'sapien'), - ('lorem', 'scelerisque'), - ('lorem', 'sed'), - ('lorem', 'sem'), - ('lorem', 'semper'), - ('lorem', 'senectus'), - ('lorem', 'sit'), - ('lorem', 'sociosqu'), - ('lorem', 'sodales'), - ('lorem', 'sollicitudin'), - ('lorem', 'suscipit'), - ('lorem', 'taciti'), - ('lorem', 'tellus'), - ('lorem', 'tempor'), - ('lorem', 'tempus'), - ('lorem', 'tincidunt'), - ('lorem', 'torquent'), - ('lorem', 'tortor'), - ('lorem', 'tristique'), - ('lorem', 'turpis'), - ('lorem', 'ullamcorper'), - ('lorem', 'ultrices'), - ('lorem', 'ultricies'), - ('lorem', 'urna'), - ('lorem', 'ut'), - ('lorem', 'varius'), - ('lorem', 'vehicula'), - ('lorem', 'vel'), - ('lorem', 'velit'), - ('lorem', 'venenatis'), - ('lorem', 'vestibulum'), - ('lorem', 'vitae'), - ('lorem', 'viverra'), - ('lorem', 'volutpat'), - ('lorem', 'vulputate'), - ('mime', 'audio/mpeg'), - ('mime', 'application/epub+zip'), - ('mime', 'application/font-woff'), - ('mime', 'application/font-woff2'), - ('mime', 'application/javascript'), - ('mime', 'application/json'), - ('mime', 'application/pdf'), - ('mime', 'application/vnd.oasis.opendocument.spreadsheet'), - ('mime', 'application/vnd.oasis.opendocument.text'), - ('mime', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'), - ('mime', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'), - ('mime', 'application/x-font-opentype'), - ('mime', 'application/x-font-ttf'), - ('mime', 'application/x-gzip'), - ('mime', 'application/x-shockwave-flash'), - ('mime', 'application/x-sql'), - ('mime', 'application/zip'), - ('mime', 'image/emf'), - ('mime', 'image/gif'), - ('mime', 'image/jpeg'), - ('mime', 'image/png'), - ('mime', 'image/svg+xml'), - ('mime', 'image/tiff'), - ('mime', 'image/vnd.adobe.photoshop'), - ('mime', 'image/vnd.dwg'), - ('mime', 'image/vnd.dxf'), - ('mime', 'image/wmf'), - ('mime', 'image/x-ms-bmp'), - ('mime', 'image/x-pict'), - ('mime', 'image/x-tga'), - ('mime', 'text/css'), - ('mime', 'text/csv'), - ('mime', 'text/html'), - ('mime', 'text/jsx'), - ('mime', 'text/less'), - ('mime', 'text/markdown'), - ('mime', 'text/plain'), - ('mime', 'text/tab-separated-values'), - ('mime', 'text/x-scss'), - ('mime', 'text/x-shellscript'), - ('mime', 'text/x-typescript'), - ('mime', 'text/yaml'), - ('mime', 'video/mp4'), - ('audio/mpeg', 'mp3'), - ('application/epub+zip', 'zip'), - ('application/font-woff', 'woff'), - ('application/font-woff2', 'woff2'), - ('application/javascript', 'js'), - ('application/json', 'json'), - ('application/pdf', 'pdf'), - ('application/vnd.oasis.opendocument.spreadsheet', 'xls'), - ('application/vnd.oasis.opendocument.text', 'txt'), - ('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'xls'), - ('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'doc'), - ('application/x-font-opentype', 'opentype'), - ('application/x-font-ttf', 'ttf'), - ('application/x-gzip', 'gzip'), - ('application/x-shockwave-flash', 'swf'), - ('application/x-sql', 'sql'), - ('application/zip', 'zip'), - ('image/emf', 'emf'), - ('image/gif', 'gif'), - ('image/jpeg', 'jpeg'), - ('image/jpeg', 'jpg'), - ('image/png', 'png'), - ('image/svg+xml', 'svg'), - ('image/tiff', 'tiff'), - ('image/vnd.adobe.photoshop', 'psd'), - ('image/vnd.dwg', 'dwg'), - ('image/vnd.dxf', 'dxf'), - ('image/wmf', 'wmf'), - ('image/x-ms-bmp', 'bmp'), - ('image/x-pict', 'pict'), - ('image/x-tga', 'tga'), - ('text/css', 'css'), - ('text/csv', 'csv'), - ('text/html', 'html'), - ('text/html', 'htm'), - ('text/jsx', 'jsx'), - ('text/less', 'less'), - ('text/markdown', 'md'), - ('text/plain', 'txt'), - ('text/tab-separated-values', 'csv'), - ('text/tab-separated-values', 'tsv'), - ('text/x-scss', 'scss'), - ('text/x-shellscript', 'sh'), - ('text/x-typescript', 'ts'), - ('text/x-typescript', 'tsx'), - ('text/yaml', 'yaml'), - ('text/yaml', 'yml'), - ('video/mp4', 'mp4'), - ('surname', 'smith'), - ('surname', 'johnson'), - ('surname', 'williams'), - ('surname', 'brown'), - ('surname', 'jones'), - ('surname', 'garcia'), - ('surname', 'miller'), - ('surname', 'davis'), - ('surname', 'rodriguez'), - ('surname', 'martinez'), - ('surname', 'hernandez'), - ('surname', 'lopez'), - ('surname', 'gonzalez'), - ('surname', 'wilson'), - ('surname', 'anderson'), - ('surname', 'thomas'), - ('surname', 'taylor'), - ('surname', 'moore'), - ('surname', 'jackson'), - ('surname', 'martin'), - ('surname', 'lee'), - ('surname', 'perez'), - ('surname', 'thompson'), - ('surname', 'white'), - ('surname', 'harris'), - ('surname', 'sanchez'), - ('surname', 'clark'), - ('surname', 'ramirez'), - ('surname', 'lewis'), - ('surname', 'robinson'), - ('surname', 'walker'), - ('surname', 'young'), - ('surname', 'allen'), - ('surname', 'king'), - ('surname', 'wright'), - ('surname', 'scott'), - ('surname', 'torres'), - ('surname', 'nguyen'), - ('surname', 'hill'), - ('surname', 'flores'), - ('surname', 'green'), - ('surname', 'adams'), - ('surname', 'nelson'), - ('surname', 'baker'), - ('surname', 'hall'), - ('surname', 'rivera'), - ('surname', 'campbell'), - ('surname', 'mitchell'), - ('surname', 'carter'), - ('surname', 'roberts'), - ('surname', 'gomez'), - ('surname', 'phillips'), - ('surname', 'evans'), - ('surname', 'turner'), - ('surname', 'diaz'), - ('surname', 'parker'), - ('surname', 'cruz'), - ('surname', 'edwards'), - ('surname', 'collins'), - ('surname', 'reyes'), - ('surname', 'stewart'), - ('surname', 'morris'), - ('surname', 'morales'), - ('surname', 'murphy'), - ('surname', 'cook'), - ('surname', 'rogers'), - ('surname', 'gutierrez'), - ('surname', 'ortiz'), - ('surname', 'morgan'), - ('surname', 'cooper'), - ('surname', 'peterson'), - ('surname', 'bailey'), - ('surname', 'reed'), - ('surname', 'kelly'), - ('surname', 'howard'), - ('surname', 'ramos'), - ('surname', 'kim'), - ('surname', 'cox'), - ('surname', 'ward'), - ('surname', 'richardson'), - ('surname', 'watson'), - ('surname', 'brooks'), - ('surname', 'chavez'), - ('surname', 'wood'), - ('surname', 'james'), - ('surname', 'bennett'), - ('surname', 'gray'), - ('surname', 'mendoza'), - ('surname', 'ruiz'), - ('surname', 'hughes'), - ('surname', 'price'), - ('surname', 'alvarez'), - ('surname', 'castillo'), - ('surname', 'sanders'), - ('surname', 'patel'), - ('surname', 'myers'), - ('surname', 'long'), - ('surname', 'ross'), - ('surname', 'foster'), - ('surname', 'jimenez'), - ('surname', 'powell'), - ('surname', 'jenkins'), - ('surname', 'perry'), - ('surname', 'russell'), - ('surname', 'sullivan'), - ('surname', 'bell'), - ('surname', 'coleman'), - ('surname', 'butler'), - ('surname', 'henderson'), - ('surname', 'barnes'), - ('surname', 'gonzales'), - ('surname', 'fisher'), - ('surname', 'vasquez'), - ('surname', 'simmons'), - ('surname', 'romero'), - ('surname', 'jordan'), - ('surname', 'patterson'), - ('surname', 'alexander'), - ('surname', 'hamilton'), - ('surname', 'graham'), - ('surname', 'reynolds'), - ('surname', 'griffin'), - ('surname', 'wallace'), - ('surname', 'moreno'), - ('surname', 'west'), - ('surname', 'cole'), - ('surname', 'hayes'), - ('surname', 'bryant'), - ('surname', 'herrera'), - ('surname', 'gibson'), - ('surname', 'ellis'), - ('surname', 'tran'), - ('surname', 'medina'), - ('surname', 'aguilar'), - ('surname', 'stevens'), - ('surname', 'murray'), - ('surname', 'ford'), - ('surname', 'castro'), - ('surname', 'marshall'), - ('surname', 'owens'), - ('surname', 'harrison'), - ('surname', 'fernandez'), - ('surname', 'mcdonald'), - ('surname', 'woods'), - ('surname', 'washington'), - ('surname', 'kennedy'), - ('surname', 'wells'), - ('surname', 'vargas'), - ('surname', 'henry'), - ('surname', 'chen'), - ('surname', 'freeman'), - ('surname', 'webb'), - ('surname', 'tucker'), - ('surname', 'guzman'), - ('surname', 'burns'), - ('surname', 'crawford'), - ('surname', 'olson'), - ('surname', 'simpson'), - ('surname', 'porter'), - ('surname', 'hunter'), - ('surname', 'gordon'), - ('surname', 'mendez'), - ('surname', 'silva'), - ('surname', 'shaw'), - ('surname', 'snyder'), - ('surname', 'mason'), - ('surname', 'dixon'), - ('surname', 'munoz'), - ('surname', 'hunt'), - ('surname', 'hicks'), - ('surname', 'holmes'), - ('surname', 'palmer'), - ('surname', 'wagner'), - ('surname', 'black'), - ('surname', 'robertson'), - ('surname', 'boyd'), - ('surname', 'rose'), - ('surname', 'stone'), - ('surname', 'salazar'), - ('surname', 'fox'), - ('surname', 'warren'), - ('surname', 'mills'), - ('surname', 'meyer'), - ('surname', 'rice'), - ('surname', 'schmidt'), - ('surname', 'garza'), - ('surname', 'daniels'), - ('surname', 'ferguson'), - ('surname', 'nichols'), - ('surname', 'stephens'), - ('surname', 'soto'), - ('surname', 'weaver'), - ('surname', 'ryan'), - ('surname', 'gardner'), - ('surname', 'payne'), - ('surname', 'grant'), - ('surname', 'dunn'), - ('surname', 'kelley'), - ('surname', 'spencer'), - ('surname', 'hawkins'), - ('surname', 'arnold'), - ('surname', 'pierce'), - ('surname', 'vazquez'), - ('surname', 'hansen'), - ('surname', 'peters'), - ('surname', 'santos'), - ('surname', 'hart'), - ('surname', 'bradley'), - ('surname', 'knight'), - ('surname', 'elliott'), - ('surname', 'cunningham'), - ('surname', 'duncan'), - ('surname', 'armstrong'), - ('surname', 'hudson'), - ('surname', 'carroll'), - ('surname', 'lane'), - ('surname', 'riley'), - ('surname', 'andrews'), - ('surname', 'alvarado'), - ('surname', 'ray'), - ('surname', 'delgado'), - ('surname', 'berry'), - ('surname', 'perkins'), - ('surname', 'hoffman'), - ('surname', 'johnston'), - ('surname', 'matthews'), - ('surname', 'pena'), - ('surname', 'richards'), - ('surname', 'contreras'), - ('surname', 'willis'), - ('surname', 'carpenter'), - ('surname', 'lawrence'), - ('surname', 'sandoval'), - ('surname', 'guerrero'), - ('surname', 'george'), - ('surname', 'chapman'), - ('surname', 'rios'), - ('surname', 'estrada'), - ('surname', 'ortega'), - ('surname', 'watkins'), - ('surname', 'greene'), - ('surname', 'nunez'), - ('surname', 'wheeler'), - ('surname', 'valdez'), - ('surname', 'harper'), - ('surname', 'burke'), - ('surname', 'larson'), - ('surname', 'santiago'), - ('surname', 'maldonado'), - ('surname', 'morrison'), - ('surname', 'franklin'), - ('surname', 'carlson'), - ('surname', 'austin'), - ('surname', 'dominguez'), - ('surname', 'carr'), - ('surname', 'lawson'), - ('surname', 'jacobs'), - ('surname', 'obrien'), - ('surname', 'lynch'), - ('surname', 'singh'), - ('surname', 'vega'), - ('surname', 'bishop'), - ('surname', 'montgomery'), - ('surname', 'oliver'), - ('surname', 'jensen'), - ('surname', 'harvey'), - ('surname', 'williamson'), - ('surname', 'gilbert'), - ('surname', 'dean'), - ('surname', 'sims'), - ('surname', 'espinoza'), - ('surname', 'howell'), - ('surname', 'li'), - ('surname', 'wong'), - ('surname', 'reid'), - ('surname', 'hanson'), - ('surname', 'le'), - ('surname', 'mccoy'), - ('surname', 'garrett'), - ('surname', 'burton'), - ('surname', 'fuller'), - ('surname', 'wang'), - ('surname', 'weber'), - ('surname', 'welch'), - ('surname', 'rojas'), - ('surname', 'lucas'), - ('surname', 'marquez'), - ('surname', 'fields'), - ('surname', 'park'), - ('surname', 'yang'), - ('surname', 'little'), - ('surname', 'banks'), - ('surname', 'padilla'), - ('surname', 'day'), - ('surname', 'walsh'), - ('surname', 'bowman'), - ('surname', 'schultz'), - ('surname', 'luna'), - ('surname', 'fowler'), - ('surname', 'mejia'), - ('surname', 'davidson'), - ('surname', 'acosta'), - ('surname', 'brewer'), - ('surname', 'may'), - ('surname', 'holland'), - ('surname', 'juarez'), - ('surname', 'newman'), - ('surname', 'pearson'), - ('surname', 'curtis'), - ('surname', 'cortez'), - ('surname', 'douglas'), - ('surname', 'schneider'), - ('surname', 'joseph'), - ('surname', 'barrett'), - ('surname', 'navarro'), - ('surname', 'figueroa'), - ('surname', 'keller'), - ('surname', 'avila'), - ('surname', 'wade'), - ('surname', 'molina'), - ('surname', 'stanley'), - ('surname', 'hopkins'), - ('surname', 'campos'), - ('surname', 'barnett'), - ('surname', 'bates'), - ('surname', 'chambers'), - ('surname', 'caldwell'), - ('surname', 'beck'), - ('surname', 'lambert'), - ('surname', 'miranda'), - ('surname', 'byrd'), - ('surname', 'craig'), - ('surname', 'ayala'), - ('surname', 'lowe'), - ('surname', 'frazier'), - ('surname', 'powers'), - ('surname', 'neal'), - ('surname', 'leonard'), - ('surname', 'gregory'), - ('surname', 'carrillo'), - ('surname', 'sutton'), - ('surname', 'fleming'), - ('surname', 'rhodes'), - ('surname', 'shelton'), - ('surname', 'schwartz'), - ('surname', 'norris'), - ('surname', 'jennings'), - ('surname', 'watts'), - ('surname', 'duran'), - ('surname', 'walters'), - ('surname', 'cohen'), - ('surname', 'mcdaniel'), - ('surname', 'moran'), - ('surname', 'parks'), - ('surname', 'steele'), - ('surname', 'vaughn'), - ('surname', 'becker'), - ('surname', 'holt'), - ('surname', 'deleon'), - ('surname', 'barker'), - ('surname', 'terry'), - ('surname', 'hale'), - ('surname', 'leon'), - ('surname', 'hail'), - ('surname', 'benson'), - ('surname', 'haynes'), - ('surname', 'horton'), - ('surname', 'miles'), - ('surname', 'lyons'), - ('surname', 'pham'), - ('surname', 'graves'), - ('surname', 'bush'), - ('surname', 'thornton'), - ('surname', 'wolfe'), - ('surname', 'warner'), - ('surname', 'cabrera'), - ('surname', 'mckinney'), - ('surname', 'mann'), - ('surname', 'zimmerman'), - ('surname', 'dawson'), - ('surname', 'lara'), - ('surname', 'fletcher'), - ('surname', 'page'), - ('surname', 'mccarthy'), - ('surname', 'love'), - ('surname', 'robles'), - ('surname', 'cervantes'), - ('surname', 'solis'), - ('surname', 'erickson'), - ('surname', 'reeves'), - ('surname', 'chang'), - ('surname', 'klein'), - ('surname', 'salinas'), - ('surname', 'fuentes'), - ('surname', 'baldwin'), - ('surname', 'daniel'), - ('surname', 'simon'), - ('surname', 'velasquez'), - ('surname', 'hardy'), - ('surname', 'higgins'), - ('surname', 'aguirre'), - ('surname', 'lin'), - ('surname', 'cummings'), - ('surname', 'chandler'), - ('surname', 'sharp'), - ('surname', 'barber'), - ('surname', 'bowen'), - ('surname', 'ochoa'), - ('surname', 'dennis'), - ('surname', 'robbins'), - ('surname', 'liu'), - ('surname', 'ramsey'), - ('surname', 'francis'), - ('surname', 'griffith'), - ('surname', 'paul'), - ('surname', 'blair'), - ('surname', 'oconnor'), - ('surname', 'cardenas'), - ('surname', 'pacheco'), - ('surname', 'cross'), - ('surname', 'calderon'), - ('surname', 'quinn'), - ('surname', 'moss'), - ('surname', 'swanson'), - ('surname', 'chan'), - ('surname', 'rivas'), - ('surname', 'khan'), - ('surname', 'rodgers'), - ('surname', 'serrano'), - ('surname', 'fitzgerald'), - ('surname', 'rosales'), - ('surname', 'stevenson'), - ('surname', 'christensen'), - ('surname', 'manning'), - ('surname', 'gill'), - ('surname', 'curry'), - ('surname', 'mclaughlin'), - ('surname', 'harmon'), - ('surname', 'mcgee'), - ('surname', 'gross'), - ('surname', 'doyle'), - ('surname', 'garner'), - ('surname', 'newton'), - ('surname', 'burgess'), - ('surname', 'reese'), - ('surname', 'walton'), - ('surname', 'blake'), - ('surname', 'trujillo'), - ('surname', 'adkins'), - ('surname', 'brady'), - ('surname', 'goodman'), - ('surname', 'roman'), - ('surname', 'webster'), - ('surname', 'goodwin'), - ('surname', 'fischer'), - ('surname', 'huang'), - ('surname', 'potter'), - ('surname', 'delacruz'), - ('surname', 'montoya'), - ('surname', 'todd'), - ('surname', 'wu'), - ('surname', 'hines'), - ('surname', 'mullins'), - ('surname', 'castaneda'), - ('surname', 'malone'), - ('surname', 'cannon'), - ('surname', 'tate'), - ('surname', 'mack'), - ('surname', 'sherman'), - ('surname', 'hubbard'), - ('surname', 'hodges'), - ('surname', 'zhang'), - ('surname', 'guerra'), - ('surname', 'wolf'), - ('surname', 'valencia'), - ('surname', 'saunders'), - ('surname', 'franco'), - ('surname', 'rowe'), - ('surname', 'gallagher'), - ('surname', 'farmer'), - ('surname', 'hammond'), - ('surname', 'hampton'), - ('surname', 'townsend'), - ('surname', 'ingram'), - ('surname', 'wise'), - ('surname', 'gallegos'), - ('surname', 'clarke'), - ('surname', 'barton'), - ('surname', 'schroeder'), - ('surname', 'maxwell'), - ('surname', 'waters'), - ('surname', 'logan'), - ('surname', 'camacho'), - ('surname', 'strickland'), - ('surname', 'norman'), - ('surname', 'person'), - ('surname', 'colon'), - ('surname', 'parsons'), - ('surname', 'frank'), - ('surname', 'harrington'), - ('surname', 'glover'), - ('surname', 'osborne'), - ('surname', 'buchanan'), - ('surname', 'casey'), - ('surname', 'floyd'), - ('surname', 'patton'), - ('surname', 'ibarra'), - ('surname', 'ball'), - ('surname', 'tyler'), - ('surname', 'suarez'), - ('surname', 'bowers'), - ('surname', 'orozco'), - ('surname', 'salas'), - ('surname', 'cobb'), - ('surname', 'gibbs'), - ('surname', 'andrade'), - ('surname', 'bauer'), - ('surname', 'conner'), - ('surname', 'moody'), - ('surname', 'escobar'), - ('surname', 'mcguire'), - ('surname', 'lloyd'), - ('surname', 'mueller'), - ('surname', 'hartman'), - ('surname', 'french'), - ('surname', 'kramer'), - ('surname', 'mcbride'), - ('surname', 'pope'), - ('surname', 'lindsey'), - ('surname', 'velazquez'), - ('surname', 'norton'), - ('surname', 'mccormick'), - ('surname', 'sparks'), - ('surname', 'flynn'), - ('surname', 'yates'), - ('surname', 'hogan'), - ('surname', 'marsh'), - ('surname', 'macias'), - ('surname', 'villanueva'), - ('surname', 'zamora'), - ('surname', 'pratt'), - ('surname', 'stokes'), - ('surname', 'owen'), - ('surname', 'ballard'), - ('surname', 'lang'), - ('surname', 'brock'), - ('surname', 'villarreal'), - ('surname', 'charles'), - ('surname', 'drake'), - ('surname', 'barrera'), - ('surname', 'cain'), - ('surname', 'patrick'), - ('surname', 'pineda'), - ('surname', 'burnett'), - ('surname', 'mercado'), - ('surname', 'santana'), - ('surname', 'shepherd'), - ('surname', 'bautista'), - ('surname', 'ali'), - ('surname', 'shaffer'), - ('surname', 'lamb'), - ('surname', 'trevino'), - ('surname', 'mckenzie'), - ('surname', 'hess'), - ('surname', 'beil'), - ('surname', 'olsen'), - ('surname', 'cochran'), - ('surname', 'morton'), - ('surname', 'nash'), - ('surname', 'wilkins'), - ('surname', 'petersen'), - ('surname', 'briggs'), - ('surname', 'shah'), - ('surname', 'roth'), - ('surname', 'nicholson'), - ('surname', 'holloway'), - ('surname', 'lozano'), - ('surname', 'rangel'), - ('surname', 'flowers'), - ('surname', 'hoover'), - ('surname', 'short'), - ('surname', 'arias'), - ('surname', 'mora'), - ('surname', 'valenzuela'), - ('surname', 'bryan'), - ('surname', 'meyers'), - ('surname', 'weiss'), - ('surname', 'underwood'), - ('surname', 'bass'), - ('surname', 'greer'), - ('surname', 'summers'), - ('surname', 'houston'), - ('surname', 'carson'), - ('surname', 'morrow'), - ('surname', 'clayton'), - ('surname', 'whitaker'), - ('surname', 'decker'), - ('surname', 'yoder'), - ('surname', 'collier'), - ('surname', 'zuniga'), - ('surname', 'carey'), - ('surname', 'wilcox'), - ('surname', 'melendez'), - ('surname', 'poole'), - ('surname', 'roberson'), - ('surname', 'larsen'), - ('surname', 'conley'), - ('surname', 'davenport'), - ('surname', 'copeland'), - ('surname', 'massey'), - ('surname', 'lam'), - ('surname', 'huff'), - ('surname', 'rocha'), - ('surname', 'cameron'), - ('surname', 'jefferson'), - ('surname', 'hood'), - ('surname', 'monroe'), - ('surname', 'anthony'), - ('surname', 'pittman'), - ('surname', 'huynh'), - ('surname', 'randall'), - ('surname', 'singleton'), - ('surname', 'kirk'), - ('surname', 'combs'), - ('surname', 'mathis'), - ('surname', 'christian'), - ('surname', 'skinner'), - ('surname', 'bradford'), - ('surname', 'richard'), - ('surname', 'galvan'), - ('surname', 'wall'), - ('surname', 'boone'), - ('surname', 'kirby'), - ('surname', 'wilkinson'), - ('surname', 'bridges'), - ('surname', 'bruce'), - ('surname', 'atkinson'), - ('surname', 'velez'), - ('surname', 'meza'), - ('surname', 'roy'), - ('surname', 'vincent'), - ('surname', 'york'), - ('surname', 'hodge'), - ('surname', 'villa'), - ('surname', 'abbott'), - ('surname', 'allison'), - ('surname', 'tapia'), - ('surname', 'gates'), - ('surname', 'chase'), - ('surname', 'sosa'), - ('surname', 'sweeney'), - ('surname', 'farrell'), - ('surname', 'wyatt'), - ('surname', 'dalton'), - ('surname', 'horn'), - ('surname', 'barron'), - ('surname', 'phelps'), - ('surname', 'yu'), - ('surname', 'dickerson'), - ('surname', 'heath'), - ('surname', 'foley'), - ('surname', 'atkins'), - ('surname', 'mathews'), - ('surname', 'bonilla'), - ('surname', 'acevedo'), - ('surname', 'benitez'), - ('surname', 'zavala'), - ('surname', 'hensley'), - ('surname', 'glenn'), - ('surname', 'cisneros'), - ('surname', 'harrell'), - ('surname', 'shields'), - ('surname', 'rubio'), - ('surname', 'huffman'), - ('surname', 'choi'), - ('surname', 'boyer'), - ('surname', 'garrison'), - ('surname', 'arroyo'), - ('surname', 'bond'), - ('surname', 'kane'), - ('surname', 'hancock'), - ('surname', 'callahan'), - ('surname', 'dillon'), - ('surname', 'cline'), - ('surname', 'wiggins'), - ('surname', 'grimes'), - ('surname', 'arellano'), - ('surname', 'melton'), - ('surname', 'oneill'), - ('surname', 'savage'), - ('surname', 'ho'), - ('surname', 'beltran'), - ('surname', 'pitts'), - ('surname', 'parrish'), - ('surname', 'ponce'), - ('surname', 'rich'), - ('surname', 'booth'), - ('surname', 'koch'), - ('surname', 'golden'), - ('surname', 'ware'), - ('surname', 'brennan'), - ('surname', 'mcdowell'), - ('surname', 'marks'), - ('surname', 'cantu'), - ('surname', 'humphrey'), - ('surname', 'baxter'), - ('surname', 'sawyer'), - ('surname', 'clay'), - ('surname', 'tanner'), - ('surname', 'hutchinson'), - ('surname', 'kaur'), - ('surname', 'berg'), - ('surname', 'wiley'), - ('surname', 'gilmore'), - ('surname', 'russo'), - ('surname', 'villegas'), - ('surname', 'hobbs'), - ('surname', 'keith'), - ('surname', 'wilkerson'), - ('surname', 'ahmed'), - ('surname', 'beard'), - ('surname', 'mcclain'), - ('surname', 'montes'), - ('surname', 'mata'), - ('surname', 'rosario'), - ('surname', 'vang'), - ('surname', 'walter'), - ('surname', 'henson'), - ('surname', 'oneal'), - ('surname', 'mosley'), - ('surname', 'mcclure'), - ('surname', 'beasley'), - ('surname', 'stephenson'), - ('surname', 'snow'), - ('surname', 'huerta'), - ('surname', 'preston'), - ('surname', 'vance'), - ('surname', 'barry'), - ('surname', 'johns'), - ('surname', 'eaton'), - ('surname', 'blackwell'), - ('surname', 'dyer'), - ('surname', 'prince'), - ('surname', 'macdonald'), - ('surname', 'solomon'), - ('surname', 'guevara'), - ('surname', 'stafford'), - ('surname', 'english'), - ('surname', 'hurst'), - ('surname', 'woodard'), - ('surname', 'cortes'), - ('surname', 'shannon'), - ('surname', 'kemp'), - ('surname', 'nolan'), - ('surname', 'mccullough'), - ('surname', 'merritt'), - ('surname', 'murillo'), - ('surname', 'moon'), - ('surname', 'salgado'), - ('surname', 'strong'), - ('surname', 'kline'), - ('surname', 'cordova'), - ('surname', 'barajas'), - ('surname', 'roach'), - ('surname', 'rosas'), - ('surname', 'winters'), - ('surname', 'jacobson'), - ('surname', 'lester'), - ('surname', 'knox'), - ('surname', 'bullock'), - ('surname', 'kerr'), - ('surname', 'leach'), - ('surname', 'meadows'), - ('surname', 'orr'), - ('surname', 'davila'), - ('surname', 'whitehead'), - ('surname', 'pruitt'), - ('surname', 'kent'), - ('surname', 'conway'), - ('surname', 'mckee'), - ('surname', 'barr'), - ('surname', 'david'), - ('surname', 'dejesus'), - ('surname', 'marin'), - ('surname', 'berger'), - ('surname', 'mcintyre'), - ('surname', 'blankenship'), - ('surname', 'gaines'), - ('surname', 'palacios'), - ('surname', 'cuevas'), - ('surname', 'bartlett'), - ('surname', 'durham'), - ('surname', 'dorsey'), - ('surname', 'mccall'), - ('surname', 'odonnell'), - ('surname', 'stein'), - ('surname', 'browning'), - ('surname', 'stout'), - ('surname', 'lowery'), - ('surname', 'sloan'), - ('surname', 'mclean'), - ('surname', 'hendricks'), - ('surname', 'calhoun'), - ('surname', 'sexton'), - ('surname', 'chung'), - ('surname', 'gentry'), - ('surname', 'hull'), - ('surname', 'duarte'), - ('surname', 'ellison'), - ('surname', 'nielsen'), - ('surname', 'gillespie'), - ('surname', 'buck'), - ('surname', 'middleton'), - ('surname', 'sellers'), - ('surname', 'leblanc'), - ('surname', 'esparza'), - ('surname', 'hardin'), - ('surname', 'bradshaw'), - ('surname', 'mcintosh'), - ('surname', 'howe'), - ('surname', 'livingston'), - ('surname', 'frost'), - ('surname', 'glass'), - ('surname', 'morse'), - ('surname', 'knapp'), - ('surname', 'herman'), - ('surname', 'stark'), - ('surname', 'bravo'), - ('surname', 'noble'), - ('surname', 'spears'), - ('surname', 'weeks'), - ('surname', 'corona'), - ('surname', 'frederick'), - ('surname', 'buckley'), - ('surname', 'mcfarland'), - ('surname', 'hebert'), - ('surname', 'enriquez'), - ('surname', 'hickman'), - ('surname', 'quintero'), - ('surname', 'randolph'), - ('surname', 'schaefer'), - ('surname', 'walls'), - ('surname', 'trejo'), - ('surname', 'house'), - ('surname', 'reilly'), - ('surname', 'pennington'), - ('surname', 'michael'), - ('surname', 'conrad'), - ('surname', 'giles'), - ('surname', 'benjamin'), - ('surname', 'crosby'), - ('surname', 'fitzpatrick'), - ('surname', 'donovan'), - ('surname', 'mays'), - ('surname', 'mahoney'), - ('surname', 'valentine'), - ('surname', 'raymond'), - ('surname', 'medrano'), - ('surname', 'hahn'), - ('surname', 'mcmillan'), - ('surname', 'small'), - ('surname', 'bentley'), - ('surname', 'felix'), - ('surname', 'peck'), - ('surname', 'lucero'), - ('surname', 'boyle'), - ('surname', 'hanna'), - ('surname', 'pace'), - ('surname', 'rush'), - ('surname', 'hurley'), - ('surname', 'harding'), - ('surname', 'mcconnell'), - ('surname', 'bernal'), - ('surname', 'nava'), - ('surname', 'ayers'), - ('surname', 'everett'), - ('surname', 'ventura'), - ('surname', 'avery'), - ('surname', 'pugh'), - ('surname', 'mayer'), - ('surname', 'bender'), - ('surname', 'shepard'), - ('surname', 'mcmahon'), - ('surname', 'landry'), - ('surname', 'case'), - ('surname', 'sampson'), - ('surname', 'moses'), - ('surname', 'magana'), - ('surname', 'blackburn'), - ('surname', 'dunlap'), - ('surname', 'gould'), - ('surname', 'duffy'), - ('surname', 'vaughan'), - ('surname', 'herring'), - ('surname', 'mckay'), - ('surname', 'espinosa'), - ('surname', 'rivers'), - ('surname', 'farley'), - ('surname', 'bernard'), - ('surname', 'ashley'), - ('surname', 'friedman'), - ('surname', 'potts'), - ('surname', 'truong'), - ('surname', 'costa'), - ('surname', 'correa'), - ('surname', 'blevins'), - ('surname', 'nixon'), - ('surname', 'clements'), - ('surname', 'fry'), - ('surname', 'delarosa'), - ('surname', 'best'), - ('surname', 'benton'), - ('surname', 'lugo'), - ('surname', 'portillo'), - ('surname', 'dougherty'), - ('surname', 'crane'), - ('surname', 'haley'), - ('surname', 'phan'), - ('surname', 'villalobos'), - ('surname', 'blanchard'), - ('surname', 'horne'), - ('surname', 'finley'), - ('surname', 'quintana'), - ('surname', 'lynn'), - ('surname', 'esquivel'), - ('surname', 'bean'), - ('surname', 'dodson'), - ('surname', 'mullen'), - ('surname', 'xiong'), - ('surname', 'hayden'), - ('surname', 'cano'), - ('surname', 'levy'), - ('surname', 'huber'), - ('surname', 'richmond'), - ('surname', 'moyer'), - ('surname', 'lim'), - ('surname', 'frye'), - ('surname', 'sheppard'), - ('surname', 'mccarty'), - ('surname', 'avalos'), - ('surname', 'booker'), - ('surname', 'waller'), - ('surname', 'parra'), - ('surname', 'woodward'), - ('surname', 'jaramillo'), - ('surname', 'krueger'), - ('surname', 'rasmussen'), - ('surname', 'brandt'), - ('surname', 'peralta'), - ('surname', 'donaldson'), - ('surname', 'stuart'), - ('surname', 'faulkner'), - ('surname', 'maynard'), - ('surname', 'galindo'), - ('surname', 'coffey'), - ('surname', 'estes'), - ('surname', 'sanford'), - ('surname', 'burch'), - ('surname', 'maddox'), - ('surname', 'vo'), - ('surname', 'oconnell'), - ('surname', 'vu'), - ('surname', 'andersen'), - ('surname', 'spence'), - ('surname', 'mcpherson'), - ('surname', 'church'), - ('surname', 'schmitt'), - ('surname', 'stanton'), - ('surname', 'leal'), - ('surname', 'cherry'), - ('surname', 'compton'), - ('surname', 'dudley'), - ('surname', 'sierra'), - ('surname', 'pollard'), - ('surname', 'alfaro'), - ('surname', 'hester'), - ('surname', 'proctor'), - ('surname', 'lu'), - ('surname', 'hinton'), - ('surname', 'novak'), - ('surname', 'good'), - ('surname', 'madden'), - ('surname', 'mccann'), - ('surname', 'terrell'), - ('surname', 'jarvis'), - ('surname', 'dickson'), - ('surname', 'reyna'), - ('surname', 'cantrell'), - ('surname', 'mayo'), - ('surname', 'branch'), - ('surname', 'hendrix'), - ('surname', 'rollins'), - ('surname', 'rowland'), - ('surname', 'whitney'), - ('surname', 'duke'), - ('surname', 'odom'), - ('surname', 'daugherty'), - ('surname', 'travis'), - ('surname', 'tang'), - ('boys', 'david'), - ('boys', 'christopher'), - ('boys', 'andrew'), - ('boys', 'john'), - ('boys', 'james'), - ('boys', 'craig'), - ('boys', 'steven'), - ('boys', 'paul'), - ('boys', 'michael'), - ('boys', 'scott'), - ('boys', 'robert'), - ('boys', 'mark'), - ('boys', 'william'), - ('boys', 'kevin'), - ('boys', 'stuart'), - ('boys', 'stephen'), - ('boys', 'alan'), - ('boys', 'gary'), - ('boys', 'ross'), - ('boys', 'colin'), - ('boys', 'richard'), - ('boys', 'martin'), - ('boys', 'thomas'), - ('boys', 'neil'), - ('boys', 'ryan'), - ('boys', 'graeme'), - ('boys', 'brian'), - ('boys', 'peter'), - ('boys', 'gordon'), - ('boys', 'darren'), - ('boys', 'ian'), - ('boys', 'jamie'), - ('boys', 'alexander'), - ('boys', 'iain'), - ('boys', 'graham'), - ('boys', 'barry'), - ('boys', 'allan'), - ('boys', 'jonathan'), - ('boys', 'daniel'), - ('boys', 'gavin'), - ('boys', 'derek'), - ('boys', 'kenneth'), - ('boys', 'sean'), - ('boys', 'matthew'), - ('boys', 'lee'), - ('boys', 'george'), - ('boys', 'nicholas'), - ('boys', 'anthony'), - ('boys', 'stewart'), - ('boys', 'fraser'), - ('boys', 'douglas'), - ('boys', 'keith'), - ('boys', 'joseph'), - ('boys', 'grant'), - ('boys', 'marc'), - ('boys', 'adam'), - ('boys', 'simon'), - ('boys', 'alistair'), - ('boys', 'garry'), - ('boys', 'alastair'), - ('boys', 'bryan'), - ('boys', 'liam'), - ('boys', 'jason'), - ('boys', 'duncan'), - ('boys', 'euan'), - ('boys', 'charles'), - ('boys', 'greg'), - ('boys', 'edward'), - ('boys', 'philip'), - ('boys', 'russell'), - ('boys', 'shaun'), - ('boys', 'gareth'), - ('boys', 'ewan'), - ('boys', 'calum'), - ('boys', 'callum'), - ('boys', 'donald'), - ('boys', 'cameron'), - ('boys', 'raymond'), - ('boys', 'patrick'), - ('boys', 'alasdair'), - ('boys', 'dean'), - ('boys', 'greig'), - ('boys', 'lewis'), - ('boys', 'benjamin'), - ('boys', 'malcolm'), - ('boys', 'niall'), - ('boys', 'gerard'), - ('boys', 'martyn'), - ('boys', 'jordan'), - ('boys', 'aaron'), - ('boys', 'francis'), - ('boys', 'hugh'), - ('boys', 'gregor'), - ('boys', 'mohammed'), - ('boys', 'robin'), - ('boys', 'samuel'), - ('boys', 'angus'), - ('boys', 'bruce'), - ('boys', 'kris'), - ('boys', 'ronald'), - ('girls', 'laura'), - ('girls', 'claire'), - ('girls', 'nicola'), - ('girls', 'jennifer'), - ('girls', 'louise'), - ('girls', 'sarah'), - ('girls', 'lisa'), - ('girls', 'michelle'), - ('girls', 'emma'), - ('girls', 'fiona'), - ('girls', 'karen'), - ('girls', 'gillian'), - ('girls', 'gemma'), - ('girls', 'kirsty'), - ('girls', 'lynsey'), - ('girls', 'victoria'), - ('girls', 'donna'), - ('girls', 'kelly'), - ('girls', 'susan'), - ('girls', 'julie'), - ('girls', 'angela'), - ('girls', 'pamela'), - ('girls', 'leanne'), - ('girls', 'amanda'), - ('girls', 'joanne'), - ('girls', 'alison'), - ('girls', 'caroline'), - ('girls', 'heather'), - ('girls', 'jacqueline'), - ('girls', 'suzanne'), - ('girls', 'stephanie'), - ('girls', 'catherine'), - ('girls', 'elaine'), - ('girls', 'natalie'), - ('girls', 'lynne'), - ('girls', 'stacey'), - ('girls', 'lindsay'), - ('girls', 'lauren'), - ('girls', 'cheryl'), - ('girls', 'elizabeth'), - ('girls', 'deborah'), - ('girls', 'lesley'), - ('girls', 'kerry'), - ('girls', 'lorna'), - ('girls', 'charlene'), - ('girls', 'sharon'), - ('girls', 'lorraine'), - ('girls', 'lynn'), - ('girls', 'amy'), - ('girls', 'tracy'), - ('girls', 'clare'), - ('girls', 'rebecca'), - ('girls', 'debbie'), - ('girls', 'samantha'), - ('girls', 'kimberley'), - ('girls', 'rachel'), - ('girls', 'yvonne'), - ('girls', 'helen'), - ('girls', 'margaret'), - ('girls', 'carol'), - ('girls', 'christine'), - ('girls', 'diane'), - ('girls', 'linda'), - ('girls', 'ashley'), - ('girls', 'dawn'), - ('girls', 'paula'), - ('girls', 'marie'), - ('girls', 'pauline'), - ('girls', 'danielle'), - ('girls', 'anna'), - ('girls', 'hazel'), - ('girls', 'jill'), - ('girls', 'shona'), - ('girls', 'catriona'), - ('girls', 'jane'), - ('girls', 'kim'), - ('girls', 'mhairi'), - ('girls', 'anne'), - ('girls', 'tracey'), - ('girls', 'hayley'), - ('girls', 'lyndsey'), - ('girls', 'sara'), - ('girls', 'melissa'), - ('girls', 'kathryn'), - ('girls', 'lyndsay'), - ('girls', 'lucy'), - ('girls', 'ruth'), - ('girls', 'mary'), - ('girls', 'andrea'), - ('girls', 'lindsey'), - ('girls', 'denise'), - ('girls', 'joanna'), - ('girls', 'alana'), - ('girls', 'adele'), - ('girls', 'kathleen'), - ('girls', 'melanie'), - ('girls', 'christina'), - ('girls', 'hannah'), - ('girls', 'kirsten'), - ('girls', 'siobhan'), - ('street', '01ST ST'), - ('street', '02ND AVE'), - ('street', '02ND ST'), - ('street', '03RD AVE'), - ('street', '03RD ST'), - ('street', '04TH AVE'), - ('street', '04TH ST'), - ('street', '05TH AVE'), - ('street', '05TH ST'), - ('street', '06TH AVE'), - ('street', '06TH ST'), - ('street', '07TH AVE'), - ('street', '07TH ST'), - ('street', '08TH AVE'), - ('street', '08TH ST'), - ('street', '09TH AVE'), - ('street', '09TH ST'), - ('street', '10TH AVE'), - ('street', '10TH ST'), - ('street', '11TH AVE'), - ('street', '11TH ST'), - ('street', '12TH AVE'), - ('street', '12TH ST'), - ('street', '13TH ST'), - ('street', '14TH AVE'), - ('street', '14TH ST'), - ('street', '15TH AVE'), - ('street', '15TH ST'), - ('street', '16TH AVE'), - ('street', '16TH ST'), - ('street', '17TH AVE'), - ('street', '17TH ST'), - ('street', '18TH AVE'), - ('street', '18TH ST'), - ('street', '19TH AVE'), - ('street', '19TH ST'), - ('street', '20TH AVE'), - ('street', '20TH ST'), - ('street', '21ST AVE'), - ('street', '21ST ST'), - ('street', '22ND AVE'), - ('street', '22ND ST'), - ('street', '23RD AVE'), - ('street', '23RD ST'), - ('street', '24TH AVE'), - ('street', '24TH ST'), - ('street', '25TH AVE'), - ('street', '25TH ST'), - ('street', '26TH AVE'), - ('street', '26TH ST'), - ('street', '27TH AVE'), - ('street', '27TH ST'), - ('street', '28TH AVE'), - ('street', '28TH ST'), - ('street', '29TH AVE'), - ('street', '29TH ST'), - ('street', '30TH AVE'), - ('street', '30TH ST'), - ('street', '31ST AVE'), - ('street', '31ST ST'), - ('street', '32ND AVE'), - ('street', '33RD AVE'), - ('street', '34TH AVE'), - ('street', '35TH AVE'), - ('street', '36TH AVE'), - ('street', '37TH AVE'), - ('street', '38TH AVE'), - ('street', '39TH AVE'), - ('street', '40TH AVE'), - ('street', '41ST AVE'), - ('street', '42ND AVE'), - ('street', '43RD AVE'), - ('street', '44TH AVE'), - ('street', '45TH AVE'), - ('street', '46TH AVE'), - ('street', '47TH AVE'), - ('street', '48TH AVE'), - ('street', 'A ST'), - ('street', 'ABBEY ST'), - ('street', 'ACACIA AVE'), - ('street', 'ACACIA ST'), - ('street', 'ACADIA ST'), - ('street', 'ACEVEDO AVE'), - ('street', 'ACME ALY'), - ('street', 'ACORN ALY'), - ('street', 'ACTON ST'), - ('street', 'ADA CT'), - ('street', 'ADAIR ST'), - ('street', 'ADAM ST'), - ('street', 'ADDISON ST'), - ('street', 'ADELE CT'), - ('street', 'ADMIRAL AVE'), - ('street', 'ADOLPH SUTRO CT'), - ('street', 'AERIAL WAY'), - ('street', 'AGNON AVE'), - ('street', 'AGUA WAY'), - ('street', 'AHERN WAY'), - ('street', 'ALABAMA ST'), - ('street', 'ALADDIN TER'), - ('street', 'ALAMEDA ST'), - ('street', 'ALANA WAY'), - ('street', 'ALBATROSS CT'), - ('street', 'ALBERTA ST'), - ('street', 'ALBION ST'), - ('street', 'ALDER ST'), - ('street', 'ALEMANY BLVD'), - ('street', 'ALEMANY BLVD OFF RAMP'), - ('street', 'ALERT ALY'), - ('street', 'ALHAMBRA ST'), - ('street', 'ALICE B TOKLAS PL'), - ('street', 'ALLEN ST'), - ('street', 'ALLISON ST'), - ('street', 'ALLSTON WAY'), - ('street', 'ALMA ST'), - ('street', 'ALMADEN CT'), - ('street', 'ALOHA AVE'), - ('street', 'ALPHA ST'), - ('street', 'ALPINE TER'), - ('street', 'ALTA ST'), - ('street', 'ALTA MAR WAY'), - ('street', 'ALTA VISTA TER'), - ('street', 'ALTON AVE'), - ('street', 'ALVARADO ST'), - ('street', 'ALVISO ST'), - ('street', 'ALVORD ST'), - ('street', 'AMADOR ST'), - ('street', 'AMATISTA LN'), - ('street', 'AMATURY LOOP'), - ('street', 'AMAZON AVE'), - ('street', 'AMBER DR'), - ('street', 'AMBROSE BIERCE ST'), - ('street', 'AMES ST'), - ('street', 'AMETHYST WAY'), - ('street', 'AMHERST ST'), - ('street', 'AMITY ALY'), - ('street', 'ANDERSON ST'), - ('street', 'ANDOVER ST'), - ('street', 'ANDREW ST'), - ('street', 'ANGELOS ALY'), - ('street', 'ANGLO ALY'), - ('street', 'ANKENY ST'), - ('street', 'ANNAPOLIS TER'), - ('street', 'ANNIE ST'), - ('street', 'ANSON PL'), - ('street', 'ANTHONY ST'), - ('street', 'ANTONIO ST'), - ('street', 'ANZA AVE'), - ('street', 'ANZA ST'), - ('street', 'ANZAVISTA AVE'), - ('street', 'APOLLO ST'), - ('street', 'APPAREL WAY'), - ('street', 'APPLETON AVE'), - ('street', 'APPLETON ST'), - ('street', 'APTOS AVE'), - ('street', 'AQUAVISTA WAY'), - ('street', 'ARAGO ST'), - ('street', 'ARBALLO DR'), - ('street', 'ARBOL LN'), - ('street', 'ARBOR ST'), - ('street', 'ARCH ST'), - ('street', 'ARCO WAY'), - ('street', 'ARDATH CT'), - ('street', 'ARDENWOOD WAY'), - ('street', 'ARELIOUS WALKER DR'), - ('street', 'ARELLANO AVE'), - ('street', 'ARGENT ALY'), - ('street', 'ARGONAUT AVE'), - ('street', 'ARGUELLO BLVD'), - ('street', 'ARKANSAS ST'), - ('street', 'ARLETA AVE'), - ('street', 'ARLINGTON ST'), - ('street', 'ARMISTEAD RD'), - ('street', 'ARMORY DR'), - ('street', 'ARMSTRONG AVE'), - ('street', 'ARNOLD AVE'), - ('street', 'ARROYO WAY'), - ('street', 'ARTHUR AVE'), - ('street', 'ASH ST'), - ('street', 'ASHBURTON PL'), - ('street', 'ASHBURY ST'), - ('street', 'ASHBURY TER'), - ('street', 'ASHTON AVE'), - ('street', 'ASHWOOD LN'), - ('street', 'ASPEN CT'), - ('street', 'ATALAYA TER'), - ('street', 'ATHENS ST'), - ('street', 'ATOLL CIR'), - ('street', 'ATTRIDGE ALY'), - ('street', 'AUBURN ST'), - ('street', 'AUGUST ALY'), - ('street', 'AUGUSTA ST'), - ('street', 'AUSTIN ST'), - ('street', 'AUTO DR'), - ('street', 'AUTOMOBILE DR'), - ('street', 'AVALON AVE'), - ('street', 'AVENUE B'), - ('street', 'AVENUE C'), - ('street', 'AVENUE D'), - ('street', 'AVENUE E'), - ('street', 'AVENUE F'), - ('street', 'AVENUE H'), - ('street', 'AVENUE I'), - ('street', 'AVENUE M'), - ('street', 'AVENUE N'), - ('street', 'AVENUE OF THE PALMS'), - ('street', 'AVERY ST'), - ('street', 'AVILA ST'), - ('street', 'AVOCA ALY'), - ('street', 'AVOCET WAY'), - ('street', 'AVON WAY'), - ('street', 'AZTEC ST'), - ('street', 'BACHE ST'), - ('street', 'BACON ST'), - ('street', 'BADEN ST'), - ('street', 'BADGER ST'), - ('street', 'BAKER CT'), - ('street', 'BAKER ST'), - ('street', 'BALANCE ST'), - ('street', 'BALBOA ST'), - ('street', 'BALCETA AVE'), - ('street', 'BALDWIN CT'), - ('street', 'BALHI CT'), - ('street', 'BALMY ST'), - ('street', 'BALTIMORE WAY'), - ('street', 'BANBURY DR'), - ('street', 'BANCROFT AVE'), - ('street', 'BANK ST'), - ('street', 'BANKS ST'), - ('street', 'BANNAN PL'), - ('street', 'BANNEKER WAY'), - ('street', 'BANNOCK ST'), - ('street', 'BARCELONA AVE'), - ('street', 'BARNARD AVE'), - ('street', 'BARNEVELD AVE'), - ('street', 'BARRY CT'), - ('street', 'BARTLETT ST'), - ('street', 'BARTOL ST'), - ('street', 'BASS CT'), - ('street', 'BATTERY ST'), - ('street', 'BATTERY BLANEY RD'), - ('street', 'BATTERY CAULFIELD RD'), - ('street', 'BATTERY CHAMBERLIN RD'), - ('street', 'BATTERY CRANSTON RD'), - ('street', 'BATTERY CROSBY RD'), - ('street', 'BATTERY DYNAMITE RD'), - ('street', 'BATTERY EAST RD'), - ('street', 'BATTERY SAFFORD RD'), - ('street', 'BATTERY WAGNER RD'), - ('street', 'BAXTER ALY'), - ('street', 'BAY ST'), - ('street', 'BAY SHORE BLVD'), - ('street', 'BAY SHORE BLVD OFF RAMP'), - ('street', 'BAY SHORE BLVD ON RAMP'), - ('street', 'BAY VIEW ST'), - ('street', 'BAYSIDE DR'), - ('street', 'BAYSIDE VILLAGE PL'), - ('street', 'BAYVIEW CIR'), - ('street', 'BAYVIEW PARK RD'), - ('street', 'BAYWOOD CT'), - ('street', 'BEACH ST'), - ('street', 'BEACHMONT DR'), - ('street', 'BEACON ST'), - ('street', 'BEALE ST'), - ('street', 'BEATRICE LN'), - ('street', 'BEAUMONT AVE'), - ('street', 'BEAVER ST'), - ('street', 'BECKETT ST'), - ('street', 'BEDFORD PL'), - ('street', 'BEEMAN LN'), - ('street', 'BEHR AVE'), - ('street', 'BEIDEMAN ST'), - ('street', 'BELCHER ST'), - ('street', 'BELDEN ST'), - ('street', 'BELGRAVE AVE'), - ('street', 'BELL CT'), - ('street', 'BELLA VISTA WAY'), - ('street', 'BELLAIR PL'), - ('street', 'BELLE AVE'), - ('street', 'BELLES ST'), - ('street', 'BELLEVUE AVE'), - ('street', 'BELMONT AVE'), - ('street', 'BELVEDERE ST'), - ('street', 'BEMIS ST'), - ('street', 'BENGAL ALY'), - ('street', 'BENNINGTON ST'), - ('street', 'BENTON AVE'), - ('street', 'BEPLER ST'), - ('street', 'BERCUT ACCESS RD'), - ('street', 'BERGEN ALY'), - ('street', 'BERKELEY WAY'), - ('street', 'BERKSHIRE WAY'), - ('street', 'BERNAL HEIGHTS BLVD'), - ('street', 'BERNARD ST'), - ('street', 'BERNICE ST'), - ('street', 'BERNICE RODGERS WAY'), - ('street', 'BERRY ST'), - ('street', 'BERRY EXTENSION ST'), - ('street', 'BERTHA LN'), - ('street', 'BERTIE MINOR LN'), - ('street', 'BERTITA ST'), - ('street', 'BERWICK PL'), - ('street', 'BESSIE ST'), - ('street', 'BEULAH ST'), - ('street', 'BEVERLY ST'), - ('street', 'BIGELOW CT'), - ('street', 'BIGLER AVE'), - ('street', 'BIRCH ST'), - ('street', 'BIRCHWOOD CT'), - ('street', 'BIRD ST'), - ('street', 'BIRMINGHAM RD'), - ('street', 'BISHOP ST'), - ('street', 'BITTING AVE'), - ('street', 'BLACK PL'), - ('street', 'BLACKSTONE CT'), - ('street', 'BLAIR TER'), - ('street', 'BLAIRWOOD LN'), - ('street', 'BLAKE ST'), - ('street', 'BLANCHE ST'), - ('street', 'BLANDY ST'), - ('street', 'BLANKEN AVE'), - ('street', 'BLATCHFORD LN'), - ('street', 'BLISS CT'), - ('street', 'BLISS RD'), - ('street', 'BLUXOME ST'), - ('street', 'BLYTHDALE AVE'), - ('street', 'BOALT ST'), - ('street', 'BOARDMAN PL'), - ('street', 'BOB KAUFMAN ALY'), - ('street', 'BOCANA ST'), - ('street', 'BONIFACIO ST'), - ('street', 'BONITA ST'), - ('street', 'BONNIE BRAE LN'), - ('street', 'BONVIEW ST'), - ('street', 'BORICA ST'), - ('street', 'BOSWORTH ST'), - ('street', 'BOUTWELL ST'), - ('street', 'BOWDOIN ST'), - ('street', 'BOWLEY CT'), - ('street', 'BOWLEY ST'), - ('street', 'BOWLING GREEN DR'), - ('street', 'BOWMAN CT'), - ('street', 'BOYD ST'), - ('street', 'BOYLSTON ST'), - ('street', 'BOYNTON CT'), - ('street', 'BRADFORD ST'), - ('street', 'BRADY ST'), - ('street', 'BRANNAN ST'), - ('street', 'BRANT ALY'), - ('street', 'BRAZIL AVE'), - ('street', 'BREEN PL'), - ('street', 'BRENTWOOD AVE'), - ('street', 'BRET HARTE TER'), - ('street', 'BREWSTER ST'), - ('street', 'BRICE TER'), - ('street', 'BRIDGEVIEW DR'), - ('street', 'BRIDGEVIEW WAY'), - ('street', 'BRIGHT ST'), - ('street', 'BRIGHTON AVE'), - ('street', 'BRITTON ST'), - ('street', 'BROAD ST'), - ('street', 'BROADMOOR DR'), - ('street', 'BROADWAY'), - ('street', 'BRODERICK ST'), - ('street', 'BROMLEY PL'), - ('street', 'BROMPTON AVE'), - ('street', 'BRONTE ST'), - ('street', 'BROOK ST'), - ('street', 'BROOKDALE AVE'), - ('street', 'BROOKHAVEN LN'), - ('street', 'BROOKLYN PL'), - ('street', 'BROOKS ST'), - ('street', 'BROSNAN ST'), - ('street', 'BROTHERHOOD WAY'), - ('street', 'BROWN ST'), - ('street', 'BRUCE AVE'), - ('street', 'BRUMISS TER'), - ('street', 'BRUNSWICK ST'), - ('street', 'BRUSH LN'), - ('street', 'BRUSH PL'), - ('street', 'BRUSSELS ST'), - ('street', 'BRYANT ST'), - ('street', 'BUCARELI DR'), - ('street', 'BUCHANAN ST'), - ('street', 'BUCKINGHAM WAY'), - ('street', 'BUENA VISTA TER'), - ('street', 'BURGOYNE ST'), - ('street', 'BURKE AVE'), - ('street', 'BURLWOOD DR'), - ('street', 'BURNETT AVE'), - ('street', 'BURNS PL'), - ('street', 'BURNSIDE AVE'), - ('street', 'BURR AVE'), - ('street', 'BURRITT ST'), - ('street', 'BURROWS DR'), - ('street', 'BURROWS ST'), - ('street', 'BUSH ST'), - ('street', 'BUTTE PL'), - ('street', 'BYRON CT'), - ('street', 'BYXBEE ST'), - ('street', 'C ST'), - ('street', 'CABRILLO ST'), - ('street', 'CADELL PL'), - ('street', 'CAINE AVE'), - ('street', 'CAIRE TER'), - ('street', 'CALEDONIA ST'), - ('street', 'CALGARY ST'), - ('street', 'CALHOUN TER'), - ('street', 'CALIFORNIA AVE'), - ('street', 'CALIFORNIA ST'), - ('street', 'CALVERT DR'), - ('street', 'CAMBON DR'), - ('street', 'CAMBRIDGE ST'), - ('street', 'CAMELLIA AVE'), - ('street', 'CAMEO WAY'), - ('street', 'CAMERON WAY'), - ('street', 'CAMP ST'), - ('street', 'CAMPBELL AVE'), - ('street', 'CAMPTON PL'), - ('street', 'CAMPUS LN'), - ('street', 'CAMPUS WAY'), - ('street', 'CANBY LN'), - ('street', 'CANBY ST'), - ('street', 'CANDLESTICK COVE WAY'), - ('street', 'CANDLESTICK POINT SRA'), - ('street', 'CANYON DR'), - ('street', 'CAPISTRANO AVE'), - ('street', 'CAPITOL AVE'), - ('street', 'CAPP ST'), - ('street', 'CAPRA WAY'), - ('street', 'CARD ALY'), - ('street', 'CARDENAS AVE'), - ('street', 'CARGO WAY'), - ('street', 'CARL ST'), - ('street', 'CARMEL ST'), - ('street', 'CARMELITA ST'), - ('street', 'CARNELIAN WAY'), - ('street', 'CAROLINA ST'), - ('street', 'CARPENTER CT'), - ('street', 'CARR ST'), - ('street', 'CARRIE ST'), - ('street', 'CARRIZAL ST'), - ('street', 'CARROLL AVE'), - ('street', 'CARSON ST'), - ('street', 'CARTER ST'), - ('street', 'CARVER ST'), - ('street', 'CASA WAY'), - ('street', 'CASCADE WALK'), - ('street', 'CASE ST'), - ('street', 'CASELLI AVE'), - ('street', 'CASHMERE ST'), - ('street', 'CASITAS AVE'), - ('street', 'CASSANDRA CT'), - ('street', 'CASTELO AVE'), - ('street', 'CASTENADA AVE'), - ('street', 'CASTILLO ST'), - ('street', 'CASTLE ST'), - ('street', 'CASTLE MANOR AVE'), - ('street', 'CASTRO ST'), - ('street', 'CATALINA ST'), - ('street', 'CATHERINE CT'), - ('street', 'CAYUGA AVE'), - ('street', 'CCSF PARKING LOT'), - ('street', 'CECILIA AVE'), - ('street', 'CEDAR ST'), - ('street', 'CEDRO AVE'), - ('street', 'CENTRAL AVE'), - ('street', 'CENTRAL MAGAZINE RD'), - ('street', 'CENTURY PL'), - ('street', 'CERES ST'), - ('street', 'CERRITOS AVE'), - ('street', 'CERVANTES BLVD'), - ('street', 'CESAR CHAVEZ ST'), - ('street', 'CESAR CHAVEZ ON RAMP'), - ('street', 'CHABOT TER'), - ('street', 'CHAIN OF LAKES DR'), - ('street', 'CHANCERY LN'), - ('street', 'CHANNEL'), - ('street', 'CHANNEL ST'), - ('street', 'CHAPMAN ST'), - ('street', 'CHARLES ST'), - ('street', 'CHARLES J BRENHAM PL'), - ('street', 'CHARLTON CT'), - ('street', 'CHARTER OAK AVE'), - ('street', 'CHASE CT'), - ('street', 'CHATHAM PL'), - ('street', 'CHATTANOOGA ST'), - ('street', 'CHAVES AVE'), - ('street', 'CHENERY ST'), - ('street', 'CHERRY ST'), - ('street', 'CHESLEY ST'), - ('street', 'CHESTER AVE'), - ('street', 'CHESTNUT ST'), - ('street', 'CHICAGO WAY'), - ('street', 'CHILD ST'), - ('street', 'CHILTON AVE'), - ('street', 'CHINA BASIN ST'), - ('street', 'CHINOOK CT'), - ('street', 'CHRISTMAS TREE POINT RD'), - ('street', 'CHRISTOPHER DR'), - ('street', 'CHULA LN'), - ('street', 'CHUMASERO DR'), - ('street', 'CHURCH ST'), - ('street', 'CHURCH ACCESS RD'), - ('street', 'CHURCH PARKING LOT'), - ('street', 'CIELITO DR'), - ('street', 'CIRCULAR AVE'), - ('street', 'CITYVIEW WAY'), - ('street', 'CLAIRVIEW CT'), - ('street', 'CLARA ST'), - ('street', 'CLAREMONT BLVD'), - ('street', 'CLARENCE PL'), - ('street', 'CLARENDON AVE'), - ('street', 'CLARION ALY'), - ('street', 'CLARKE LN'), - ('street', 'CLARKE ST'), - ('street', 'CLARKSON ST'), - ('street', 'CLAUDE LN'), - ('street', 'CLAY ST'), - ('street', 'CLAYTON ST'), - ('street', 'CLEARFIELD DR'), - ('street', 'CLEARVIEW CT'), - ('street', 'CLEARY CT'), - ('street', 'CLEMENT ST'), - ('street', 'CLEMENTINA ST'), - ('street', 'CLEO RAND AVE'), - ('street', 'CLEVELAND ST'), - ('street', 'CLIFFORD TER'), - ('street', 'CLINTON PARK'), - ('street', 'CLIPPER ST'), - ('street', 'CLIPPER TER'), - ('street', 'CLIPPER COVE WAY'), - ('street', 'CLOUD CIR'), - ('street', 'CLOVER LN'), - ('street', 'CLOVER ST'), - ('street', 'CLYDE ST'), - ('street', 'COCHRANE ST'), - ('street', 'CODMAN PL'), - ('street', 'COHEN PL'), - ('street', 'COLBY ST'), - ('street', 'COLE ST'), - ('street', 'COLEMAN ST'), - ('street', 'COLERIDGE ST'), - ('street', 'COLIN PL'), - ('street', 'COLIN P KELLY JR ST'), - ('street', 'COLLEEN WAY'), - ('street', 'COLLEGE AVE'), - ('street', 'COLLEGE TER'), - ('street', 'COLLINGWOOD ST'), - ('street', 'COLLINS ST'), - ('street', 'COLON AVE'), - ('street', 'COLONIAL WAY'), - ('street', 'COLTON ST'), - ('street', 'COLUMBIA SQUARE ST'), - ('street', 'COLUMBUS AVE'), - ('street', 'COLUSA PL'), - ('street', 'COMERFORD ST'), - ('street', 'COMMER CT'), - ('street', 'COMMERCIAL ST'), - ('street', 'COMMONWEALTH AVE'), - ('street', 'COMPTON RD'), - ('street', 'CONCORD ST'), - ('street', 'CONCOURSE DR'), - ('street', 'CONGDON ST'), - ('street', 'CONGO ST'), - ('street', 'CONKLING ST'), - ('street', 'CONNECTICUT ST'), - ('street', 'CONRAD ST'), - ('street', 'CONSERVATORY ACCESS RD'), - ('street', 'CONSTANSO WAY'), - ('street', 'CONTINUUM WAY'), - ('street', 'CONVERSE ST'), - ('street', 'COOK ST'), - ('street', 'COOPER ALY'), - ('street', 'COPPER ALY'), - ('street', 'CORA ST'), - ('street', 'CORAL CT'), - ('street', 'CORAL RD'), - ('street', 'CORALINO LN'), - ('street', 'CORBETT AVE'), - ('street', 'CORBIN PL'), - ('street', 'CORDELIA ST'), - ('street', 'CORDOVA ST'), - ('street', 'CORNWALL ST'), - ('street', 'CORONA ST'), - ('street', 'CORONADO ST'), - ('street', 'CORTES AVE'), - ('street', 'CORTLAND AVE'), - ('street', 'CORWIN ST'), - ('street', 'COSGROVE ST'), - ('street', 'COSMO PL'), - ('street', 'COSO AVE'), - ('street', 'COSTA ST'), - ('street', 'COTTAGE ROW'), - ('street', 'COTTER ST'), - ('street', 'COUNTRY CLUB DR'), - ('street', 'COVENTRY CT'), - ('street', 'COVENTRY LN'), - ('street', 'COWELL PL'), - ('street', 'COWLES ST'), - ('street', 'CRAGMONT AVE'), - ('street', 'CRAGS CT'), - ('street', 'CRAIG CT'), - ('street', 'CRANE ST'), - ('street', 'CRANLEIGH DR'), - ('street', 'CRAUT ST'), - ('street', 'CRESCENT AVE'), - ('street', 'CRESCENT CT'), - ('street', 'CRESCENT WAY'), - ('street', 'CRESCIO CT'), - ('street', 'CRESPI DR'), - ('street', 'CRESTA VISTA DR'), - ('street', 'CRESTLAKE DR'), - ('street', 'CRESTLINE DR'), - ('street', 'CRESTMONT DR'), - ('street', 'CRESTWELL WALK'), - ('street', 'CRISP RD'), - ('street', 'CRISSY FIELD AVE'), - ('street', 'CROAKER CT'), - ('street', 'CROOK ST'), - ('street', 'CROSS ST'), - ('street', 'CROSSOVER DR'), - ('street', 'CROWN CT'), - ('street', 'CROWN TER'), - ('street', 'CRYSTAL ST'), - ('street', 'CUBA ALY'), - ('street', 'CUESTA CT'), - ('street', 'CULEBRA TER'), - ('street', 'CUMBERLAND ST'), - ('street', 'CUNNINGHAM PL'), - ('street', 'CURTIS ST'), - ('street', 'CUSHMAN ST'), - ('street', 'CUSTER AVE'), - ('street', 'CUSTOM HOUSE PL'), - ('street', 'CUTLER AVE'), - ('street', 'CUVIER ST'), - ('street', 'CYPRESS ST'), - ('street', 'CYRIL MAGNIN ST'), - ('street', 'CYRUS PL'), - ('street', 'D ST'), - ('street', 'DAGGETT ST'), - ('street', 'DAKOTA ST'), - ('street', 'DALEWOOD WAY'), - ('street', 'DANIEL BURNHAM CT'), - ('street', 'DANTON ST'), - ('street', 'DANVERS ST'), - ('street', 'DARIEN WAY'), - ('street', 'DARRELL PL'), - ('street', 'DARTMOUTH ST'), - ('street', 'DASHIELL HAMMETT ST'), - ('street', 'DAVENPORT LN'), - ('street', 'DAVIDSON AVE'), - ('street', 'DAVIS CT'), - ('street', 'DAVIS ST'), - ('street', 'DAWNVIEW WAY'), - ('street', 'DAWSON PL'), - ('street', 'DAY ST'), - ('street', 'DE BOOM ST'), - ('street', 'DE FOREST WAY'), - ('street', 'DE HARO ST'), - ('street', 'DE LONG ST'), - ('street', 'DE MONTFORT AVE'), - ('street', 'DE SOTO ST'), - ('street', 'DE WOLF ST'), - ('street', 'DEARBORN ST'), - ('street', 'DECATUR ST'), - ('street', 'DECKER ALY'), - ('street', 'DEDMAN CT'), - ('street', 'DEEMS RD'), - ('street', 'DEHON ST'), - ('street', 'DEL MONTE ST'), - ('street', 'DEL SUR AVE'), - ('street', 'DEL VALE AVE'), - ('street', 'DELANCEY ST'), - ('street', 'DELANO AVE'), - ('street', 'DELAWARE ST'), - ('street', 'DELGADO PL'), - ('street', 'DELLBROOK AVE'), - ('street', 'DELMAR ST'), - ('street', 'DELTA ST'), - ('street', 'DEMING ST'), - ('street', 'DENSLOWE DR'), - ('street', 'DERBY ST'), - ('street', 'DESMOND ST'), - ('street', 'DETROIT ST'), - ('street', 'DEVONSHIRE WAY'), - ('street', 'DEWEY BLVD'), - ('street', 'DEWITT RD'), - ('street', 'DIAMOND ST'), - ('street', 'DIAMOND COVE TER'), - ('street', 'DIAMOND HEIGHTS BLVD'), - ('street', 'DIANA ST'), - ('street', 'DIAZ AVE'), - ('street', 'DICHA ALY'), - ('street', 'DICHIERA CT'), - ('street', 'DICKINSON ST'), - ('street', 'DIGBY ST'), - ('street', 'DIRK DIRKSEN PL'), - ('street', 'DIVISADERO ST'), - ('street', 'DIVISION ST'), - ('street', 'DIXIE ALY'), - ('street', 'DOCK ST'), - ('street', 'DODGE ST'), - ('street', 'DOLORES ST'), - ('street', 'DOLORES TER'), - ('street', 'DOLPHIN CT'), - ('street', 'DON CHEE WAY'), - ('street', 'DONAHUE ST'), - ('street', 'DONNER AVE'), - ('street', 'DORADO TER'), - ('street', 'DORANTES AVE'), - ('street', 'DORCAS WAY'), - ('street', 'DORCHESTER WAY'), - ('street', 'DORE ST'), - ('street', 'DORIC ALY'), - ('street', 'DORLAND ST'), - ('street', 'DORMAN AVE'), - ('street', 'DORMITORY RD'), - ('street', 'DOUBLE ROCK ST'), - ('street', 'DOUGLASS ST'), - ('street', 'DOVE LOOP'), - ('street', 'DOW PL'), - ('street', 'DOWNEY ST'), - ('street', 'DR CARLTON B GOODLETT PL'), - ('street', 'DRAKE ST'), - ('street', 'DRUMM ST'), - ('street', 'DRUMMOND ALY'), - ('street', 'DUBLIN ST'), - ('street', 'DUBOCE AVE'), - ('street', 'DUDLEY RD'), - ('street', 'DUKES CT'), - ('street', 'DUNCAN ST'), - ('street', 'DUNCOMBE ALY'), - ('street', 'DUNNES ALY'), - ('street', 'DUNSHEE ST'), - ('street', 'DUNSMUIR ST'), - ('street', 'DUTCH WINDMILL ACCESS RD'), - ('street', 'DWIGHT ST'), - ('street', 'E ST'), - ('street', 'EAGLE ST'), - ('street', 'EARL ST'), - ('street', 'EASEMENT'), - ('street', 'EAST RD'), - ('street', 'EAST BEACH RD'), - ('street', 'EAST CRYSTAL COVE TER'), - ('street', 'EAST FORT MILEY RD'), - ('street', 'EASTMAN ST'), - ('street', 'EASTWOOD DR'), - ('street', 'EATON PL'), - ('street', 'ECKER ST'), - ('street', 'EDDY ST'), - ('street', 'EDGAR AVE'), - ('street', 'EDGARDO PL'), - ('street', 'EDGEHILL WAY'), - ('street', 'EDGEWOOD AVE'), - ('street', 'EDIE RD'), - ('street', 'EDINBURGH ST'), - ('street', 'EDITH ST'), - ('street', 'EDNA ST'), - ('street', 'EDWARD ST'), - ('street', 'EGBERT AVE'), - ('street', 'EL CAMINO DEL MAR'), - ('street', 'EL DORADO ST'), - ('street', 'EL MIRASOL PL'), - ('street', 'EL PLAZUELA WAY'), - ('street', 'EL POLIN LOOP'), - ('street', 'EL SERENO CT'), - ('street', 'EL VERANO WAY'), - ('street', 'ELDRIDGE ST'), - ('street', 'ELGIN PARK'), - ('street', 'ELIM ALY'), - ('street', 'ELIZABETH ST'), - ('street', 'ELK ST'), - ('street', 'ELLERT ST'), - ('street', 'ELLINGTON AVE'), - ('street', 'ELLIOT ST'), - ('street', 'ELLIS ST'), - ('street', 'ELLSWORTH ST'), - ('street', 'ELM ST'), - ('street', 'ELMHURST DR'), - ('street', 'ELMIRA ST'), - ('street', 'ELMWOOD WAY'), - ('street', 'ELSIE ST'), - ('street', 'ELWOOD ST'), - ('street', 'EMERALD LN'), - ('street', 'EMERALD COVE WAY'), - ('street', 'EMERSON ST'), - ('street', 'EMERY LN'), - ('street', 'EMIL LN'), - ('street', 'EMMA ST'), - ('street', 'EMMETT CT'), - ('street', 'ENCANTO AVE'), - ('street', 'ENCINAL WALK'), - ('street', 'ENCLINE CT'), - ('street', 'ENGLISH ST'), - ('street', 'ENTERPRISE ST'), - ('street', 'ENTRADA CT'), - ('street', 'ERIE ST'), - ('street', 'ERKSON CT'), - ('street', 'ERVINE ST'), - ('street', 'ESCOLTA WAY'), - ('street', 'ESCONDIDO AVE'), - ('street', 'ESMERALDA AVE'), - ('street', 'ESPANOLA ST'), - ('street', 'ESQUINA DR'), - ('street', 'ESSEX ST'), - ('street', 'ESTERO AVE'), - ('street', 'EUCALYPTUS DR'), - ('street', 'EUCLID AVE'), - ('street', 'EUGENIA AVE'), - ('street', 'EUREKA ST'), - ('street', 'EVANS AVE'), - ('street', 'EVE ST'), - ('street', 'EVELYN WAY'), - ('street', 'EVERGLADE DR'), - ('street', 'EVERSON ST'), - ('street', 'EWER PL'), - ('street', 'EWING TER'), - ('street', 'EXCELSIOR AVE'), - ('street', 'EXCHANGE PL'), - ('street', 'EXECUTIVE PARK BLVD'), - ('street', 'EXETER ST'), - ('street', 'EXPOSITION DR'), - ('street', 'FAIR AVE'), - ('street', 'FAIR OAKS ST'), - ('street', 'FAIRBANKS ST'), - ('street', 'FAIRFAX AVE'), - ('street', 'FAIRFIELD WAY'), - ('street', 'FAIRMOUNT ST'), - ('street', 'FAITH ST'), - ('street', 'FALLON PL'), - ('street', 'FALMOUTH ST'), - ('street', 'FANNING WAY'), - ('street', 'FARALLONES ST'), - ('street', 'FARGO PL'), - ('street', 'FARNSWORTH LN'), - ('street', 'FARNUM ST'), - ('street', 'FARRAGUT AVE'), - ('street', 'FARVIEW CT'), - ('street', 'FAUNTLEROY LN'), - ('street', 'FAXON AVE'), - ('street', 'FEDERAL ST'), - ('street', 'FELIX AVE'), - ('street', 'FELL ST'), - ('street', 'FELL ACCESS RD'), - ('street', 'FELLA PL'), - ('street', 'FELTON ST'), - ('street', 'FENTON LN'), - ('street', 'FERN ST'), - ('street', 'FERNANDEZ ST'), - ('street', 'FERNWOOD DR'), - ('street', 'FIELDING ST'), - ('street', 'FIFTH ST'), - ('street', 'FILBERT ST'), - ('street', 'FILLMORE ST'), - ('street', 'FINLEY RD'), - ('street', 'FISHER ALY'), - ('street', 'FISHER AVE'), - ('street', 'FISHER LOOP'), - ('street', 'FITCH ST'), - ('street', 'FITZGERALD AVE'), - ('street', 'FLINT ST'), - ('street', 'FLOOD AVE'), - ('street', 'FLORA ST'), - ('street', 'FLORENCE ST'), - ('street', 'FLORENTINE AVE'), - ('street', 'FLORIDA ST'), - ('street', 'FLOUNDER CT'), - ('street', 'FLOURNOY ST'), - ('street', 'FLOWER ST'), - ('street', 'FOERSTER ST'), - ('street', 'FOLSOM ST'), - ('street', 'FONT BLVD'), - ('street', 'FONTINELLA TER'), - ('street', 'FOOTE AVE'), - ('street', 'FORD ST'), - ('street', 'FOREST RD'), - ('street', 'FOREST HILL PATH'), - ('street', 'FOREST KNOLLS DR'), - ('street', 'FOREST SIDE AVE'), - ('street', 'FOREST VIEW DR'), - ('street', 'FORSYTH LN'), - ('street', 'FORT FUNSTON RD'), - ('street', 'FORTUNA AVE'), - ('street', 'FOUNTAIN ST'), - ('street', 'FOWLER AVE'), - ('street', 'FRANCE AVE'), - ('street', 'FRANCIS ST'), - ('street', 'FRANCISCO ST'), - ('street', 'FRANCONIA ST'), - ('street', 'FRANK NORRIS ST'), - ('street', 'FRANKLIN ST'), - ('street', 'FRATESSA CT'), - ('street', 'FREDELA LN'), - ('street', 'FREDERICK ST'), - ('street', 'FREDSON CT'), - ('street', 'FREELON ST'), - ('street', 'FREEMAN CT'), - ('street', 'FREMONT ST'), - ('street', 'FRENCH CT'), - ('street', 'FRESNEL WAY'), - ('street', 'FRESNO ST'), - ('street', 'FRIEDELL ST'), - ('street', 'FRIENDSHIP CT'), - ('street', 'FRONT ST'), - ('street', 'FUENTE AVE'), - ('street', 'FULTON ST'), - ('street', 'FUNSTON AVE'), - ('street', 'FUNSTON RD'), - ('street', 'GABILAN WAY'), - ('street', 'GAISER CT'), - ('street', 'GALEWOOD CIR'), - ('street', 'GALILEE LN'), - ('street', 'GALINDO AVE'), - ('street', 'GALLAGHER LN'), - ('street', 'GALVEZ AVE'), - ('street', 'GAMBIER ST'), - ('street', 'GARCES DR'), - ('street', 'GARCIA AVE'), - ('street', 'GARDEN ST'), - ('street', 'GARDEN WAY'), - ('street', 'GARDENER RD'), - ('street', 'GARDENSIDE DR'), - ('street', 'GARFIELD ST'), - ('street', 'GARLINGTON CT'), - ('street', 'GARNETT TER'), - ('street', 'GARRISON AVE'), - ('street', 'GATES ST'), - ('street', 'GATEVIEW AVE'), - ('street', 'GATEVIEW CT'), - ('street', 'GATUN ALY'), - ('street', 'GAVEN ST'), - ('street', 'GAVIOTA WAY'), - ('street', 'GEARY BLVD'), - ('street', 'GEARY ST'), - ('street', 'GELLERT DR'), - ('street', 'GENE FRIEND WAY'), - ('street', 'GENEBERN WAY'), - ('street', 'GENERAL KENNEDY AVE'), - ('street', 'GENEVA AVE'), - ('street', 'GENNESSEE ST'), - ('street', 'GENOA PL'), - ('street', 'GEORGE CT'), - ('street', 'GEORGIA ST'), - ('street', 'GERKE ALY'), - ('street', 'GERMANIA ST'), - ('street', 'GETZ ST'), - ('street', 'GIANTS DR'), - ('street', 'GIBB ST'), - ('street', 'GIBBON CT'), - ('street', 'GIBBON LN'), - ('street', 'GIBSON RD'), - ('street', 'GILBERT ST'), - ('street', 'GILLETTE AVE'), - ('street', 'GILMAN AVE'), - ('street', 'GILROY ST'), - ('street', 'GIRARD RD'), - ('street', 'GIRARD ST'), - ('street', 'GLADEVIEW WAY'), - ('street', 'GLADIOLUS LN'), - ('street', 'GLADSTONE DR'), - ('street', 'GLADYS ST'), - ('street', 'GLEN CT'), - ('street', 'GLENBROOK AVE'), - ('street', 'GLENDALE ST'), - ('street', 'GLENHAVEN LN'), - ('street', 'GLENVIEW DR'), - ('street', 'GLOBE ALY'), - ('street', 'GLORIA CT'), - ('street', 'GLOVER ST'), - ('street', 'GODEUS ST'), - ('street', 'GOETHE ST'), - ('street', 'GOETTINGEN ST'), - ('street', 'GOLD ST'), - ('street', 'GOLD MINE DR'), - ('street', 'GOLDBERG LN'), - ('street', 'GOLDEN CT'), - ('street', 'GOLDEN GATE AVE'), - ('street', 'GOLDING LN'), - ('street', 'GOLETA AVE'), - ('street', 'GOLF COURSE ACCESS RD'), - ('street', 'GONZALEZ DR'), - ('street', 'GORDON ST'), - ('street', 'GORGAS AVE'), - ('street', 'GORHAM ST'), - ('street', 'GOUGH ST'), - ('street', 'GOULD ST'), - ('street', 'GRACE ST'), - ('street', 'GRAFTON AVE'), - ('street', 'GRAHAM ST'), - ('street', 'GRANADA AVE'), - ('street', 'GRAND VIEW AVE'), - ('street', 'GRAND VIEW TER'), - ('street', 'GRANT AVE'), - ('street', 'GRANVILLE WAY'), - ('street', 'GRATTAN ST'), - ('street', 'GRAYSTONE TER'), - ('street', 'GREAT HWY'), - ('street', 'GREELY CT'), - ('street', 'GREEN ST'), - ('street', 'GREENOUGH AVE'), - ('street', 'GREENVIEW CT'), - ('street', 'GREENWICH CT'), - ('street', 'GREENWICH ST'), - ('street', 'GREENWOOD AVE'), - ('street', 'GRENARD TER'), - ('street', 'GRIFFITH ST'), - ('street', 'GRIJALVA DR'), - ('street', 'GROTE PL'), - ('street', 'GROVE ST'), - ('street', 'GUERRERO ST'), - ('street', 'GUTTENBERG ST'), - ('street', 'GUY PL'), - ('street', 'H ST'), - ('street', 'HABITAT TER'), - ('street', 'HAGIWARA TEA GARDEN DR'), - ('street', 'HAHN ST'), - ('street', 'HAIGHT ST'), - ('street', 'HALE ST'), - ('street', 'HALIBUT CT'), - ('street', 'HALLAM ST'), - ('street', 'HALLECK ST'), - ('street', 'HALYBURTON CT'), - ('street', 'HAMERTON AVE'), - ('street', 'HAMILTON ST'), - ('street', 'HAMLIN ST'), - ('street', 'HAMPSHIRE ST'), - ('street', 'HANCOCK ST'), - ('street', 'HANGAH ST'), - ('street', 'HANOVER ST'), - ('street', 'HARBOR RD'), - ('street', 'HARDIE AVE'), - ('street', 'HARDIE PL'), - ('street', 'HARDING RD'), - ('street', 'HARE ST'), - ('street', 'HARKNESS AVE'), - ('street', 'HARLAN PL'), - ('street', 'HARLEM ALY'), - ('street', 'HARLOW ST'), - ('street', 'HARNEY WAY'), - ('street', 'HAROLD AVE'), - ('street', 'HARPER ST'), - ('street', 'HARRIET LN'), - ('street', 'HARRIET ST'), - ('street', 'HARRINGTON ST'), - ('street', 'HARRIS PL'), - ('street', 'HARRISON BLVD'), - ('street', 'HARRISON ST'), - ('street', 'HARRY ST'), - ('street', 'HARTFORD ST'), - ('street', 'HARVARD ST'), - ('street', 'HASTINGS TER'), - ('street', 'HATTIE ST'), - ('street', 'HAVELOCK ST'), - ('street', 'HAVENS ST'), - ('street', 'HAVENSIDE DR'), - ('street', 'HAWES ST'), - ('street', 'HAWKINS LN'), - ('street', 'HAWTHORNE ST'), - ('street', 'HAYES ST'), - ('street', 'HAYS ST'), - ('street', 'HAYWARD ST'), - ('street', 'HAZELWOOD AVE'), - ('street', 'HEAD ST'), - ('street', 'HEALY AVE'), - ('street', 'HEARST AVE'), - ('street', 'HEATHER AVE'), - ('street', 'HELEN ST'), - ('street', 'HELENA ST'), - ('street', 'HEMLOCK ST'), - ('street', 'HEMWAY TER'), - ('street', 'HENRY ST'), - ('street', 'HENRY ADAMS ST'), - ('street', 'HERITAGE LN'), - ('street', 'HERMANN ST'), - ('street', 'HERNANDEZ AVE'), - ('street', 'HERON ST'), - ('street', 'HESTER AVE'), - ('street', 'HEYMAN AVE'), - ('street', 'HICKORY ST'), - ('street', 'HICKS RD'), - ('street', 'HIDALGO TER'), - ('street', 'HIGH ST'), - ('street', 'HIGHLAND AVE'), - ('street', 'HIGUERA AVE'), - ('street', 'HILIRITAS AVE'), - ('street', 'HILL DR'), - ('street', 'HILL ST'), - ('street', 'HILL POINT AVE'), - ('street', 'HILLCREST CT'), - ('street', 'HILLCREST RD'), - ('street', 'HILLSIDE LN'), - ('street', 'HILLVIEW CT'), - ('street', 'HILLWAY AVE'), - ('street', 'HILTON ST'), - ('street', 'HIMMELMANN PL'), - ('street', 'HITCHCOCK LN'), - ('street', 'HITCHCOCK ST'), - ('street', 'HOBART ALY'), - ('street', 'HODGES ALY'), - ('street', 'HOFF ST'), - ('street', 'HOFFMAN AVE'), - ('street', 'HOFFMAN ST'), - ('street', 'HOLLADAY AVE'), - ('street', 'HOLLAND CT'), - ('street', 'HOLLIS ST'), - ('street', 'HOLLISTER AVE'), - ('street', 'HOLLOWAY AVE'), - ('street', 'HOLLY PARK CIR'), - ('street', 'HOLLYWOOD CT'), - ('street', 'HOLYOKE ST'), - ('street', 'HOMER ST'), - ('street', 'HOMESTEAD ST'), - ('street', 'HOMEWOOD CT'), - ('street', 'HOOKER ALY'), - ('street', 'HOOPER ST'), - ('street', 'HOPKINS AVE'), - ('street', 'HORACE ST'), - ('street', 'HORNE AVE'), - ('street', 'HOTALING PL'), - ('street', 'HOUSTON ST'), - ('street', 'HOWARD CT'), - ('street', 'HOWARD RD'), - ('street', 'HOWARD ST'), - ('street', 'HOWTH ST'), - ('street', 'HUBBELL ST'), - ('street', 'HUDSON AVE'), - ('street', 'HUGO ST'), - ('street', 'HULBERT ALY'), - ('street', 'HUMBOLDT ST'), - ('street', 'HUNT ST'), - ('street', 'HUNTER RD'), - ('street', 'HUNTER ST'), - ('street', 'HUNTERS POINT BLVD'), - ('street', 'HUNTERS POINT EXPY'), - ('street', 'HUNTINGTON DR'), - ('street', 'HURON AVE'), - ('street', 'HUSSEY ST'), - ('street', 'HUTCHINS CT'), - ('street', 'ICEHOUSE ALY'), - ('street', 'IDORA AVE'), - ('street', 'IGNACIO AVE'), - ('street', 'ILLINOIS ST'), - ('street', 'ILS LN'), - ('street', 'IMPERIAL ALY'), - ('street', 'INA CT'), - ('street', 'INCA LN'), - ('street', 'INCINERATOR RD'), - ('street', 'INDIA ST'), - ('street', 'INDIANA ST'), - ('street', 'INDUSTRIAL ST'), - ('street', 'INDUSTRIAL ST OFF RAMP'), - ('street', 'INDUSTRIAL ST ON RAMP'), - ('street', 'INFANTRY TER'), - ('street', 'INGALLS ST'), - ('street', 'INGERSON AVE'), - ('street', 'INGLESIDE PATH'), - ('street', 'INNES AVE'), - ('street', 'INNES CT'), - ('street', 'INVERNESS DR'), - ('street', 'IOWA ST'), - ('street', 'IRIS AVE'), - ('street', 'IRON ALY'), - ('street', 'IRONWOOD WAY'), - ('street', 'IRVING ST'), - ('street', 'IRWIN ST'), - ('street', 'ISADORA DUNCAN LN'), - ('street', 'ISIS ST'), - ('street', 'ISLAIS ST'), - ('street', 'ISOLA WAY'), - ('street', 'ISSLEIB AVE'), - ('street', 'ITALY AVE'), - ('street', 'IVY ST'), - ('street', 'J ST'), - ('street', 'JACK BALESTRERI WAY'), - ('street', 'JACK KEROUAC ALY'), - ('street', 'JACK LONDON ALY'), - ('street', 'JACK MICHELINE ALY'), - ('street', 'JACKSON ST'), - ('street', 'JADE PL'), - ('street', 'JAKEY CT'), - ('street', 'JAMES PL'), - ('street', 'JAMESTOWN AVE'), - ('street', 'JANSEN ST'), - ('street', 'JARBOE AVE'), - ('street', 'JASON CT'), - ('street', 'JASPER PL'), - ('street', 'JAUSS ST'), - ('street', 'JAVA ST'), - ('street', 'JEAN WAY'), - ('street', 'JEFFERSON ST'), - ('street', 'JENNIFER PL'), - ('street', 'JENNINGS CT'), - ('street', 'JENNINGS ST'), - ('street', 'JEROME ALY'), - ('street', 'JERROLD AVE'), - ('street', 'JERSEY ST'), - ('street', 'JESSIE ST'), - ('street', 'JESSIE EAST ST'), - ('street', 'JESSIE WEST ST'), - ('street', 'JEWETT ST'), - ('street', 'JOHN ST'), - ('street', 'JOHN F KENNEDY DR'), - ('street', 'JOHN F SHELLEY DR'), - ('street', 'JOHN MAHER ST'), - ('street', 'JOHN MUIR DR'), - ('street', 'JOHNSTONE DR'), - ('street', 'JOICE ST'), - ('street', 'JONES ST'), - ('street', 'JOOST AVE'), - ('street', 'JORDAN AVE'), - ('street', 'JOSE SARRIA CT'), - ('street', 'JOSEPHA AVE'), - ('street', 'JOSIAH AVE'), - ('street', 'JOY ST'), - ('street', 'JUAN BAUTISTA CIR'), - ('street', 'JUDAH ST'), - ('street', 'JUDSON AVE'), - ('street', 'JULES AVE'), - ('street', 'JULIA ST'), - ('street', 'JULIAN AVE'), - ('street', 'JULIUS ST'), - ('street', 'JUNIOR TER'), - ('street', 'JUNIPER ST'), - ('street', 'JUNIPERO SERRA BLVD'), - ('street', 'JUNIPERO SERRA BLVD OFF RAMP'), - ('street', 'JUNIPERO SERRA BLVD ON RAMP'), - ('street', 'JURI ST'), - ('street', 'JUSTIN DR'), - ('street', 'KALMANOVITZ ST'), - ('street', 'KAMILLE CT'), - ('street', 'KANSAS ST'), - ('street', 'KAPLAN LN'), - ('street', 'KAREN CT'), - ('street', 'KATE ST'), - ('street', 'KEARNY LN'), - ('street', 'KEARNY ST'), - ('street', 'KEITH ST'), - ('street', 'KELLOCH AVE'), - ('street', 'KEMPTON AVE'), - ('street', 'KENDALL DR'), - ('street', 'KENNEDY PL'), - ('street', 'KENNETH REXROTH PL'), - ('street', 'KENNY ALY'), - ('street', 'KENSINGTON WAY'), - ('street', 'KENT ST'), - ('street', 'KENWOOD WAY'), - ('street', 'KEPPLER CT'), - ('street', 'KERN ST'), - ('street', 'KEY AVE'), - ('street', 'KEYES ALY'), - ('street', 'KEYES AVE'), - ('street', 'KEYSTONE WAY'), - ('street', 'KEZAR DR'), - ('street', 'KIMBALL PL'), - ('street', 'KING ST'), - ('street', 'KINGSTON ST'), - ('street', 'KINZEY ST'), - ('street', 'KIRKHAM ST'), - ('street', 'KIRKWOOD AVE'), - ('street', 'KISKA RD'), - ('street', 'KISSLING ST'), - ('street', 'KITTREDGE TER'), - ('street', 'KNOCKASH HL'), - ('street', 'KNOLLVIEW WAY'), - ('street', 'KNOTT CT'), - ('street', 'KOBBE AVE'), - ('street', 'KOHLER PL'), - ('street', 'KORET WAY'), - ('street', 'KRAMER PL'), - ('street', 'KRAUSGRILL PL'), - ('street', 'KRONQUIST CT'), - ('street', 'LA AVANZADA'), - ('street', 'LA BICA WAY'), - ('street', 'LA FERRERA TER'), - ('street', 'LA GRANDE AVE'), - ('street', 'LA PLAYA'), - ('street', 'LA SALLE AVE'), - ('street', 'LAFAYETTE ST'), - ('street', 'LAGUNA ST'), - ('street', 'LAGUNA HONDA BLVD'), - ('street', 'LAGUNITAS DR'), - ('street', 'LAIDLEY ST'), - ('street', 'LAKE ST'), - ('street', 'LAKE FOREST CT'), - ('street', 'LAKE MERCED BLVD'), - ('street', 'LAKE MERCED HILL'), - ('street', 'LAKESHORE DR'), - ('street', 'LAKESHORE PLZ'), - ('street', 'LAKEVIEW AVE'), - ('street', 'LAKEWOOD AVE'), - ('street', 'LAMARTINE ST'), - ('street', 'LAMSON LN'), - ('street', 'LANCASTER LN'), - ('street', 'LANDERS ST'), - ('street', 'LANE ST'), - ('street', 'LANGDON CT'), - ('street', 'LANGTON ST'), - ('street', 'LANSDALE AVE'), - ('street', 'LANSING ST'), - ('street', 'LAPHAM WAY'), - ('street', 'LAPIDGE ST'), - ('street', 'LAPU-LAPU ST'), - ('street', 'LARCH ST'), - ('street', 'LARKIN ST'), - ('street', 'LAS VILLAS CT'), - ('street', 'LASKIE ST'), - ('street', 'LASSEN ALY'), - ('street', 'LATHROP AVE'), - ('street', 'LATONA ST'), - ('street', 'LAURA ST'), - ('street', 'LAUREL ST'), - ('street', 'LAUREN CT'), - ('street', 'LAUSSAT ST'), - ('street', 'LAWRENCE AVE'), - ('street', 'LAWTON ST'), - ('street', 'LE CONTE AVE'), - ('street', 'LE CONTE CIR'), - ('street', 'LEAVENWORTH ST'), - ('street', 'LEDYARD ST'), - ('street', 'LEE AVE'), - ('street', 'LEESE ST'), - ('street', 'LEGION CT'), - ('street', 'LEGION OF HONOR DR'), - ('street', 'LEIDESDORFF ST'), - ('street', 'LELAND AVE'), - ('street', 'LENDRUM CT'), - ('street', 'LENOX WAY'), - ('street', 'LEO ST'), - ('street', 'LEONA TER'), - ('street', 'LEROY PL'), - ('street', 'LESSING ST'), - ('street', 'LESTER CT'), - ('street', 'LETTERMAN DR'), - ('street', 'LETTERMAN HOSPITAL ACCESS'), - ('street', 'LETTUCE LN'), - ('street', 'LEVANT ST'), - ('street', 'LEXINGTON ST'), - ('street', 'LIBERTY ST'), - ('street', 'LICK PL'), - ('street', 'LIEBIG ST'), - ('street', 'LIGGETT AVE'), - ('street', 'LILAC ST'), - ('street', 'LILLIAN ST'), - ('street', 'LILY ST'), - ('street', 'LINARES AVE'), - ('street', 'LINCOLN BLVD'), - ('street', 'LINCOLN CT'), - ('street', 'LINCOLN WAY'), - ('street', 'LINDA ST'), - ('street', 'LINDA VISTA STPS'), - ('street', 'LINDEN ST'), - ('street', 'LINDSAY CIR'), - ('street', 'LIPPARD AVE'), - ('street', 'LISBON ST'), - ('street', 'LITTLEFIELD TER'), - ('street', 'LIVINGSTON ST'), - ('street', 'LLOYD ST'), - ('street', 'LOBOS ST'), - ('street', 'LOCKSLEY AVE'), - ('street', 'LOCKWOOD ST'), - ('street', 'LOCUST ST'), - ('street', 'LOEHR ST'), - ('street', 'LOIS LN'), - ('street', 'LOMA VISTA TER'), - ('street', 'LOMBARD ST'), - ('street', 'LOMITA AVE'), - ('street', 'LONDON ST'), - ('street', 'LONE MOUNTAIN TER'), - ('street', 'LONG AVE'), - ('street', 'LONG BRIDGE ST'), - ('street', 'LONGVIEW CT'), - ('street', 'LOOMIS ST'), - ('street', 'LOPEZ AVE'), - ('street', 'LORAINE CT'), - ('street', 'LORI LN'), - ('street', 'LOS PALMOS DR'), - ('street', 'LOTTIE BENNETT LN'), - ('street', 'LOUISBURG ST'), - ('street', 'LOUISIANA ST'), - ('street', 'LOWELL ST'), - ('street', 'LOWER TER'), - ('street', 'LOWER FORT MASON ST'), - ('street', 'LOYOLA TER'), - ('street', 'LUCERNE ST'), - ('street', 'LUCKY ST'), - ('street', 'LUCY ST'), - ('street', 'LUDLOW ALY'), - ('street', 'LULU ALY'), - ('street', 'LUNADO CT'), - ('street', 'LUNADO WAY'), - ('street', 'LUNDEEN ST'), - ('street', 'LUNDYS LN'), - ('street', 'LUPINE AVE'), - ('street', 'LURLINE ST'), - ('street', 'LURMONT TER'), - ('street', 'LUSK ST'), - ('street', 'LYDIA AVE'), - ('street', 'LYELL ST'), - ('street', 'LYNCH ST'), - ('street', 'LYNDHURST DR'), - ('street', 'LYON ST'), - ('street', 'LYSETTE ST'), - ('street', 'MABEL ALY'), - ('street', 'MABINI ST'), - ('street', 'MABREY CT'), - ('street', 'MACALLA CT'), - ('street', 'MACALLA RD'), - ('street', 'MACARTHUR AVE'), - ('street', 'MACEDONIA ST'), - ('street', 'MACONDRAY LN'), - ('street', 'MADDUX AVE'), - ('street', 'MADERA ST'), - ('street', 'MADISON ST'), - ('street', 'MADRID ST'), - ('street', 'MADRONE AVE'), - ('street', 'MAGELLAN AVE'), - ('street', 'MAGNOLIA ST'), - ('street', 'MAHAN ST'), - ('street', 'MAIDEN LN'), - ('street', 'MAIN DR'), - ('street', 'MAIN ST'), - ('street', 'MAJESTIC AVE'), - ('street', 'MALDEN ALY'), - ('street', 'MALLORCA WAY'), - ('street', 'MALTA DR'), - ('street', 'MALVINA PL'), - ('street', 'MANCHESTER ST'), - ('street', 'MANDALAY LN'), - ('street', 'MANGELS AVE'), - ('street', 'MANOR DR'), - ('street', 'MANSEAU ST'), - ('street', 'MANSELL ST'), - ('street', 'MANSFIELD ST'), - ('street', 'MANZANITA AVE'), - ('street', 'MAPLE ST'), - ('street', 'MARCELA AVE'), - ('street', 'MARCY PL'), - ('street', 'MARENGO ST'), - ('street', 'MARGARET AVE'), - ('street', 'MARGRAVE PL'), - ('street', 'MARIETTA DR'), - ('street', 'MARIN ST'), - ('street', 'MARINA BLVD'), - ('street', 'MARINA GREEN DR'), - ('street', 'MARINE DR'), - ('street', 'MARINER DR'), - ('street', 'MARION PL'), - ('street', 'MARIPOSA ST'), - ('street', 'MARIST CT'), - ('street', 'MARK LN'), - ('street', 'MARK TWAIN PL'), - ('street', 'MARKET ST'), - ('street', 'MARLIN CT'), - ('street', 'MARNE AVE'), - ('street', 'MARS ST'), - ('street', 'MARSHALL ST'), - ('street', 'MARSILY ST'), - ('street', 'MARSTON AVE'), - ('street', 'MARTHA AVE'), - ('street', 'MARTIN LUTHER KING JR DR'), - ('street', 'MARTINEZ ST'), - ('street', 'MARVEL CT'), - ('street', 'MARVIEW WAY'), - ('street', 'MARY ST'), - ('street', 'MARY TERESA ST'), - ('street', 'MARYLAND ST'), - ('street', 'MASON CT'), - ('street', 'MASON ST'), - ('street', 'MASONIC AVE'), - ('street', 'MASSACHUSETTS ST'), - ('street', 'MASSASOIT ST'), - ('street', 'MATEO ST'), - ('street', 'MATTHEW CT'), - ('street', 'MAULDIN ST'), - ('street', 'MAXWELL CT'), - ('street', 'MAYFAIR DR'), - ('street', 'MAYFLOWER ST'), - ('street', 'MAYNARD ST'), - ('street', 'MAYWOOD DR'), - ('street', 'MCALLISTER ST'), - ('street', 'MCCANN ST'), - ('street', 'MCCARTHY AVE'), - ('street', 'MCCOPPIN ST'), - ('street', 'MCCORMICK ST'), - ('street', 'MCDONALD ST'), - ('street', 'MCDOWELL AVE'), - ('street', 'MCKINLEY AVE'), - ('street', 'MCKINNON AVE'), - ('street', 'MCLAREN AVE'), - ('street', 'MCLAREN LODGE ACCESS RD'), - ('street', 'MCLEA CT'), - ('street', 'MCNAIR CT'), - ('street', 'MCRAE LN'), - ('street', 'MCRAE ST'), - ('street', 'MEACHAM PL'), - ('street', 'MEADE AVE'), - ('street', 'MEADOWBROOK DR'), - ('street', 'MEDA AVE'), - ('street', 'MEDAU PL'), - ('street', 'MEDICAL CENTER WAY'), - ('street', 'MEGAN DR'), - ('street', 'MELBA AVE'), - ('street', 'MELRA CT'), - ('street', 'MELROSE AVE'), - ('street', 'MENDELL ST'), - ('street', 'MENDOSA AVE'), - ('street', 'MENOHER LN'), - ('street', 'MERCATO CT'), - ('street', 'MERCED AVE'), - ('street', 'MERCEDES WAY'), - ('street', 'MERCHANT RD'), - ('street', 'MERCHANT ST'), - ('street', 'MERCURY ST'), - ('street', 'MERLIN ST'), - ('street', 'MERRIAM LN'), - ('street', 'MERRIE WAY'), - ('street', 'MERRILL ST'), - ('street', 'MERRIMAC ST'), - ('street', 'MERRITT ST'), - ('street', 'MERSEY ST'), - ('street', 'MESA AVE'), - ('street', 'MESA ST'), - ('street', 'METSON RD'), - ('street', 'MICHIGAN ST'), - ('street', 'MIDCREST WAY'), - ('street', 'MIDDLE POINT RD'), - ('street', 'MIDDLE WEST DR'), - ('street', 'MIDDLEFIELD DR'), - ('street', 'MIDWAY ST'), - ('street', 'MIGUEL ST'), - ('street', 'MILAN TER'), - ('street', 'MILES CT'), - ('street', 'MILES ST'), - ('street', 'MILEY ST'), - ('street', 'MILL ST'), - ('street', 'MILLER PL'), - ('street', 'MILLER RD'), - ('street', 'MILLWRIGHT COTTAGE ACCESS RD'), - ('street', 'MILTON ST'), - ('street', 'MILTON I ROSS ST'), - ('street', 'MINERVA ST'), - ('street', 'MINNA ST'), - ('street', 'MINNESOTA ST'), - ('street', 'MINT PLZ'), - ('street', 'MINT ST'), - ('street', 'MIRABEL AVE'), - ('street', 'MIRALOMA DR'), - ('street', 'MIRAMAR AVE'), - ('street', 'MIRANDO WAY'), - ('street', 'MISSION ST'), - ('street', 'MISSION BAY CIR'), - ('street', 'MISSION BAY DR'), - ('street', 'MISSION ROCK ST'), - ('street', 'MISSISSIPPI ST'), - ('street', 'MISSOURI ST'), - ('street', 'MISTRAL ST'), - ('street', 'MIZPAH ST'), - ('street', 'MODOC AVE'), - ('street', 'MOFFITT ST'), - ('street', 'MOJAVE ST'), - ('street', 'MOLIMO DR'), - ('street', 'MONCADA WAY'), - ('street', 'MONETA CT'), - ('street', 'MONETA WAY'), - ('street', 'MONO ST'), - ('street', 'MONTAGUE PL'), - ('street', 'MONTALVO AVE'), - ('street', 'MONTANA ST'), - ('street', 'MONTCALM ST'), - ('street', 'PARK ST'), - ('street', 'MONTCLAIR TER'), - ('street', 'MONTE VISTA DR'), - ('street', 'MONTECITO AVE'), - ('street', 'MONTEREY BLVD'), - ('street', 'MONTEZUMA ST'), - ('street', 'MONTGOMERY ST'), - ('street', 'MONTICELLO ST'), - ('street', 'MONUMENT WAY'), - ('street', 'MOORE LN'), - ('street', 'MOORE PL'), - ('street', 'MORAGA AVE'), - ('street', 'MORAGA ST'), - ('street', 'MORELAND ST'), - ('street', 'MORGAN ALY'), - ('street', 'MORNINGSIDE DR'), - ('street', 'MORRELL PL'), - ('street', 'MORRELL ST'), - ('street', 'MORRIS ST'), - ('street', 'MORSE ST'), - ('street', 'MORTON ST'), - ('street', 'MOSCOW ST'), - ('street', 'MOSS ST'), - ('street', 'MOULTON ST'), - ('street', 'MOULTRIE ST'), - ('street', 'MOUNT LN'), - ('street', 'MOUNT VERNON AVE'), - ('street', 'MOUNTAIN SPRING AVE'), - ('street', 'MOUNTVIEW CT'), - ('street', 'MUIR CT'), - ('street', 'MUIR LOOP'), - ('street', 'MULFORD ALY'), - ('street', 'MULLEN AVE'), - ('street', 'MUNICH ST'), - ('street', 'MURRAY LN'), - ('street', 'MURRAY ST'), - ('street', 'MUSEUM WAY'), - ('street', 'MUSIC CONCOURSE DR'), - ('street', 'MUSIC CONCOURSE ACCESS RD'), - ('street', 'MYRA WAY'), - ('street', 'MYRTLE ST'), - ('street', 'NADELL CT'), - ('street', 'NAGLEE AVE'), - ('street', 'NAHUA AVE'), - ('street', 'NANCY PELOSI DR'), - ('street', 'NANTUCKET AVE'), - ('street', 'NAPIER LN'), - ('street', 'NAPLES ST'), - ('street', 'NAPOLEON ST'), - ('street', 'NATICK ST'), - ('street', 'NATOMA ST'), - ('street', 'NAUMAN RD'), - ('street', 'NAUTILUS DR'), - ('street', 'NAVAJO AVE'), - ('street', 'NAVY RD'), - ('street', 'NAYLOR ST'), - ('street', 'NEBRASKA ST'), - ('street', 'NELLIE ST'), - ('street', 'NELSON AVE'), - ('street', 'NELSON RISING LN'), - ('street', 'NEPTUNE ST'), - ('street', 'NEVADA ST'), - ('street', 'NEW MONTGOMERY ST'), - ('street', 'NEWBURG ST'), - ('street', 'NEWCOMB AVE'), - ('street', 'NEWELL ST'), - ('street', 'NEWHALL ST'), - ('street', 'NEWMAN ST'), - ('street', 'NEWTON ST'), - ('street', 'NEY ST'), - ('street', 'NIAGARA AVE'), - ('street', 'NIANTIC AVE'), - ('street', 'NIBBI CT'), - ('street', 'NICHOLS WAY'), - ('street', 'NIDO AVE'), - ('street', 'NIMITZ AVE'), - ('street', 'NIMITZ DR'), - ('street', 'NIMITZ LN'), - ('street', 'NOB HILL PL'), - ('street', 'NOBLES ALY'), - ('street', 'NOE ST'), - ('street', 'NORDHOFF ST'), - ('street', 'NORFOLK ST'), - ('street', 'NORIEGA ST'), - ('street', 'NORMANDIE TER'), - ('street', 'NORTH DR'), - ('street', 'NORTH 15TH AVE'), - ('street', 'NORTH GATE RD'), - ('street', 'NORTH HUGHES LN'), - ('street', 'NORTH POINT ST'), - ('street', 'NORTH VAN HORN LN'), - ('street', 'NORTH VIEW CT'), - ('street', 'NORTHGATE DR'), - ('street', 'NORTHPOINT DR'), - ('street', 'NORTHRIDGE RD'), - ('street', 'NORTHWOOD DR'), - ('street', 'NORTON ST'), - ('street', 'NORWICH ST'), - ('street', 'NOTTINGHAM PL'), - ('street', 'NUEVA AVE'), - ('street', 'OAK ST'), - ('street', 'OAK ACCESS RD'), - ('street', 'OAK GROVE ST'), - ('street', 'OAK PARK DR'), - ('street', 'OAKDALE AVE'), - ('street', 'OAKHURST LN'), - ('street', 'OAKWOOD ST'), - ('street', 'OCEAN AVE'), - ('street', 'OCEANVIEW TER'), - ('street', 'OCTAVIA ST'), - ('street', 'OFARRELL ST'), - ('street', 'OGDEN AVE'), - ('street', 'OHLONE WAY'), - ('street', 'OLD CHINATOWN LN'), - ('street', 'OLD MASON ST'), - ('street', 'OLIVE ST'), - ('street', 'OLIVER ST'), - ('street', 'OLMSTEAD ST'), - ('street', 'OLNEY AVE'), - ('street', 'OLORAN AVE'), - ('street', 'OLYMPIA WAY'), - ('street', 'OLYMPIC COUNTRY CLUB RD'), - ('street', 'OMAR WAY'), - ('street', 'ONEIDA AVE'), - ('street', 'ONIQUE LN'), - ('street', 'ONONDAGA AVE'), - ('street', 'OPAL PL'), - ('street', 'OPALO LN'), - ('street', 'OPHIR ALY'), - ('street', 'ORA WAY'), - ('street', 'ORANGE ALY'), - ('street', 'ORBEN PL'), - ('street', 'ORD CT'), - ('street', 'ORD ST'), - ('street', 'ORDWAY ST'), - ('street', 'OREILLY AVE'), - ('street', 'ORIOLE WAY'), - ('street', 'ORIZABA AVE'), - ('street', 'ORSI CIR'), - ('street', 'ORTEGA ST'), - ('street', 'ORTEGA WAY'), - ('street', 'OSAGE ALY'), - ('street', 'OSCAR ALY'), - ('street', 'OSCEOLA LN'), - ('street', 'OSGOOD PL'), - ('street', 'OSHAUGHNESSY BLVD'), - ('street', 'OTEGA AVE'), - ('street', 'OTIS ST'), - ('street', 'OTSEGO AVE'), - ('street', 'OTTAWA AVE'), - ('street', 'OTTER COVE TER'), - ('street', 'OVERLOOK DR'), - ('street', 'OWEN ST'), - ('street', 'OWENS ST'), - ('street', 'OXFORD ST'), - ('street', 'OZBOURN CT'), - ('street', 'PACHECO ST'), - ('street', 'PACIFIC AVE'), - ('street', 'PAGE ST'), - ('street', 'PAGODA PL'), - ('street', 'PALM AVE'), - ('street', 'PALMETTO AVE'), - ('street', 'PALO ALTO AVE'), - ('street', 'PALOMA AVE'), - ('street', 'PALOS PL'), - ('street', 'PALOU AVE'), - ('street', 'PANAMA ST'), - ('street', 'PANORAMA DR'), - ('street', 'PARADISE AVE'), - ('street', 'PARAISO PL'), - ('street', 'PARAMOUNT TER'), - ('street', 'PARIS ST'), - ('street', 'PARK BLVD'), - ('street', 'PARK HILL AVE'), - ('street', 'PARK PRESIDIO BLVD'), - ('street', 'PARK PRESIDIO BYPASS DR'), - ('street', 'PARKER AVE'), - ('street', 'PARKHURST ALY'), - ('street', 'PARKRIDGE DR'), - ('street', 'PARNASSUS AVE'), - ('street', 'PARQUE DR'), - ('street', 'PARSONS ST'), - ('street', 'PASADENA ST'), - ('street', 'PATTEN RD'), - ('street', 'PATTERSON ST'), - ('street', 'PATTON CT'), - ('street', 'PATTON ST'), - ('street', 'PAUL AVE'), - ('street', 'PAULDING ST'), - ('street', 'PAYSON ST'), - ('street', 'PEABODY ST'), - ('street', 'PEARL ST'), - ('street', 'PEEK LN'), - ('street', 'PELICAN COVE TER'), - ('street', 'PELTON PL'), - ('street', 'PEMBERTON PL'), - ('street', 'PENA ST'), - ('street', 'PENINSULA AVE'), - ('street', 'PENNINGTON ST'), - ('street', 'PENNSYLVANIA AVE'), - ('street', 'PENNY LN'), - ('street', 'PERALTA AVE'), - ('street', 'PERASTO AVE'), - ('street', 'PEREGO TER'), - ('street', 'PERIMETER PATH'), - ('street', 'PERINE PL'), - ('street', 'PERRY ST'), - ('street', 'PERSHING DR'), - ('street', 'PERSIA AVE'), - ('street', 'PERU AVE'), - ('street', 'PETER YORKE WAY'), - ('street', 'PETERS AVE'), - ('street', 'PETRARCH PL'), - ('street', 'PFEIFFER ST'), - ('street', 'PHELPS ST'), - ('street', 'PHOENIX TER'), - ('street', 'PICO AVE'), - ('street', 'PIEDMONT ST'), - ('street', 'PIERCE ST'), - ('street', 'PIERPOINT LN'), - ('street', 'PILGRIM AVE'), - ('street', 'PINAR LN'), - ('street', 'PINE ST'), - ('street', 'PINEHURST WAY'), - ('street', 'PINK ALY'), - ('street', 'PINO ALY'), - ('street', 'PINTO AVE'), - ('street', 'PIOCHE ST'), - ('street', 'PIPER LOOP'), - ('street', 'PIXLEY ST'), - ('street', 'PIZARRO WAY'), - ('street', 'PLAZA ST'), - ('street', 'PLEASANT ST'), - ('street', 'PLUM ST'), - ('street', 'PLYMOUTH AVE'), - ('street', 'POINT LOBOS AVE'), - ('street', 'POLARIS WAY'), - ('street', 'POLK ST'), - ('street', 'POLLARD PL'), - ('street', 'POLLOCK ST'), - ('street', 'POMONA ST'), - ('street', 'POND ST'), - ('street', 'PONTIAC ST'), - ('street', 'POPE CT'), - ('street', 'POPE RD'), - ('street', 'POPE ST'), - ('street', 'POPLAR ST'), - ('street', 'POPPY LN'), - ('street', 'PORTAL DR'), - ('street', 'PORTAL PATH'), - ('street', 'PORTER ST'), - ('street', 'PORTOLA DR'), - ('street', 'PORTOLA ST'), - ('street', 'POST ST'), - ('street', 'POTOMAC ST'), - ('street', 'POTRERO AVE'), - ('street', 'POWELL ST'), - ('street', 'POWERS AVE'), - ('street', 'POWHATTAN AVE'), - ('street', 'PRADO ST'), - ('street', 'PRAGUE ST'), - ('street', 'PRATT PL'), - ('street', 'PRECITA AVE'), - ('street', 'PRENTISS ST'), - ('street', 'PRESCOTT CT'), - ('street', 'PRESIDIO AVE'), - ('street', 'PRESIDIO BLVD'), - ('street', 'PRESIDIO TER'), - ('street', 'PRETOR WAY'), - ('street', 'PRIEST ST'), - ('street', 'PRINCETON ST'), - ('street', 'PROGRESS ST'), - ('street', 'PROSPECT AVE'), - ('street', 'PROSPER ST'), - ('street', 'PUBLIC PARK'), - ('street', 'PUEBLO ST'), - ('street', 'PULASKI AVE'), - ('street', 'PUTNAM ST'), - ('street', 'QUANE ST'), - ('street', 'QUARRY RD'), - ('street', 'QUARTZ WAY'), - ('street', 'QUEBEC AVE'), - ('street', 'QUESADA AVE'), - ('street', 'QUICKSTEP LN'), - ('street', 'QUINCY ST'), - ('street', 'QUINT ST'), - ('street', 'QUINTARA ST'), - ('street', 'R ST'), - ('street', 'RACCOON DR'), - ('street', 'RACINE LN'), - ('street', 'RADIO TER'), - ('street', 'RAE AVE'), - ('street', 'RALEIGH ST'), - ('street', 'RALSTON AVE'), - ('street', 'RALSTON ST'), - ('street', 'RAMONA AVE'), - ('street', 'RAMSEL CT'), - ('street', 'RAMSELL ST'), - ('street', 'RANDALL ST'), - ('street', 'RANDOLPH ST'), - ('street', 'RANKIN ST'), - ('street', 'RAUSCH ST'), - ('street', 'RAVENWOOD DR'), - ('street', 'RAWLES ST'), - ('street', 'RAYBURN ST'), - ('street', 'RAYCLIFF TER'), - ('street', 'RAYMOND AVE'), - ('street', 'REARDON RD'), - ('street', 'REBECCA LN'), - ('street', 'RECYCLE RD'), - ('street', 'RECYCLING CENTER ACCESS RD'), - ('street', 'RED LEAF CT'), - ('street', 'RED ROCK WAY'), - ('street', 'REDDY ST'), - ('street', 'REDFIELD ALY'), - ('street', 'REDONDO ST'), - ('street', 'REDWOOD ST'), - ('street', 'REED ST'), - ('street', 'REEVES CT'), - ('street', 'REGENT ST'), - ('street', 'RENO PL'), - ('street', 'REPOSA WAY'), - ('street', 'RESERVOIR ST'), - ('street', 'RESTANI STWY'), - ('street', 'RESTANI WAY'), - ('street', 'RETIRO WAY'), - ('street', 'REUEL CT'), - ('street', 'REVERE AVE'), - ('street', 'REX AVE'), - ('street', 'REY ST'), - ('street', 'RHINE ST'), - ('street', 'RHODE ISLAND ST'), - ('street', 'RICE ST'), - ('street', 'RICHARD HENRY DANA PL'), - ('street', 'RICHARDS CIR'), - ('street', 'RICHARDSON AVE'), - ('street', 'RICHLAND AVE'), - ('street', 'RICHTER AVE'), - ('street', 'RICKARD ST'), - ('street', 'RICO WAY'), - ('street', 'RIDGE CT'), - ('street', 'RIDGE LN'), - ('street', 'RIDGEWOOD AVE'), - ('street', 'RILEY AVE'), - ('street', 'RINCON ST'), - ('street', 'RINGOLD ST'), - ('street', 'RIO CT'), - ('street', 'RIO VERDE ST'), - ('street', 'RIPLEY ST'), - ('street', 'RITCH ST'), - ('street', 'RIVAS AVE'), - ('street', 'RIVERA ST'), - ('street', 'RIVERTON DR'), - ('street', 'RIVOLI ST'), - ('street', 'RIZAL ST'), - ('street', 'ROACH ST'), - ('street', 'ROANOKE ST'), - ('street', 'ROBBLEE AVE'), - ('street', 'ROBERT C LEVY TUNL'), - ('street', 'ROBERT KIRK LN'), - ('street', 'ROBINHOOD DR'), - ('street', 'ROBINSON DR'), - ('street', 'ROBINSON ST'), - ('street', 'ROCK ALY'), - ('street', 'ROCKAWAY AVE'), - ('street', 'ROCKDALE DR'), - ('street', 'ROCKLAND ST'), - ('street', 'ROCKRIDGE DR'), - ('street', 'ROCKWOOD CT'), - ('street', 'ROD RD'), - ('street', 'RODGERS ST'), - ('street', 'RODRIGUEZ ST'), - ('street', 'ROEMER WAY'), - ('street', 'ROLPH ST'), - ('street', 'ROMAIN ST'), - ('street', 'ROME ST'), - ('street', 'ROMOLO ST'), - ('street', 'RONDEL PL'), - ('street', 'ROOSEVELT WAY'), - ('street', 'ROSA PARKS LN'), - ('street', 'ROSCOE ST'), - ('street', 'ROSE ST'), - ('street', 'ROSELLA CT'), - ('street', 'ROSELYN TER'), - ('street', 'ROSEMARY CT'), - ('street', 'ROSEMONT PL'), - ('street', 'ROSENKRANZ ST'), - ('street', 'ROSEWOOD DR'), - ('street', 'ROSIE LEE LN'), - ('street', 'ROSS ALY'), - ('street', 'ROSSI AVE'), - ('street', 'ROSSMOOR DR'), - ('street', 'ROTTECK ST'), - ('street', 'ROUSSEAU ST'), - ('street', 'ROYAL LN'), - ('street', 'RUCKMAN AVE'), - ('street', 'RUDDEN AVE'), - ('street', 'RUGER ST'), - ('street', 'RUSS ST'), - ('street', 'RUSSELL ST'), - ('street', 'RUSSIA AVE'), - ('street', 'RUSSIAN HILL PL'), - ('street', 'RUTH ST'), - ('street', 'RUTLAND ST'), - ('street', 'RUTLEDGE ST'), - ('street', 'SABIN PL'), - ('street', 'SACRAMENTO ST'), - ('street', 'SADDLEBACK DR'), - ('street', 'SADOWA ST'), - ('street', 'SAFIRA LN'), - ('street', 'SAGAMORE ST'), - ('street', 'SAINT CHARLES AVE'), - ('street', 'SAINT CROIX DR'), - ('street', 'SAINT ELMO WAY'), - ('street', 'SAINT FRANCIS BLVD'), - ('street', 'SAINT FRANCIS PL'), - ('street', 'SAINT GEORGE ALY'), - ('street', 'SAINT GERMAIN AVE'), - ('street', 'SAINT JOSEPHS AVE'), - ('street', 'SAINT LOUIS ALY'), - ('street', 'SAINT MARYS AVE'), - ('street', 'SAL ST'), - ('street', 'SALA TER'), - ('street', 'SALINAS AVE'), - ('street', 'SALMON ST'), - ('street', 'SAMOSET ST'), - ('street', 'SAMPSON AVE'), - ('street', 'SAN ALESO AVE'), - ('street', 'SAN ANDREAS WAY'), - ('street', 'SAN ANSELMO AVE'), - ('street', 'SAN ANTONIO PL'), - ('street', 'SAN BENITO WAY'), - ('street', 'SAN BRUNO AVE'), - ('street', 'SAN BRUNO AV OFF RAMP'), - ('street', 'SAN BRUNO AV ON RAMP'), - ('street', 'SAN BUENAVENTURA WAY'), - ('street', 'SAN CARLOS ST'), - ('street', 'SAN DIEGO AVE'), - ('street', 'SAN FELIPE AVE'), - ('street', 'SAN FERNANDO WAY'), - ('street', 'SAN GABRIEL AVE'), - ('street', 'SAN JACINTO WAY'), - ('street', 'SAN JOSE AVE'), - ('street', 'SAN JOSE AV OFF RAMP'), - ('street', 'SAN JOSE AV ON RAMP'), - ('street', 'SAN JUAN AVE'), - ('street', 'SAN LEANDRO WAY'), - ('street', 'SAN LORENZO WAY'), - ('street', 'SAN LUIS AVE'), - ('street', 'SAN MARCOS AVE'), - ('street', 'SAN MIGUEL ST'), - ('street', 'SAN PABLO AVE'), - ('street', 'SAN RAFAEL WAY'), - ('street', 'SAN RAMON WAY'), - ('street', 'SANCHES ST'), - ('street', 'SANCHEZ ST'), - ('street', 'SANDPIPER COVE WAY'), - ('street', 'SANSOME ST'), - ('street', 'SANTA ANA AVE'), - ('street', 'SANTA BARBARA AVE'), - ('street', 'SANTA CLARA AVE'), - ('street', 'SANTA CRUZ AVE'), - ('street', 'SANTA FE AVE'), - ('street', 'SANTA MARINA ST'), - ('street', 'SANTA MONICA WAY'), - ('street', 'SANTA PAULA AVE'), - ('street', 'SANTA RITA AVE'), - ('street', 'SANTA ROSA AVE'), - ('street', 'SANTA YNEZ AVE'), - ('street', 'SANTA YSABEL AVE'), - ('street', 'SANTIAGO ST'), - ('street', 'SANTOS ST'), - ('street', 'SARGENT ST'), - ('street', 'SAROYAN PL'), - ('street', 'SATURN ST'), - ('street', 'SAUL ST'), - ('street', 'SAWYER ST'), - ('street', 'SCENIC WAY'), - ('street', 'SCHOFIELD CT'), - ('street', 'SCHOFIELD RD'), - ('street', 'SCHOOL ALY'), - ('street', 'SCHWERIN ST'), - ('street', 'SCIENCE CIR'), - ('street', 'SCOTIA AVE'), - ('street', 'SCOTLAND ST'), - ('street', 'SCOTT ALY'), - ('street', 'SCOTT ST'), - ('street', 'SEA VIEW TER'), - ('street', 'SEACLIFF AVE'), - ('street', 'SEAL COVE TER'), - ('street', 'SEAL ROCK DR'), - ('street', 'SEARS ST'), - ('street', 'SEAWELL LN'), - ('street', 'SECOND DR'), - ('street', 'SECURITY PACIFIC PL'), - ('street', 'SELBY ST'), - ('street', 'SELMA WAY'), - ('street', 'SEMINOLE AVE'), - ('street', 'SENECA AVE'), - ('street', 'SEQUOIA WAY'), - ('street', 'SERGEANT JOHN V YOUNG ST'), - ('street', 'SERRANO DR'), - ('street', 'SERVICE ST'), - ('street', 'SEVERN ST'), - ('street', 'SEVILLE ST'), - ('street', 'SEWARD ST'), - ('street', 'SEYMOUR ST'), - ('street', 'SFGH ACCESS'), - ('street', 'SHAFTER AVE'), - ('street', 'SHAFTER CT'), - ('street', 'SHAFTER RD'), - ('street', 'SHAKESPEARE ST'), - ('street', 'SHANNON ST'), - ('street', 'SHARON ST'), - ('street', 'SHARP PL'), - ('street', 'SHAW ALY'), - ('street', 'SHAWNEE AVE'), - ('street', 'SHELDON TER'), - ('street', 'SHEPHARD PL'), - ('street', 'SHERIDAN AVE'), - ('street', 'SHERIDAN ST'), - ('street', 'SHERMAN RD'), - ('street', 'SHERMAN ST'), - ('street', 'SHERWOOD CT'), - ('street', 'SHIELDS ST'), - ('street', 'SHIP ST'), - ('street', 'SHIPLEY ST'), - ('street', 'SHORE VIEW AVE'), - ('street', 'SHORT ST'), - ('street', 'SHOTWELL ST'), - ('street', 'SHOUP AVE'), - ('street', 'SHRADER ST'), - ('street', 'SIBERT LN'), - ('street', 'SIBERT LOOP'), - ('street', 'SIBLEY RD'), - ('street', 'SICKLES AVE'), - ('street', 'SIERRA ST'), - ('street', 'SIGNAL RD'), - ('street', 'SILLIMAN ST'), - ('street', 'SILVER AVE'), - ('street', 'SILVERVIEW DR'), - ('street', 'SIMONDS LOOP'), - ('street', 'SIXTH ST'), - ('street', 'SKYLINE BLVD'), - ('street', 'SKYVIEW WAY'), - ('street', 'SLOAN ALY'), - ('street', 'SLOAT BLVD'), - ('street', 'SMITH LN'), - ('street', 'SOLA AVE'), - ('street', 'SOMERSET ST'), - ('street', 'SONOMA ST'), - ('street', 'SONORA LN'), - ('street', 'SOTELO AVE'), - ('street', 'SOULE LN'), - ('street', 'SOUTH DR'), - ('street', 'SOUTH GATE RD'), - ('street', 'SOUTH HILL BLVD'), - ('street', 'SOUTH HUGHES LN'), - ('street', 'SOUTH PARK'), - ('street', 'SOUTH VAN HORN LN'), - ('street', 'SOUTH VAN NESS AVE'), - ('street', 'SOUTHARD PL'), - ('street', 'SOUTHERN HEIGHTS AVE'), - ('street', 'SOUTHWOOD DR'), - ('street', 'SPARROW ST'), - ('street', 'SPARTA ST'), - ('street', 'SPEAR AVE'), - ('street', 'SPEAR ST'), - ('street', 'SPENCER ST'), - ('street', 'SPOFFORD ST'), - ('street', 'SPRECKELS LAKE DR'), - ('street', 'SPRING ST'), - ('street', 'SPRINGFIELD DR'), - ('street', 'SPROULE LN'), - ('street', 'SPRUCE ST'), - ('street', 'STANDISH AVE'), - ('street', 'STANFORD ST'), - ('street', 'STANFORD HEIGHTS AVE'), - ('street', 'STANLEY ST'), - ('street', 'STANTON ST'), - ('street', 'STANYAN BLVD'), - ('street', 'STANYAN ST'), - ('street', 'STAPLES AVE'), - ('street', 'STARK ST'), - ('street', 'STARR KING WAY'), - ('street', 'STARVIEW WAY'), - ('street', 'STATE DR'), - ('street', 'STATES ST'), - ('street', 'STEINER ST'), - ('street', 'STERLING ST'), - ('street', 'STERN GROVE CT'), - ('street', 'STERNBERG RD'), - ('street', 'STEUART ST'), - ('street', 'STEUBEN ST'), - ('street', 'STEVELOE PL'), - ('street', 'STEVENSON ST'), - ('street', 'STILL ST'), - ('street', 'STILLINGS AVE'), - ('street', 'STILLMAN ST'), - ('street', 'STILWELL RD'), - ('street', 'STOCKTON ST'), - ('street', 'STOCKTON TUNL'), - ('street', 'STONE ST'), - ('street', 'STONECREST DR'), - ('street', 'STONEMAN ST'), - ('street', 'STONERIDGE LN'), - ('street', 'STONEYBROOK AVE'), - ('street', 'STONEYFORD AVE'), - ('street', 'STOREY AVE'), - ('street', 'STORRIE ST'), - ('street', 'STOW LAKE DR'), - ('street', 'STRATFORD DR'), - ('street', 'STRIPED BASS ST'), - ('street', 'STURGEON ST'), - ('street', 'SUMMIT ST'), - ('street', 'SUMMIT WAY'), - ('street', 'SUMNER AVE'), - ('street', 'SUMNER ST'), - ('street', 'SUNBEAM LN'), - ('street', 'SUNGLOW LN'), - ('street', 'SUNNYDALE AVE'), - ('street', 'SUNNYSIDE TER'), - ('street', 'SUNRISE WAY'), - ('street', 'SUNSET BLVD'), - ('street', 'SUNSET BLVD OFF RAMP'), - ('street', 'SUNSET BLVD ON RAMP'), - ('street', 'SUNVIEW DR'), - ('street', 'SURREY ST'), - ('street', 'SUSSEX ST'), - ('street', 'SUTRO HEIGHTS AVE'), - ('street', 'SUTTER ST'), - ('street', 'SWEENY ST'), - ('street', 'SWISS AVE'), - ('street', 'SYCAMORE ST'), - ('street', 'SYDNEY WAY'), - ('street', 'SYLVAN DR'), - ('street', 'TABER PL'), - ('street', 'TACOMA ST'), - ('street', 'TALBERT CT'), - ('street', 'TALBERT ST'), - ('street', 'TAMALPAIS TER'), - ('street', 'TAMPA LN'), - ('street', 'TANDANG SORA'), - ('street', 'TAPIA DR'), - ('street', 'TARA ST'), - ('street', 'TARAVAL ST'), - ('street', 'TAYLOR RD'), - ('street', 'TAYLOR ST'), - ('street', 'TEDDY AVE'), - ('street', 'TEHAMA ST'), - ('street', 'TELEGRAPH PL'), - ('street', 'TELEGRAPH HILL BLVD'), - ('street', 'TEMESCAL TER'), - ('street', 'TEMPLE ST'), - ('street', 'TENNESSEE ST'), - ('street', 'TENNY PL'), - ('street', 'TERESITA BLVD'), - ('street', 'TERRA VISTA AVE'), - ('street', 'TERRACE DR'), - ('street', 'TERRACE WALK'), - ('street', 'TERRY A FRANCOIS BLVD'), - ('street', 'TEVIS ST'), - ('street', 'TEXAS ST'), - ('street', 'THE EMBARCADERO'), - ('street', 'THERESA ST'), - ('street', 'THOMAS AVE'), - ('street', 'THOMAS CT'), - ('street', 'THOMAS MELLON CIR'), - ('street', 'THOMAS MELLON DR'), - ('street', 'THOMAS MORE WAY'), - ('street', 'THOR AVE'), - ('street', 'THORNBURG RD'), - ('street', 'THORNE WAY'), - ('street', 'THORNTON AVE'), - ('street', 'THORP LN'), - ('street', 'THRIFT ST'), - ('street', 'TIFFANY AVE'), - ('street', 'TILLMAN PL'), - ('street', 'TIMOTHY PFLUEGER PL'), - ('street', 'TINGLEY ST'), - ('street', 'TIOGA AVE'), - ('street', 'TOCOLOMA AVE'), - ('street', 'TODD ST'), - ('street', 'TOLAND ST'), - ('street', 'TOLEDO WAY'), - ('street', 'TOLL PLAZA TUNNEL'), - ('street', 'TOMASO CT'), - ('street', 'TOMPKINS AVE'), - ('street', 'TONQUIN ST'), - ('street', 'TOPAZ WAY'), - ('street', 'TOPEKA AVE'), - ('street', 'TORNEY AVE'), - ('street', 'TORRENS CT'), - ('street', 'TOUCHARD ST'), - ('street', 'TOWERSIDE AVE'), - ('street', 'TOWNSEND ST'), - ('street', 'TOYON LN'), - ('street', 'TRADER VIC ALY'), - ('street', 'TRAINOR ST'), - ('street', 'TRANSBAY HUMP'), - ('street', 'TRANSBAY LOOP'), - ('street', 'TRANSVERSE DR'), - ('street', 'TREASURE ISLAND RD'), - ('street', 'TREASURY PL'), - ('street', 'TREAT AVE'), - ('street', 'TREAT LN'), - ('street', 'TREAT WAY'), - ('street', 'TRENTON ST'), - ('street', 'TRINITY ST'), - ('street', 'TROY ALY'), - ('street', 'TRUBY ST'), - ('street', 'TRUETT ST'), - ('street', 'TRUMBULL ST'), - ('street', 'TUBBS ST'), - ('street', 'TUCKER AVE'), - ('street', 'TULANE ST'), - ('street', 'TULARE ST'), - ('street', 'TULIP ALY'), - ('street', 'TUNNEL AVE'), - ('street', 'TURK BLVD'), - ('street', 'TURK ST'), - ('street', 'TURK MURPHY LN'), - ('street', 'TURNER TER'), - ('street', 'TURQUOISE WAY'), - ('street', 'TUSCANY ALY'), - ('street', 'TWIN PEAKS BLVD'), - ('street', 'ULLOA ST'), - ('street', 'UNDERWOOD AVE'), - ('street', 'UNION ST'), - ('street', 'UNITED NATIONS PLZ'), - ('street', 'UNIVERSITY ST'), - ('street', 'UPLAND DR'), - ('street', 'UPPER TER'), - ('street', 'UPPER SERVICE RD'), - ('street', 'UPTON AVE'), - ('street', 'UPTON ST'), - ('street', 'URANUS TER'), - ('street', 'URBANO DR'), - ('street', 'UTAH ST'), - ('street', 'VALDEZ AVE'), - ('street', 'VALE AVE'), - ('street', 'VALENCIA ST'), - ('street', 'VALERTON CT'), - ('street', 'VALLEJO ST'), - ('street', 'VALLETTA CT'), - ('street', 'VALLEY ST'), - ('street', 'VALMAR TER'), - ('street', 'VALPARAISO ST'), - ('street', 'VAN BUREN ST'), - ('street', 'VAN DYKE AVE'), - ('street', 'VAN KEUREN AVE'), - ('street', 'VAN NESS AVE'), - ('street', 'VANDEWATER ST'), - ('street', 'VARA ST'), - ('street', 'VARELA AVE'), - ('street', 'VARENNES ST'), - ('street', 'VARNEY PL'), - ('street', 'VASQUEZ AVE'), - ('street', 'VASSAR PL'), - ('street', 'VEGA ST'), - ('street', 'VELASCO AVE'), - ('street', 'VENARD ALY'), - ('street', 'VENTURA AVE'), - ('street', 'VENUS ST'), - ('street', 'VER MEHR PL'), - ('street', 'VERDI PL'), - ('street', 'VERDUN WAY'), - ('street', 'VERMONT ST'), - ('street', 'VERNA ST'), - ('street', 'VERNON ST'), - ('street', 'VESTA ST'), - ('street', 'VETERANS DR'), - ('street', 'VIA BUFANO'), - ('street', 'VIA FERLINGHETTI'), - ('street', 'VICENTE ST'), - ('street', 'VICKSBURG ST'), - ('street', 'VICTORIA ST'), - ('street', 'VIDAL DR'), - ('street', 'VIENNA ST'), - ('street', 'VILLA TER'), - ('street', 'VINE TER'), - ('street', 'VINTON CT'), - ('street', 'VIRGIL ST'), - ('street', 'VIRGINIA AVE'), - ('street', 'VISITACION AVE'), - ('street', 'VISTA CT'), - ('street', 'VISTA LN'), - ('street', 'VISTA VERDE CT'), - ('street', 'VISTA VIEW CT'), - ('street', 'VON SCHMIDT ST'), - ('street', 'VULCAN STWY'), - ('street', 'WABASH TER'), - ('street', 'WAGNER ALY'), - ('street', 'WAITHMAN WAY'), - ('street', 'WALBRIDGE ST'), - ('street', 'WALDO ALY'), - ('street', 'WALKER CT'), - ('street', 'WALKWAY'), - ('street', 'WALL PL'), - ('street', 'WALLACE AVE'), - ('street', 'WALLEN ST'), - ('street', 'WALLER ST'), - ('street', 'WALNUT ST'), - ('street', 'WALTER ST'), - ('street', 'WALTER U LUM PL'), - ('street', 'WALTHAM ST'), - ('street', 'WANDA ST'), - ('street', 'WARD ST'), - ('street', 'WARE ST'), - ('street', 'WARNER PL'), - ('street', 'WARREN DR'), - ('street', 'WASHBURN ST'), - ('street', 'WASHINGTON BLVD'), - ('street', 'WASHINGTON ST'), - ('street', 'WATCHMAN WAY'), - ('street', 'WATER ST'), - ('street', 'WATERLOO ST'), - ('street', 'WATERVILLE ST'), - ('street', 'WATT AVE'), - ('street', 'WATTSON PL'), - ('street', 'WAVERLY PL'), - ('street', 'WAWONA ST'), - ('street', 'WAYLAND ST'), - ('street', 'WAYNE PL'), - ('street', 'WEBB PL'), - ('street', 'WEBSTER ST'), - ('street', 'WEDEMEYER ST'), - ('street', 'WELDON ST'), - ('street', 'WELSH ST'), - ('street', 'WENTWORTH PL'), - ('street', 'WEST RD'), - ('street', 'WEST BROADWAY'), - ('street', 'WEST CLAY ST'), - ('street', 'WEST CRYSTAL COVE TER'), - ('street', 'WEST HALLECK ST'), - ('street', 'WEST PACIFIC AVE'), - ('street', 'WEST POINT RD'), - ('street', 'WEST PORTAL AVE'), - ('street', 'WEST VIEW AVE'), - ('street', 'WESTBROOK CT'), - ('street', 'WESTERN SHORE LN'), - ('street', 'WESTGATE DR'), - ('street', 'WESTMOORLAND DR'), - ('street', 'WESTON CT'), - ('street', 'WESTSIDE DR'), - ('street', 'WESTWOOD DR'), - ('street', 'WETMORE ST'), - ('street', 'WHEAT ST'), - ('street', 'WHEELER AVE'), - ('street', 'WHIPPLE AVE'), - ('street', 'WHITE ST'), - ('street', 'WHITECLIFF WAY'), - ('street', 'WHITFIELD CT'), - ('street', 'WHITING ST'), - ('street', 'WHITING WAY'), - ('street', 'WHITNEY ST'), - ('street', 'WHITNEY YOUNG CIR'), - ('street', 'WHITTIER ST'), - ('street', 'WIESE ST'), - ('street', 'WILDE AVE'), - ('street', 'WILDER ST'), - ('street', 'WILDWOOD WAY'), - ('street', 'WILLARD ST'), - ('street', 'WILLIAMS AVE'), - ('street', 'WILLIAR AVE'), - ('street', 'WILLIE B KENNEDY DR'), - ('street', 'WILLOW ST'), - ('street', 'WILLS ST'), - ('street', 'WILMOT ST'), - ('street', 'WILSON ST'), - ('street', 'WINDING WAY'), - ('street', 'WINDSOR PL'), - ('street', 'WINFIELD ST'), - ('street', 'WINN WAY'), - ('street', 'WINSTON DR'), - ('street', 'WINTER PL'), - ('street', 'WINTHROP ST'), - ('street', 'WISCONSIN ST'), - ('street', 'WISSER CT'), - ('street', 'WOOD ST'), - ('street', 'WOODACRE DR'), - ('street', 'WOODHAVEN CT'), - ('street', 'WOODLAND AVE'), - ('street', 'WOODSIDE AVE'), - ('street', 'WOODWARD ST'), - ('street', 'WOOL CT'), - ('street', 'WOOL ST'), - ('street', 'WOOLSEY ST'), - ('street', 'WORCESTER AVE'), - ('street', 'WORDEN ST'), - ('street', 'WORTH ST'), - ('street', 'WRIGHT CT'), - ('street', 'WRIGHT LOOP'), - ('street', 'WRIGHT ST'), - ('street', 'WYMAN AVE'), - ('street', 'WYTON LN'), - ('street', 'YACHT RD'), - ('street', 'YALE ST'), - ('street', 'YELLOW CAB ACCESS ROAD'), - ('street', 'YERBA BUENA AVE'), - ('street', 'YERBA BUENA DR'), - ('street', 'YERBA BUENA LN'), - ('street', 'YERBA BUENA RD'), - ('street', 'YORBA ST'), - ('street', 'YORK ST'), - ('street', 'YOSEMITE AVE'), - ('street', 'YOUNG CT'), - ('street', 'YOUNG ST'), - ('street', 'YUKON ST'), - ('street', 'ZAMPA LN'), - ('street', 'ZANOWITZ AVE'), - ('street', 'ZENO PL'), - ('street', 'ZIRCON PL'), - ('street', 'ZOE ST'), - ('street', 'ZOO RD'), - ('street', 'DR TOM WADDELL PL'), - ('street', 'AL SCOMA WAY'), - ('street', 'PALACE DR'), - ('street', 'MARTIN AVE'), - ('street', 'MISSION BAY BLVD SOUTH'), - ('street', 'BUENA VISTA AVE EAST'), - ('street', 'CONSERVATORY DR EAST'), - ('street', 'BURNETT AVE NORTH'), - ('street', 'LAKE MERCED HILL ST NORTH'), - ('street', 'BUENA VISTA AVE WEST'), - ('street', 'WILLARD ST NORTH'), - ('street', 'FIRST DR EAST'), - ('street', 'LAKE MERCED HILL ST SOUTH'), - ('street', 'MISSION BAY BLVD NORTH'), - ('street', '25TH AVE NORTH'), - ('street', 'CONSERVATORY DR WEST'), - ('street', 'FIRST DR WEST'), - ('street', 'ZANOWITZ ST'), - ('street', 'AVENUE G'), - ('street', 'ODD FELLOWS WAY'), - ('street', 'EL DORADO ST NORTH'), - ('street', 'EL DORADO ST SOUTH'), - ('street', 'FRIDA KAHLO WAY'), - ('street', 'WARRIORS WAY'), - ('street', 'WATERFRONT ST'), - ('street', 'PALM LN'), - ('street', 'WHIPPLE ST'), - ('street', 'SAM JORDANS WAY'), - ('street', 'SAN FRANCISCO GOLF CLUB RD'), - ('street', 'JEFF ADACHI WAY'), - ('street', 'LONG BRIDGE VARA'), - ('street', 'STEUART LN'), - ('street', 'EARL GAGE JR ST'), - ('tag', 'Technology'), - ('tag', 'Nature'), - ('tag', 'Water'), - ('tag', 'Programming'), - ('tag', 'Excercise'), - ('tag', 'Spritual'), - ('tag', 'Skateboarding'), - ('tag', 'Kitesurfing'); - -INSERT INTO faker.dictionary ( - type, - word -) VALUES - ('cta', 'Start Your Journey'), - ('cta', 'Reserve your spot now'), - ('cta', 'Sign up'), - ('cta', 'Sign up to attend now'), - ('cta', 'Join Us!'), - ('cta', 'Let’s Do It!'), - ('cta', 'Get Started'), - ('cta', 'Sign up free'), - ('cta', 'Learn more'), - ('cta', 'Join now'), - ('cta', 'Start now'), - ('cta', 'Get yours now'); \ No newline at end of file diff --git a/packages/geotypes/README.md b/packages/geotypes/README.md index b478400cd..6de4bc2c1 100644 --- a/packages/geotypes/README.md +++ b/packages/geotypes/README.md @@ -194,29 +194,14 @@ The test suite validates: ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - ## Disclaimer AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. diff --git a/packages/geotypes/package.json b/packages/geotypes/package.json index 9d42aa9f6..b97d5a719 100644 --- a/packages/geotypes/package.json +++ b/packages/geotypes/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/geotypes", - "version": "0.28.3", + "version": "0.15.5", "description": "Geographic data types and spatial functions for PostgreSQL", "author": "Dan Lynch ", "contributors": [ @@ -25,7 +25,7 @@ "@pgpm/verify": "workspace:*" }, "devDependencies": { - "pgpm": "^4.23.2" + "pgpm": "^4.28.7" }, "repository": { "type": "git", @@ -35,4 +35,4 @@ "bugs": { "url": "https://github.com/constructive-io/pgpm-modules/issues" } -} +} \ No newline at end of file diff --git a/packages/geotypes/sql/pgpm-geo-types--0.15.3.sql b/packages/geotypes/sql/pgpm-geo-types--0.15.3.sql deleted file mode 100644 index 002c4a7ea..000000000 --- a/packages/geotypes/sql/pgpm-geo-types--0.15.3.sql +++ /dev/null @@ -1,16 +0,0 @@ -\echo Use "CREATE EXTENSION pgpm-geo-types" to load this file. \quit -CREATE DOMAIN geo_point AS geometry(point, 4326); - -COMMENT ON DOMAIN geo_point IS '@name pgpmInternalTypeGeoPoint'; - -CREATE DOMAIN geo_polygon AS geometry(polygon, 4326); - -COMMENT ON DOMAIN geo_polygon IS '@name pgpmInternalTypeGeoPolygon'; - -CREATE DOMAIN geography_point AS geography(point, 4326); - -COMMENT ON DOMAIN geography_point IS '@name pgpmInternalTypeGeographyPoint'; - -CREATE DOMAIN geography_polygon AS geography(polygon, 4326); - -COMMENT ON DOMAIN geography_polygon IS '@name pgpmInternalTypeGeographyPolygon'; diff --git a/packages/inflection-db/.npmignore b/packages/inflection-db/.npmignore deleted file mode 100644 index cf8a45548..000000000 --- a/packages/inflection-db/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -__tests__ -jest.config.js diff --git a/packages/inflection-db/Makefile b/packages/inflection-db/Makefile index 3c2804a65..a0962fcd9 100644 --- a/packages/inflection-db/Makefile +++ b/packages/inflection-db/Makefile @@ -1,6 +1,7 @@ EXTENSION = inflection-db -DATA = sql/inflection-db--0.26.4.sql +DATA = sql/inflection-db--0.0.1.sql PG_CONFIG = pg_config PGXS := $(shell $(PG_CONFIG) --pgxs) include $(PGXS) + \ No newline at end of file diff --git a/packages/inflection-db/README.md b/packages/inflection-db/README.md index 907a4c800..799b90eba 100644 --- a/packages/inflection-db/README.md +++ b/packages/inflection-db/README.md @@ -285,29 +285,14 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - ## Disclaimer AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. diff --git a/packages/inflection-db/inflection-db.control b/packages/inflection-db/inflection-db.control index 4b003035a..d2a0dbe80 100644 --- a/packages/inflection-db/inflection-db.control +++ b/packages/inflection-db/inflection-db.control @@ -1,6 +1,6 @@ # inflection-db extension comment = 'inflection-db extension' -default_version = '0.26.4' +default_version = '0.0.1' module_pathname = '$libdir/inflection-db' requires = 'pgpm-inflection,pgpm-verify,plpgsql' relocatable = false diff --git a/packages/inflection-db/package.json b/packages/inflection-db/package.json index 26ef89d05..8d14c6e86 100644 --- a/packages/inflection-db/package.json +++ b/packages/inflection-db/package.json @@ -1,39 +1,39 @@ { "name": "@pgpm/inflection-db", - "version": "0.28.3", - "description": "Database-level string inflection and naming convention utilities for PostgreSQL", + "version": "0.0.1", "author": "Dan Lynch ", "contributors": [ "Constructive " ], - "keywords": [ - "postgresql", - "pgpm", - "inflection", - "naming", - "conventions" - ], + "description": "Database-level string inflection and naming convention utilities for PostgreSQL", + "homepage": "https://github.com/constructive-io/pgpm-modules", "publishConfig": { "access": "public" }, + "repository": { + "type": "git", + "url": "https://github.com/constructive-io/pgpm-modules" + }, + "bugs": { + "url": "https://github.com/constructive-io/pgpm-modules/issues" + }, "scripts": { "bundle": "pgpm package", "test": "jest", "test:watch": "jest --watch" }, + "keywords": [ + "postgresql", + "pgpm", + "inflection", + "naming", + "conventions" + ], "dependencies": { "@pgpm/inflection": "workspace:*", "@pgpm/verify": "workspace:*" }, "devDependencies": { - "pgpm": "^4.23.2" - }, - "repository": { - "type": "git", - "url": "https://github.com/constructive-io/pgpm-modules" - }, - "homepage": "https://github.com/constructive-io/pgpm-modules", - "bugs": { - "url": "https://github.com/constructive-io/pgpm-modules/issues" + "pgpm": "^4.28.7" } -} +} \ No newline at end of file diff --git a/packages/inflection-db/sql/inflection-db--0.26.4.sql b/packages/inflection-db/sql/inflection-db--0.0.1.sql similarity index 100% rename from packages/inflection-db/sql/inflection-db--0.26.4.sql rename to packages/inflection-db/sql/inflection-db--0.0.1.sql diff --git a/packages/inflection/README.md b/packages/inflection/README.md index ac18f1a5a..f9dbfdf2f 100644 --- a/packages/inflection/README.md +++ b/packages/inflection/README.md @@ -394,29 +394,14 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - ## Disclaimer AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. diff --git a/packages/inflection/package.json b/packages/inflection/package.json index 9cdd73c0d..4d24a325f 100644 --- a/packages/inflection/package.json +++ b/packages/inflection/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/inflection", - "version": "0.28.3", + "version": "0.15.5", "description": "String inflection utilities for PostgreSQL naming conventions", "author": "Dan Lynch ", "contributors": [ @@ -24,7 +24,7 @@ "@pgpm/verify": "workspace:*" }, "devDependencies": { - "pgpm": "^4.23.2" + "pgpm": "^4.28.7" }, "repository": { "type": "git", @@ -34,4 +34,4 @@ "bugs": { "url": "https://github.com/constructive-io/pgpm-modules/issues" } -} +} \ No newline at end of file diff --git a/packages/inflection/sql/pgpm-inflection--0.15.3.sql b/packages/inflection/sql/pgpm-inflection--0.15.3.sql deleted file mode 100644 index 59ca21493..000000000 --- a/packages/inflection/sql/pgpm-inflection--0.15.3.sql +++ /dev/null @@ -1,482 +0,0 @@ -\echo Use "CREATE EXTENSION pgpm-inflection" to load this file. \quit -CREATE SCHEMA inflection; - -GRANT USAGE ON SCHEMA inflection TO PUBLIC; - -ALTER DEFAULT PRIVILEGES IN SCHEMA inflection - GRANT EXECUTE ON FUNCTIONS TO PUBLIC; - -CREATE FUNCTION inflection.no_consecutive_caps_till_end(str text) RETURNS text AS $EOFCODE$ -DECLARE - result text[]; - temp text; -BEGIN - FOR result IN - SELECT regexp_matches(str, E'([A-Z])([A-Z]+$)', 'g') - LOOP - temp = result[1] || lower(result[2]); - str = replace(str, result[1] || result[2], temp); - END LOOP; - return str; -END; -$EOFCODE$ LANGUAGE plpgsql STABLE; - -CREATE FUNCTION inflection.no_consecutive_caps_till_lower(str text) RETURNS text AS $EOFCODE$ -DECLARE - result text[]; - temp text; -BEGIN - FOR result IN - SELECT regexp_matches(str, E'([A-Z])([A-Z]+)[A-Z][a-z]', 'g') - LOOP - temp = result[1] || lower(result[2]); - str = replace(str, result[1] || result[2], temp); - END LOOP; - - return str; -END; -$EOFCODE$ LANGUAGE plpgsql STABLE; - -CREATE FUNCTION inflection.no_consecutive_caps(str text) RETURNS text AS $EOFCODE$ - select inflection.no_consecutive_caps_till_lower(inflection.no_consecutive_caps_till_end(str)); -$EOFCODE$ LANGUAGE sql STABLE; - -CREATE FUNCTION inflection.pg_slugify(value text, allow_unicode boolean) RETURNS text AS $EOFCODE$ - WITH normalized AS ( - SELECT - CASE WHEN allow_unicode THEN - value - ELSE - unaccent (value) - END AS value -), -no_consecutive_caps AS ( - SELECT - inflection.no_consecutive_caps (value) AS value -FROM - normalized -), -remove_chars AS ( - SELECT - regexp_replace(value, E'[^\\w\\s-]', '', 'gi') AS value -FROM - no_consecutive_caps -), -trimmed AS ( - SELECT - trim(value) AS value -FROM - remove_chars -), -hyphenated AS ( - SELECT - regexp_replace(value, E'[-\\s]+', '-', 'gi') AS value -FROM - trimmed -), -underscored AS ( - SELECT - regexp_replace(value, E'[-]+', '_', 'gi') AS value -FROM - hyphenated -), -removedups AS ( - SELECT - regexp_replace(value, E'[_]+', '_', 'gi') AS value -FROM - underscored -) -SELECT - value -FROM - removedups; -$EOFCODE$ LANGUAGE sql STRICT IMMUTABLE; - -CREATE FUNCTION inflection.pg_slugify(text) RETURNS text AS $EOFCODE$SELECT inflection.pg_slugify($1, false)$EOFCODE$ LANGUAGE sql IMMUTABLE; - -CREATE FUNCTION inflection.no_single_underscores_in_beginning(str text) RETURNS text AS $EOFCODE$ -DECLARE - result text[]; - temp text; -BEGIN - FOR result IN - SELECT regexp_matches(str, E'(^[a-z])(_)', 'g') - LOOP - str = replace(str, result[1] || result[2], result[1]); - END LOOP; - return str; -END; -$EOFCODE$ LANGUAGE plpgsql STABLE; - -CREATE FUNCTION inflection.no_single_underscores_at_end(str text) RETURNS text AS $EOFCODE$ -DECLARE - result text[]; - temp text; -BEGIN - FOR result IN - SELECT regexp_matches(str, E'(_)([a-z]$)', 'g') - LOOP - str = replace(str, result[1] || result[2], result[2]); - END LOOP; - - return str; -END; -$EOFCODE$ LANGUAGE plpgsql STABLE; - -CREATE FUNCTION inflection.no_single_underscores_in_middle(str text) RETURNS text AS $EOFCODE$ -DECLARE - result text[]; - temp text; -BEGIN - FOR result IN - SELECT regexp_matches(str, E'(_)([a-z]_)', 'g') - LOOP - str = replace(str, result[1] || result[2], result[2]); - END LOOP; - - return str; -END; -$EOFCODE$ LANGUAGE plpgsql STABLE; - -CREATE FUNCTION inflection.no_single_underscores(str text) RETURNS text AS $EOFCODE$ - select - inflection.no_single_underscores_in_middle(inflection.no_single_underscores_at_end(inflection.no_single_underscores_in_beginning(str))); -$EOFCODE$ LANGUAGE sql STABLE; - -CREATE FUNCTION inflection.underscore(str text) RETURNS text AS $EOFCODE$ - WITH slugged AS ( - SELECT - inflection.pg_slugify(str) AS value -), -convertedupper AS ( - SELECT - lower(regexp_replace(value, E'([A-Z])', E'\_\\1', 'g')) AS value - FROM - slugged -), -noprefix AS ( - SELECT - regexp_replace(value, E'^_', '', 'g') AS value - FROM - convertedupper -), -removedups AS ( - SELECT - regexp_replace(value, E'[_]+', '_', 'gi') AS value -FROM - noprefix -), -stripedges AS ( - SELECT - regexp_replace(regexp_replace(value, E'([A-Z])_$', E'\\1', 'gi'), E'^_([A-Z])', E'\\1', 'gi') AS value -FROM - removedups -), -nosingles AS ( - SELECT - inflection.no_single_underscores(value) AS value -FROM - stripedges -) -SELECT - value -FROM - nosingles; -$EOFCODE$ LANGUAGE sql IMMUTABLE; - -CREATE FUNCTION inflection.underscore(parts text[]) RETURNS text AS $EOFCODE$ - SELECT inflection.underscore(array_to_string(parts, '_')); -$EOFCODE$ LANGUAGE sql IMMUTABLE; - -CREATE FUNCTION inflection.camel(str text) RETURNS text AS $EOFCODE$ -DECLARE - result text[]; -BEGIN - str = inflection.underscore(str); - FOR result IN - SELECT regexp_matches(str, E'(_[a-zA-Z0-9])', 'g') - LOOP - str = replace(str, result[1], upper(result[1])); - END LOOP; - return regexp_replace(substring(str FROM 1 FOR 1) || substring(str FROM 2 FOR length(str)), E'[_]+', '', 'gi'); -END; -$EOFCODE$ LANGUAGE plpgsql STABLE; - -CREATE FUNCTION inflection.dashed(str text) RETURNS text AS $EOFCODE$ - WITH underscored AS ( - SELECT - inflection.underscore(str) AS value -), -dashes AS ( - SELECT - regexp_replace(value, '_', '-', 'gi') AS value - FROM - underscored -) -SELECT - value -FROM - dashes; -$EOFCODE$ LANGUAGE sql IMMUTABLE; - -CREATE FUNCTION inflection.pascal(str text) RETURNS text AS $EOFCODE$ -DECLARE - result text[]; -BEGIN - str = inflection.camel(str); - return upper(substring(str FROM 1 FOR 1)) || substring(str FROM 2 FOR length(str)); -END; -$EOFCODE$ LANGUAGE plpgsql STABLE; - -CREATE TABLE inflection.inflection_rules ( - id uuid PRIMARY KEY DEFAULT uuid_generate_v4(), - type text, - test text, - replacement text -); - -GRANT SELECT ON inflection.inflection_rules TO PUBLIC; - -CREATE FUNCTION inflection.plural(str text) RETURNS text AS $EOFCODE$ -DECLARE - result record; - matches text[]; -BEGIN - IF inflection.should_skip_uncountable(lower(str)) THEN - return str; - END IF; - - FOR result IN - SELECT * FROM inflection.inflection_rules where type='plural' - LOOP - matches = regexp_matches(str, result.test, 'gi'); - IF (array_length(matches, 1) > 0) THEN - IF (result.replacement IS NULL) THEN - return str; - END IF; - str = regexp_replace(str, result.test, result.replacement, 'gi'); - return str; - END IF; - END LOOP; - return str; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION inflection.uncountable_words() RETURNS text[] AS $EOFCODE$ -select ARRAY[ 'accommodation', 'adulthood', 'advertising', 'advice', 'aggression', 'aid', 'air', 'aircraft', 'alcohol', 'anger', 'applause', 'arithmetic', 'assistance', 'athletics', 'bacon', 'baggage', 'beef', 'biology', 'blood', 'botany', 'bread', 'butter', 'carbon', 'cardboard', 'cash', 'chalk', 'chaos', 'chess', 'crossroads', 'countryside', 'dancing', 'deer', 'dignity', 'dirt', 'dust', 'economics', 'education', 'electricity', 'engineering', 'enjoyment', 'envy', 'equipment', 'ethics', 'evidence', 'evolution', 'fame', 'fiction', 'flour', 'flu', 'food', 'fuel', 'fun', 'furniture', 'gallows', 'garbage', 'garlic', 'genetics', 'gold', 'golf', 'gossip', 'grammar', 'gratitude', 'grief', 'guilt', 'gymnastics', 'happiness', 'hardware', 'harm', 'hate', 'hatred', 'health', 'heat', 'help', 'homework', 'honesty', 'honey', 'hospitality', 'housework', 'humour', 'hunger', 'hydrogen', 'ice', 'importance', 'inflation', 'information', 'innocence', 'iron', 'irony', 'jam', 'jewelry', 'judo', 'karate', 'knowledge', 'lack', 'laughter', 'lava', 'leather', 'leisure', 'lightning', 'linguine', 'linguini', 'linguistics', 'literature', 'litter', 'livestock', 'logic', 'loneliness', 'luck', 'luggage', 'macaroni', 'machinery', 'magic', 'management', 'mankind', 'marble', 'mathematics', 'mayonnaise', 'measles', 'methane', 'milk', 'minus', 'money', 'mud', 'music', 'mumps', 'nature', 'news', 'nitrogen', 'nonsense', 'nurture', 'nutrition', 'obedience', 'obesity', 'oxygen', 'pasta', 'patience', 'physics', 'poetry', 'pollution', 'poverty', 'pride', 'psychology', 'publicity', 'punctuation', 'quartz', 'racism', 'relaxation', 'reliability', 'research', 'respect', 'revenge', 'rice', 'rubbish', 'rum', 'safety', 'scenery', 'seafood', 'seaside', 'series', 'shame', 'sheep', 'shopping', 'sleep', 'smoke', 'smoking', 'snow', 'soap', 'software', 'soil', 'spaghetti', 'species', 'steam', 'stuff', 'stupidity', 'sunshine', 'symmetry', 'tennis', 'thirst', 'thunder', 'timber', 'traffic', 'transportation', 'trust', 'underwear', 'unemployment', 'unity', 'validity', 'veal', 'vegetation', 'vegetarianism', 'vengeance', 'violence', 'vitality', 'warmth', 'wealth', 'weather', 'welfare', 'wheat', 'wildlife', 'wisdom', 'yoga', 'zinc', 'zoology' ]; -$EOFCODE$ LANGUAGE sql IMMUTABLE; - -CREATE FUNCTION inflection.should_skip_uncountable(str text) RETURNS boolean AS $EOFCODE$ - SELECT - str = ANY (inflection.uncountable_words ()); -$EOFCODE$ LANGUAGE sql IMMUTABLE; - -CREATE FUNCTION inflection.singular(str text) RETURNS text AS $EOFCODE$ -DECLARE - result record; - matches text[]; -BEGIN - IF inflection.should_skip_uncountable(lower(str)) THEN - return str; - END IF; - - FOR result IN - SELECT * FROM inflection.inflection_rules where type='singular' - LOOP - matches = regexp_matches(str, result.test, 'gi'); - IF (array_length(matches, 1) > 0) THEN - IF (result.replacement IS NULL) THEN - return str; - END IF; - str = regexp_replace(str, result.test, result.replacement, 'gi'); - return str; - END IF; - END LOOP; - return str; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION inflection.slugify(value text, allow_unicode boolean) RETURNS text AS $EOFCODE$ - WITH normalized AS ( - SELECT - CASE WHEN allow_unicode THEN - value - ELSE - unaccent (value) - END AS value -), -remove_chars AS ( - SELECT - regexp_replace(value, E'[^\\w\\s-]', '', 'gi') AS value -FROM - normalized -), -lowercase AS ( - SELECT - lower(value) AS value -FROM - remove_chars -), -trimmed AS ( - SELECT - trim(value) AS value -FROM - lowercase -), -hyphenated AS ( - SELECT - regexp_replace(value, E'[-\\s]+', '-', 'gi') AS value -FROM - trimmed -) -SELECT - value -FROM - hyphenated; -$EOFCODE$ LANGUAGE sql STRICT IMMUTABLE; - -CREATE FUNCTION inflection.slugify(text) RETURNS text AS $EOFCODE$SELECT inflection.slugify($1, false)$EOFCODE$ LANGUAGE sql IMMUTABLE; - -INSERT INTO inflection.inflection_rules ( - type, - test, - replacement -) VALUES - -- plural guards: already-plural words return as-is (NULL replacement) - ('plural', '^(m|wom)en$', NULL), - ('plural', '(pe)ople$', NULL), - ('plural', '(child)ren$', NULL), - ('plural', '([ti])a$', NULL), - ('plural', '((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$', NULL), - ('plural', '(database|codebase|firebase|knowledgebase)s$', NULL), - ('plural', '(drive)s$', NULL), - ('plural', '(hi|ti)ves$', NULL), - ('plural', '(curve)s$', NULL), - ('plural', '([lr])ves$', NULL), - ('plural', '([^fo])ves$', NULL), - ('plural', '([^aeiouy]|qu)ies$', NULL), - ('plural', '(s)eries$', NULL), - ('plural', '(m)ovies$', NULL), - ('plural', '(x|ch|ss|sh)es$', NULL), - ('plural', '([m|l])ice$', NULL), - ('plural', '(bus)es$', NULL), - ('plural', '(o)es$', NULL), - ('plural', '(shoe)s$', NULL), - ('plural', '(cris|ax|test)es$', NULL), - ('plural', '(octop|vir)uses$', NULL), - ('plural', '(alias|canvas|status|campus)es$', NULL), - ('plural', '^(summons|bonus)es$', NULL), - ('plural', '^(ox)en', NULL), - ('plural', '(matr)ices$', NULL), - ('plural', '(vert|ind)ices$', NULL), - ('plural', '^feet$', NULL), - ('plural', '^teeth$', NULL), - ('plural', '^geese$', NULL), - ('plural', '(quiz)zes$', NULL), - ('plural', '^(whereas)es$', NULL), - ('plural', '^(criteri)a$', NULL), - ('plural', '^genera$', NULL), - -- plural replacement rules - ('plural', '^(m|wom)an$', E'\\1en'), - ('plural', '(pe)rson$', E'\\1ople'), - ('plural', '(child)$', E'\\1ren'), - ('plural', '(drive)$', E'\\1s'), - ('plural', '^(ox)$', E'\\1en'), - ('plural', '(ax|test)is$', E'\\1es'), - ('plural', '(octop|vir)us$', E'\\1uses'), - ('plural', '(alias|status|canvas|campus)$', E'\\1es'), - ('plural', '^(summons|bonus)$', E'\\1es'), - ('plural', '(bu)s$', E'\\1ses'), - ('plural', '(buffal|tomat|potat)o$', E'\\1oes'), - ('plural', '([ti])um$', E'\\1a'), - ('plural', 'sis$', 'ses'), - ('plural', '(?:([^f])fe|([lr])f)$', E'\\1\\2ves'), - ('plural', '^(focus)$', E'\\1es'), - ('plural', '(hi|ti)ve$', E'\\1ves'), - ('plural', '([^aeiouy]|qu)y$', E'\\1ies'), - ('plural', '(matr)ix$', E'\\1ices'), - ('plural', '(vert|ind)ex$', E'\\1ices'), - ('plural', '(x|ch|ss|sh)$', E'\\1es'), - ('plural', '([m|l])ouse$', E'\\1ice'), - ('plural', '^foot$', 'feet'), - ('plural', '^tooth$', 'teeth'), - ('plural', '^goose$', 'geese'), - ('plural', '(quiz)$', E'\\1zes'), - ('plural', '^(whereas)$', E'\\1es'), - ('plural', '^(criteri)on$', E'\\1a'), - ('plural', '^genus$', 'genera'), - ('plural', 's$', 's'), - ('plural', '$', 's'), - -- singular guards: already-singular words return as-is (NULL replacement) - ('singular', '^(m|wom)an$', NULL), - ('singular', '(pe)rson$', NULL), - ('singular', '(child)$', NULL), - ('singular', '(drive)$', NULL), - ('singular', '^(ox)$', NULL), - ('singular', '(ax|test)is$', NULL), - ('singular', '(octop|vir)us$', NULL), - ('singular', '(alias|status|canvas|campus)$', NULL), - ('singular', '^(summons|bonus)$', NULL), - ('singular', '(bu)s$', NULL), - ('singular', '(buffal|tomat|potat)o$', NULL), - ('singular', '([ti])um$', NULL), - ('singular', 'sis$', NULL), - ('singular', '(?:([^f])fe|([lr])f)$', NULL), - ('singular', '^(focus)$', NULL), - ('singular', '(hi|ti)ve$', NULL), - ('singular', '([^aeiouy]|qu)y$', NULL), - ('singular', '(x|ch|ss|sh)$', NULL), - ('singular', '(matr)ix$', NULL), - ('singular', '(vert|ind)ex$', NULL), - ('singular', '([m|l])ouse$', NULL), - ('singular', '^foot$', NULL), - ('singular', '^tooth$', NULL), - ('singular', '^goose$', NULL), - ('singular', '(quiz)$', NULL), - ('singular', '^(whereas)$', NULL), - ('singular', '^(criteri)on$', NULL), - ('singular', '^genus$', NULL), - -- singular replacement rules - ('singular', '^(m|wom)en$', E'\\1an'), - ('singular', '(pe)ople$', E'\\1rson'), - ('singular', '(child)ren$', E'\\1'), - ('singular', '(database|codebase|firebase|knowledgebase)s$', E'\\1'), - ('singular', '(drive)s$', E'\\1'), - ('singular', '^genera$', 'genus'), - ('singular', '^(criteri)a$', E'\\1on'), - -- Latin suffix overrides (PostGraphile-compatible) - ('singular', '(schema)ta$', E'\\1'), - ('singular', '(phenomen)a$', E'\\1on'), - ('singular', '(memorand)a$', E'\\1um'), - ('singular', '(curricul)a$', E'\\1um'), - ('singular', '([ti])a$', E'\\1um'), - ('singular', '((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$', E'\\1\\2sis'), - ('singular', '(hi|ti)ves$', E'\\1ve'), - ('singular', '(curve)s$', E'\\1'), - ('singular', '([lr])ves$', E'\\1f'), - ('singular', '([a])ves$', E'\\1ve'), - ('singular', '([^fo])ves$', E'\\1fe'), - ('singular', '(m)ovies$', E'\\1ovie'), - ('singular', '([^aeiouy]|qu)ies$', E'\\1y'), - ('singular', '(s)eries$', E'\\1eries'), - ('singular', '(x|ch|ss|sh)es$', E'\\1'), - ('singular', '([m|l])ice$', E'\\1ouse'), - ('singular', '(bus)es$', E'\\1'), - ('singular', '(o)es$', E'\\1'), - ('singular', '(shoe)s$', E'\\1'), - ('singular', '(cris|ax|test)es$', E'\\1is'), - ('singular', '(octop|vir)uses$', E'\\1us'), - ('singular', '(alias|canvas|status|campus)es$', E'\\1'), - ('singular', '^(summons|bonus)es$', E'\\1'), - ('singular', '^(ox)en', E'\\1'), - ('singular', '(matr)ices$', E'\\1ix'), - ('singular', '(vert|ind)ices$', E'\\1ex'), - ('singular', '^feet$', 'foot'), - ('singular', '^teeth$', 'tooth'), - ('singular', '^geese$', 'goose'), - ('singular', '(quiz)zes$', E'\\1'), - ('singular', '^(whereas)es$', E'\\1'), - ('singular', 'ss$', 'ss'), - ('singular', 's$', ''); - -CREATE INDEX inflection_rules_type_idx ON inflection.inflection_rules (type); diff --git a/packages/jobs/Makefile b/packages/jobs/Makefile index d76b572a1..852ca4922 100644 --- a/packages/jobs/Makefile +++ b/packages/jobs/Makefile @@ -1,5 +1,5 @@ EXTENSION = pgpm-jobs -DATA = sql/pgpm-jobs--0.26.0.sql +DATA = sql/pgpm-jobs--0.15.5.sql PG_CONFIG = pg_config PGXS := $(shell $(PG_CONFIG) --pgxs) diff --git a/packages/jobs/README.md b/packages/jobs/README.md index 8a1f8246b..45574c280 100644 --- a/packages/jobs/README.md +++ b/packages/jobs/README.md @@ -301,29 +301,14 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - ## Disclaimer AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. diff --git a/packages/jobs/package.json b/packages/jobs/package.json index a3ef6c8c8..101feb0cb 100644 --- a/packages/jobs/package.json +++ b/packages/jobs/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/jobs", - "version": "0.28.3", + "version": "0.15.5", "description": "Core job system for background task processing in PostgreSQL", "author": "Dan Lynch ", "contributors": [ @@ -24,7 +24,7 @@ "@pgpm/verify": "workspace:*" }, "devDependencies": { - "pgpm": "^4.23.2" + "pgpm": "^4.28.7" }, "repository": { "type": "git", @@ -34,4 +34,4 @@ "bugs": { "url": "https://github.com/constructive-io/pgpm-modules/issues" } -} +} \ No newline at end of file diff --git a/packages/jobs/pgpm-jobs.control b/packages/jobs/pgpm-jobs.control index df65c3602..ef3af2e2b 100644 --- a/packages/jobs/pgpm-jobs.control +++ b/packages/jobs/pgpm-jobs.control @@ -1,6 +1,6 @@ # pgpm-jobs extension comment = 'pgpm-jobs extension' -default_version = '0.26.0' +default_version = '0.15.5' module_pathname = '$libdir/pgpm-jobs' requires = 'plpgsql,pgcrypto,pgpm-verify' relocatable = false diff --git a/packages/jobs/sql/pgpm-jobs--0.26.0.sql b/packages/jobs/sql/pgpm-jobs--0.15.5.sql similarity index 100% rename from packages/jobs/sql/pgpm-jobs--0.26.0.sql rename to packages/jobs/sql/pgpm-jobs--0.15.5.sql diff --git a/packages/jwt-claims/README.md b/packages/jwt-claims/README.md index 113ae0947..a7f848f88 100644 --- a/packages/jwt-claims/README.md +++ b/packages/jwt-claims/README.md @@ -306,29 +306,14 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - ## Disclaimer AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. diff --git a/packages/jwt-claims/deploy/schemas/jwt_public/procedures/current_principal_id.sql b/packages/jwt-claims/deploy/schemas/jwt_public/procedures/current_principal_id.sql new file mode 100644 index 000000000..b13095ccf --- /dev/null +++ b/packages/jwt-claims/deploy/schemas/jwt_public/procedures/current_principal_id.sql @@ -0,0 +1,34 @@ +-- Deploy schemas/jwt_public/procedures/current_principal_id to pg +-- Retrieves the current principal's ID from JWT claims with validation + +-- requires: schemas/jwt_public/schema + +BEGIN; + +-- Returns the current principal's UUID from the JWT claims +-- Includes error handling for invalid UUID values +-- Returns NULL if the claim is not set or invalid +CREATE FUNCTION jwt_public.current_principal_id() + RETURNS uuid +AS $$ +DECLARE + v_identifier_id uuid; +BEGIN + IF current_setting('jwt.claims.principal_id', TRUE) + IS NOT NULL THEN + BEGIN + v_identifier_id = current_setting('jwt.claims.principal_id', TRUE)::uuid; + EXCEPTION + WHEN OTHERS THEN + RAISE NOTICE 'Invalid UUID value'; + RETURN NULL; + END; + RETURN v_identifier_id; + ELSE + RETURN NULL; + END IF; +END; +$$ +LANGUAGE 'plpgsql' STABLE; + +COMMIT; diff --git a/packages/jwt-claims/package.json b/packages/jwt-claims/package.json index 497b2dba9..2c1f40ce7 100644 --- a/packages/jwt-claims/package.json +++ b/packages/jwt-claims/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/jwt-claims", - "version": "0.28.3", + "version": "0.15.5", "description": "JWT claim handling and validation functions", "author": "Dan Lynch ", "contributors": [ @@ -21,7 +21,7 @@ "test:watch": "jest --watch" }, "devDependencies": { - "pgpm": "^4.23.2" + "pgpm": "^4.28.7" }, "dependencies": { "@pgpm/types": "workspace:*", @@ -35,4 +35,4 @@ "bugs": { "url": "https://github.com/constructive-io/pgpm-modules/issues" } -} +} \ No newline at end of file diff --git a/packages/jwt-claims/pgpm.plan b/packages/jwt-claims/pgpm.plan index e24acdc67..b534cfe68 100644 --- a/packages/jwt-claims/pgpm.plan +++ b/packages/jwt-claims/pgpm.plan @@ -13,6 +13,7 @@ schemas/jwt_public/procedures/current_user_id [schemas/jwt_public/schema] 2020-1 schemas/jwt_public/procedures/current_ip_address [schemas/jwt_public/schema] 2020-12-17T23:19:17Z Dan Lynch # add schemas/jwt_public/procedures/current_ip_address schemas/jwt_public/procedures/current_user_agent [schemas/jwt_public/schema] 2020-12-17T23:20:04Z Dan Lynch # add schemas/jwt_public/procedures/current_user_agent schemas/jwt_public/procedures/current_origin [schemas/jwt_public/schema] 2017-08-11T08:11:51Z skitch # add schemas/jwt_public/procedures/current_origin +schemas/jwt_public/procedures/current_principal_id [schemas/jwt_public/schema] 2026-06-26T02:05:00Z Dan Lynch # add schemas/jwt_public/procedures/current_principal_id schemas/jwt_private/schema 2020-12-17T06:47:34Z Dan Lynch # add schemas/jwt_private/schema schemas/jwt_private/procedures/current_database_id [schemas/jwt_private/schema] 2020-12-17T23:22:28Z Dan Lynch # add schemas/jwt_private/procedures/current_database_id schemas/jwt_private/procedures/current_token_id [schemas/jwt_private/schema] 2017-08-11T08:11:51Z skitch # add schemas/jwt_private/procedures/current_token_id diff --git a/packages/jwt-claims/revert/schemas/jwt_public/procedures/current_principal_id.sql b/packages/jwt-claims/revert/schemas/jwt_public/procedures/current_principal_id.sql new file mode 100644 index 000000000..b1a4b6c3e --- /dev/null +++ b/packages/jwt-claims/revert/schemas/jwt_public/procedures/current_principal_id.sql @@ -0,0 +1,7 @@ +-- Revert schemas/jwt_public/procedures/current_principal_id from pg + +BEGIN; + +DROP FUNCTION IF EXISTS jwt_public.current_principal_id(); + +COMMIT; diff --git a/packages/jwt-claims/verify/schemas/jwt_public/procedures/current_principal_id.sql b/packages/jwt-claims/verify/schemas/jwt_public/procedures/current_principal_id.sql new file mode 100644 index 000000000..911d75c6c --- /dev/null +++ b/packages/jwt-claims/verify/schemas/jwt_public/procedures/current_principal_id.sql @@ -0,0 +1,10 @@ +-- Verify schemas/jwt_public/procedures/current_principal_id on pg + +BEGIN; + +SELECT has_function_privilege( + 'jwt_public.current_principal_id()', + 'execute' +); + +ROLLBACK; diff --git a/packages/ltree-helpers/LICENSE b/packages/ltree-helpers/LICENSE deleted file mode 100644 index 7b18c9183..000000000 --- a/packages/ltree-helpers/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2025 Dan Lynch -Copyright (c) 2025 Constructive - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/packages/ltree-helpers/README.md b/packages/ltree-helpers/README.md deleted file mode 100644 index ed8002507..000000000 --- a/packages/ltree-helpers/README.md +++ /dev/null @@ -1,106 +0,0 @@ -# @pgpm/ltree-helpers - -

- -

- -

- - - - - -

- -Slash-path to ltree/lquery conversion helpers for PostgreSQL. - -## Overview - -`@pgpm/ltree-helpers` provides simple SQL functions for converting between user-facing slash-delimited paths (like `/projects/alpha/docs`) and PostgreSQL's `ltree`/`lquery` types. This keeps ltree as an implementation detail while exposing a familiar filesystem-style path API. - -## Features - -- **Slash to ltree**: Convert `/projects/alpha/docs` to `projects.alpha.docs` -- **ltree to slash**: Convert `projects.alpha.docs` to `/projects/alpha/docs` -- **Glob to lquery**: Convert `/projects/*/docs` to `projects.*.docs` and `/**` to `.*{1,}` -- **Pure SQL**: All functions are `IMMUTABLE STRICT` for maximum performance and plan caching -- **Own schema**: Functions live in the `ltree_helpers` schema, not in `public` - -## Installation - -```bash -cd packages/my-module -pgpm install @pgpm/ltree-helpers -``` - -## Usage - -```sql --- Slash path to ltree -SELECT ltree_helpers.to_path('/projects/alpha/docs'); --- => 'projects.alpha.docs'::ltree - --- ltree to slash path -SELECT ltree_helpers.to_slash('projects.alpha.docs'::ltree); --- => '/projects/alpha/docs' - --- Glob to lquery (single-level wildcard) -SELECT ltree_helpers.to_query('/projects/*/docs'); --- => 'projects.*.docs'::lquery - --- Glob to lquery (recursive wildcard) -SELECT ltree_helpers.to_query('/projects/**'); --- => 'projects.*{1,}'::lquery - --- Use with ltree operators -SELECT * FROM files -WHERE path <@ ltree_helpers.to_path('/projects/alpha'); - --- Glob matching -SELECT * FROM files -WHERE path ~ ltree_helpers.to_query('/projects/*/docs'); -``` - -## API - -| Function | Signature | Description | -|----------|-----------|-------------| -| `ltree_helpers.to_path` | `(text) -> ltree` | Slash path to ltree | -| `ltree_helpers.to_slash` | `(ltree) -> text` | ltree to slash path | -| `ltree_helpers.to_query` | `(text) -> lquery` | Glob pattern to lquery | - -## Dependencies - -- `ltree` (PostgreSQL contrib extension) -- `pgpm-verify` - -## Related Tooling - -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. -* [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. -* [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. -* [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. - -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - -## Disclaimer - -AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. - -No developer or entity involved in creating this software will be liable for any claims or damages whatsoever associated with your use, inability to use, or your interaction with other users of the code, including any direct, indirect, incidental, special, exemplary, punitive or consequential damages, or loss of profits, cryptocurrencies, tokens, or anything else of value. diff --git a/packages/ltree-helpers/__tests__/ltree-helpers.test.ts b/packages/ltree-helpers/__tests__/ltree-helpers.test.ts deleted file mode 100644 index fe91f3200..000000000 --- a/packages/ltree-helpers/__tests__/ltree-helpers.test.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { getConnections, PgTestClient } from 'pgsql-test'; - -let pg: PgTestClient; -let teardown: () => Promise; - -beforeAll(async () => { - ({ pg, teardown } = await getConnections()); -}); - -afterAll(async () => { - await teardown(); -}); - -describe('to_path', () => { - it('converts slash path with leading slash', async () => { - const { to_path } = await pg.one( - `SELECT ltree_helpers.to_path($1)::text AS to_path`, - ['/projects/alpha/docs'] - ); - expect(to_path).toBe('projects.alpha.docs'); - }); - - it('converts slash path without leading slash', async () => { - const { to_path } = await pg.one( - `SELECT ltree_helpers.to_path($1)::text AS to_path`, - ['projects/alpha'] - ); - expect(to_path).toBe('projects.alpha'); - }); - - it('converts single segment', async () => { - const { to_path } = await pg.one( - `SELECT ltree_helpers.to_path($1)::text AS to_path`, - ['/root'] - ); - expect(to_path).toBe('root'); - }); -}); - -describe('to_slash', () => { - it('converts ltree to slash path', async () => { - const { to_slash } = await pg.one( - `SELECT ltree_helpers.to_slash($1::ltree) AS to_slash`, - ['projects.alpha.docs'] - ); - expect(to_slash).toBe('/projects/alpha/docs'); - }); - - it('converts single label', async () => { - const { to_slash } = await pg.one( - `SELECT ltree_helpers.to_slash($1::ltree) AS to_slash`, - ['root'] - ); - expect(to_slash).toBe('/root'); - }); -}); - -describe('to_query', () => { - it('converts single-level wildcard', async () => { - const { to_query } = await pg.one( - `SELECT ltree_helpers.to_query($1)::text AS to_query`, - ['/projects/*/docs'] - ); - expect(to_query).toBe('projects.*.docs'); - }); - - it('converts recursive wildcard', async () => { - const { to_query } = await pg.one( - `SELECT ltree_helpers.to_query($1)::text AS to_query`, - ['/projects/**'] - ); - expect(to_query).toBe('projects.*{1,}'); - }); - - it('converts exact path (no wildcards)', async () => { - const { to_query } = await pg.one( - `SELECT ltree_helpers.to_query($1)::text AS to_query`, - ['/projects/alpha'] - ); - expect(to_query).toBe('projects.alpha'); - }); -}); - -describe('roundtrip', () => { - it('to_path then to_slash returns original path', async () => { - const { roundtrip } = await pg.one( - `SELECT ltree_helpers.to_slash(ltree_helpers.to_path($1)) AS roundtrip`, - ['/projects/alpha/docs'] - ); - expect(roundtrip).toBe('/projects/alpha/docs'); - }); -}); diff --git a/packages/ltree-helpers/jest.config.js b/packages/ltree-helpers/jest.config.js deleted file mode 100644 index e20e7efb5..000000000 --- a/packages/ltree-helpers/jest.config.js +++ /dev/null @@ -1,15 +0,0 @@ -/** @type {import('ts-jest').JestConfigWithTsJest} */ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - - // Match both __tests__ and colocated test files - testMatch: ['**/?(*.)+(test|spec).{ts,tsx,js,jsx}'], - - // Ignore build artifacts and type declarations - testPathIgnorePatterns: ['/dist/', '\\.d\\.ts$'], - modulePathIgnorePatterns: ['/dist/'], - watchPathIgnorePatterns: ['/dist/'], - - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], -}; diff --git a/packages/ltree-helpers/package.json b/packages/ltree-helpers/package.json index 100134b34..8db5ebf9a 100644 --- a/packages/ltree-helpers/package.json +++ b/packages/ltree-helpers/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/ltree-helpers", - "version": "0.28.3", + "version": "0.15.5", "description": "Slash-path to ltree/lquery conversion helpers for PostgreSQL", "author": "Dan Lynch ", "contributors": [ @@ -25,7 +25,7 @@ "@pgpm/verify": "workspace:*" }, "devDependencies": { - "pgpm": "^4.23.2" + "pgpm": "^4.28.7" }, "repository": { "type": "git", @@ -35,4 +35,4 @@ "bugs": { "url": "https://github.com/constructive-io/pgpm-modules/issues" } -} +} \ No newline at end of file diff --git a/packages/ltree-helpers/sql/pgpm-ltree-helpers--0.21.0.sql b/packages/ltree-helpers/sql/pgpm-ltree-helpers--0.21.0.sql deleted file mode 100644 index c8e51fdb2..000000000 --- a/packages/ltree-helpers/sql/pgpm-ltree-helpers--0.21.0.sql +++ /dev/null @@ -1,28 +0,0 @@ -\echo Use "CREATE EXTENSION pgpm-ltree-helpers" to load this file. \quit -CREATE SCHEMA ltree_helpers; - -GRANT USAGE ON SCHEMA ltree_helpers TO authenticated, anonymous; - -ALTER DEFAULT PRIVILEGES IN SCHEMA ltree_helpers - GRANT EXECUTE ON FUNCTIONS TO authenticated; - -CREATE FUNCTION ltree_helpers.to_path(slash_path text) RETURNS ltree AS $EOFCODE$ - SELECT replace(ltrim(slash_path, '/'), '/', '.')::ltree; -$EOFCODE$ LANGUAGE sql IMMUTABLE STRICT; - -CREATE FUNCTION ltree_helpers.to_slash(lpath ltree) RETURNS text AS $EOFCODE$ - SELECT '/' || replace(lpath::text, '.', '/'); -$EOFCODE$ LANGUAGE sql IMMUTABLE STRICT; - -CREATE FUNCTION ltree_helpers.to_query(glob text) RETURNS lquery AS $EOFCODE$ - SELECT replace( - replace( - replace( - replace(ltrim(glob, '/'), '**', '__DSTAR__'), - '*', '*{1}' - ), - '__DSTAR__', '*' - ), - '/', '.' - )::lquery; -$EOFCODE$ LANGUAGE sql IMMUTABLE STRICT; \ No newline at end of file diff --git a/packages/measurements/README.md b/packages/measurements/README.md index 34580a4a7..d41179da3 100644 --- a/packages/measurements/README.md +++ b/packages/measurements/README.md @@ -189,29 +189,14 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - ## Disclaimer AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. diff --git a/packages/measurements/package.json b/packages/measurements/package.json index 997b77571..40b65fb5e 100644 --- a/packages/measurements/package.json +++ b/packages/measurements/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/measurements", - "version": "0.28.3", + "version": "0.15.5", "description": "Measurement utilities for performance tracking and analytics", "author": "Dan Lynch ", "contributors": [ @@ -24,7 +24,7 @@ "@pgpm/verify": "workspace:*" }, "devDependencies": { - "pgpm": "^4.23.2" + "pgpm": "^4.28.7" }, "repository": { "type": "git", @@ -34,4 +34,4 @@ "bugs": { "url": "https://github.com/constructive-io/pgpm-modules/issues" } -} +} \ No newline at end of file diff --git a/packages/measurements/sql/pgpm-measurements--0.15.3.sql b/packages/measurements/sql/pgpm-measurements--0.15.3.sql deleted file mode 100644 index b9306df74..000000000 --- a/packages/measurements/sql/pgpm-measurements--0.15.3.sql +++ /dev/null @@ -1,84 +0,0 @@ -\echo Use "CREATE EXTENSION pgpm-measurements" to load this file. \quit -CREATE SCHEMA measurements; - -CREATE TABLE measurements.quantities ( - id serial PRIMARY KEY, - name text, - label text, - unit text, - unit_desc text, - description text -); - -COMMENT ON TABLE measurements.quantities IS 'Unit of measure definitions: maps quantity names to their display labels, units, and descriptions'; -COMMENT ON COLUMN measurements.quantities.id IS 'Auto-incrementing identifier for this quantity'; -COMMENT ON COLUMN measurements.quantities.name IS 'Machine-readable name for this quantity (e.g. length, mass, temperature)'; -COMMENT ON COLUMN measurements.quantities.label IS 'Human-readable display label'; -COMMENT ON COLUMN measurements.quantities.unit IS 'Unit symbol or abbreviation (e.g. m, kg, °C)'; -COMMENT ON COLUMN measurements.quantities.unit_desc IS 'Full unit name (e.g. meters, kilograms, degrees Celsius)'; -COMMENT ON COLUMN measurements.quantities.description IS 'Detailed description of what this quantity measures'; - -INSERT INTO measurements.quantities ( - id, - name, - label, - unit, - unit_desc, - description -) VALUES - (1, 'Acceleration', 'Acceleration', 'm/s²', 'meter per square second', 'the rate of change of velocity with respect to time'), - (2, 'AmountOfSubstance', 'Amount Of Substance', 'mol', 'molecules, for example of a substance. The system unit for this quantity is "mol" mole', 'the number of elementary entities (molecules, for example) of a substance'), - (3, 'Angle', 'Angle', 'rad', 'radian', 'the figure formed by two lines diverging from a common point'), - (4, 'AngularAcceleration', 'Angular Acceleration', 'rad/s²', 'radian per square second', 'the rate of change of angular velocity with respect to time'), - (5, 'AngularVelocity', 'Angular Velocity', 'rad/s', 'radian per second', 'the rate of change of angular displacement with respect to time'), - (6, 'Area', 'Area', 'm²', 'square meter', 'the extent of a planar region or of the surface of a solid measured in square units'), - (7, 'CatalyticActivity', 'Catalytic Activity', 'kat', 'katal', 'a catalytic activity'), - (8, 'DataAmount', 'Data Amount', 'bit', NULL, 'a measure of data amount'), - (9, 'DataRate', 'Data Rate', 'bit/s', 'bit per second', 'the speed of data-transmission'), - (10, 'Dimensionless', 'Dimensionless', NULL, NULL, 'a dimensionless quantity'), - (11, 'Duration', 'Duration', 's', 'second', 'a period of existence or persistence'), - (12, 'DynamicViscosity', 'Dynamic Viscosity', 'Pa·s', 'Pascal-Second', 'the dynamic viscosity'), - (13, 'ElectricCapacitance', 'Electric Capacitance', 'F', 'Farad', 'an electric capacitance'), - (14, 'ElectricCharge', 'Electric Charge', 'C', 'Coulomb', 'an electric charge'), - (15, 'ElectricConductance', 'Electric Conductance', 'S', 'Siemens', 'an electric conductance'), - (16, 'ElectricCurrent', 'Electric Current', 'A', 'Ampere', 'the amount of electric charge flowing past a specified circuit point per unit time'), - (17, 'ElectricInductance', 'Electric Inductance', 'H', 'Henry', 'an electric inductance'), - (18, 'ElectricPotential', 'Electric Potential', 'V', 'Volt', 'an electric potential or electromotive force'), - (19, 'ElectricResistance', 'Electric Resistance', 'Ω', 'Ohm', 'an electric resistance'), - (20, 'Energy', 'Energy', 'J', 'Joule', 'the capacity of a physical system to do work'), - (21, 'Force', 'Force', 'N', 'Newton', 'a quantity that tends to produce an acceleration of a body in the direction of its application'), - (22, 'Frequency', 'Frequency', 'Hz', 'Hertz', 'the number of times a specified phenomenon occurs within a specified interval'), - (23, 'Illuminance', 'Illuminance', 'lx', 'lux', 'an illuminance'), - (24, 'KinematicViscosity', 'Kinematic Viscosity', 'm²/s', NULL, 'the diffusion of momentum'), - (25, 'Length', 'Length', 'm', 'meter', 'the extent of something along its greatest dimension or the extent of space between two objects or places'), - (26, 'LuminousFlux', 'Luminous Flux', 'lm', 'lumen', 'a luminous flux'), - (27, 'LuminousIntensity', 'Luminous Intensity', 'cd', 'candela', 'the luminous flux density per solid angle as measured in a given direction relative to the emitting source'), - (28, 'MagneticFlux', 'Magnetic Flux', 'Wb', 'Weber', 'a magnetic flux'), - (29, 'MagneticFluxDensity', 'Magnetic Flux Density', 'T', 'Tesla', 'a magnetic flux density'), - (30, 'Mass', 'Mass', 'kg', 'kilogram', 'the measure of the quantity of matter that a body or an object contains'), - (31, 'MassFlowRate', 'Mass Flow Rate', 'kg/s', 'kilogram per second', 'the movement of mass per time'), - (32, 'Money', 'Money', NULL, NULL, 'something generally accepted as a medium of exchange, a measure of value, or a means of payment'), - (33, 'Power', 'Power', 'W', 'Watt', 'the rate at which work is done'), - (34, 'Pressure', 'Pressure', 'Pa', 'Pascal', 'a force applied uniformly over a surface'), - (35, 'RadiationDoseAbsorbed', 'Radiation Dose Absorbed', 'Gy', 'Gray', 'the amount of energy deposited per unit of mass'), - (36, 'RadiationDoseEffective', 'Radiation Dose Effective', 'equivalent) dose of radiation received by a human or some other living organism. The system unit for this quantity is Sv', 'or "equivalent" dose of radiation received by a human or some other living organism. The system unit for this quantity is "Sv" Sievert', 'the effective (or "equivalent") dose of radiation received by a human or some other living organism'), - (37, 'RadioactiveActivity', 'Radioactive Activity', 'Bq', 'Becquerel', 'a radioactive activity'), - (38, 'SolidAngle', 'Solid Angle', 'sr', 'steradian', 'the angle formed by three or more planes intersecting at a common point'), - (39, 'Temperature', 'Temperature', 'K', 'Kelvin', 'the degree of hotness or coldness of a body or an environment'), - (40, 'Torque', 'Torque', 'N·m', 'Newton-Meter', 'the moment of a force'), - (41, 'Velocity', 'Velocity', 'm/s', 'meter per second', 'a distance traveled divided by the time of travel'), - (42, 'Volume', 'Volume', 'm³', 'cubic meter', 'the amount of space occupied by a three-dimensional object or region of space, expressed in cubic units'), - (43, 'VolumetricDensity', 'Volumetric Density', 'kg/m³', 'kilogram per cubic meter', 'a mass per unit volume of a substance under specified conditions of pressure and temperature'), - (44, 'VolumetricFlowRate', 'Volumetric Flow Rate', 'm³/s', 'cubic meter per second', 'the volume of fluid passing a point in a system per unit of time'); - -INSERT INTO measurements.quantities ( - id, - name, - label, - unit, - unit_desc, - description -) VALUES - (45, 'Percent', 'Percent', '%', 'percentage', 'a number or ratio expressed as a fraction of 100'), - (46, 'PartsPerMillion', 'Parts per Million', 'ppm', 'parts per million', 'pseudo-units to describe small values of miscellaneous dimensionless quantities that are pure numbers representing a quantity-per-quantity measure in parts per million'), - (47, 'PartsPerBillion', 'Parts per Billion', 'ppb', 'parts per billion', 'pseudo-units to describe small values of miscellaneous dimensionless quantities that are pure numbers representing a quantity-per-quantity measure in parts per billion'); diff --git a/packages/metaschema-modules/Makefile b/packages/metaschema-modules/Makefile index 3e3aac650..83482a999 100644 --- a/packages/metaschema-modules/Makefile +++ b/packages/metaschema-modules/Makefile @@ -1,5 +1,5 @@ EXTENSION = metaschema-modules -DATA = sql/metaschema-modules--0.26.5.sql +DATA = sql/metaschema-modules--0.15.5.sql PG_CONFIG = pg_config PGXS := $(shell $(PG_CONFIG) --pgxs) diff --git a/packages/metaschema-modules/README.md b/packages/metaschema-modules/README.md index 26f08e607..535f67c89 100644 --- a/packages/metaschema-modules/README.md +++ b/packages/metaschema-modules/README.md @@ -223,29 +223,14 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - ## Disclaimer AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. diff --git a/packages/metaschema-modules/__tests__/__snapshots__/modules.test.ts.snap b/packages/metaschema-modules/__tests__/__snapshots__/modules.test.ts.snap deleted file mode 100644 index 3214058ef..000000000 --- a/packages/metaschema-modules/__tests__/__snapshots__/modules.test.ts.snap +++ /dev/null @@ -1,357 +0,0 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`db_meta_modules should have all expected module tables 1`] = ` -{ - "moduleNames": [ - "agent_module", - "billing_module", - "billing_provider_module", - "compute_log_module", - "config_secrets_module", - "config_secrets_org_module", - "config_secrets_user_module", - "connected_accounts_module", - "crypto_addresses_module", - "crypto_auth_module", - "db_usage_module", - "default_ids_module", - "devices_module", - "emails_module", - "events_module", - "function_invocation_module", - "function_module", - "graph_execution_module", - "graph_module", - "hierarchy_module", - "i18n_module", - "identity_providers_module", - "inference_log_module", - "invites_module", - "limits_module", - "membership_types_module", - "memberships_module", - "merkle_store_module", - "namespace_module", - "notifications_module", - "permissions_module", - "phone_numbers_module", - "plans_module", - "profiles_module", - "rate_limit_meters_module", - "rate_limits_module", - "realtime_module", - "rls_module", - "session_secrets_module", - "sessions_module", - "storage_log_module", - "storage_module", - "transfer_log_module", - "user_auth_module", - "user_credentials_module", - "user_settings_module", - "user_state_module", - "users_module", - "webauthn_auth_module", - "webauthn_credentials_module", - ], -} -`; - -exports[`db_meta_modules should verify all module tables exist in metaschema_modules_public schema 1`] = ` -{ - "moduleTablesCount": 50, - "totalTables": 57, -} -`; - -exports[`db_meta_modules should verify emails_module table structure 1`] = ` -{ - "columns": [ - { - "column_default": "uuidv7()", - "column_name": "id", - "data_type": "uuid", - "is_nullable": "NO", - }, - { - "column_default": null, - "column_name": "database_id", - "data_type": "uuid", - "is_nullable": "NO", - }, - { - "column_default": "uuid_nil()", - "column_name": "schema_id", - "data_type": "uuid", - "is_nullable": "NO", - }, - { - "column_default": "uuid_nil()", - "column_name": "private_schema_id", - "data_type": "uuid", - "is_nullable": "NO", - }, - { - "column_default": "uuid_nil()", - "column_name": "table_id", - "data_type": "uuid", - "is_nullable": "NO", - }, - { - "column_default": "uuid_nil()", - "column_name": "owner_table_id", - "data_type": "uuid", - "is_nullable": "NO", - }, - { - "column_default": null, - "column_name": "table_name", - "data_type": "text", - "is_nullable": "NO", - }, - { - "column_default": "'auth'::text", - "column_name": "api_name", - "data_type": "text", - "is_nullable": "YES", - }, - { - "column_default": null, - "column_name": "private_api_name", - "data_type": "text", - "is_nullable": "YES", - }, - ], -} -`; - -exports[`db_meta_modules should verify module table structures have database_id foreign keys 1`] = ` -{ - "constraintCount": 310682, -} -`; - -exports[`db_meta_modules should verify module tables have proper foreign key relationships 1`] = ` -{ - "constraintCount": 459905, - "foreignTables": [ - "database", - "field", - "graph_module", - "merkle_store_module", - "schema", - "table", - ], -} -`; - -exports[`db_meta_modules should verify sessions_module table structure 1`] = ` -{ - "columns": [ - { - "column_default": "uuidv7()", - "column_name": "id", - "data_type": "uuid", - "is_nullable": "NO", - }, - { - "column_default": null, - "column_name": "database_id", - "data_type": "uuid", - "is_nullable": "NO", - }, - { - "column_default": "uuid_nil()", - "column_name": "schema_id", - "data_type": "uuid", - "is_nullable": "NO", - }, - { - "column_default": "uuid_nil()", - "column_name": "sessions_table_id", - "data_type": "uuid", - "is_nullable": "NO", - }, - { - "column_default": "uuid_nil()", - "column_name": "session_credentials_table_id", - "data_type": "uuid", - "is_nullable": "NO", - }, - { - "column_default": "uuid_nil()", - "column_name": "auth_settings_table_id", - "data_type": "uuid", - "is_nullable": "NO", - }, - { - "column_default": "uuid_nil()", - "column_name": "users_table_id", - "data_type": "uuid", - "is_nullable": "NO", - }, - { - "column_default": "'30 days'::interval", - "column_name": "sessions_default_expiration", - "data_type": "interval", - "is_nullable": "NO", - }, - { - "column_default": "'sessions'::text", - "column_name": "sessions_table", - "data_type": "text", - "is_nullable": "NO", - }, - { - "column_default": "'session_credentials'::text", - "column_name": "session_credentials_table", - "data_type": "text", - "is_nullable": "NO", - }, - { - "column_default": "'app_settings_auth'::text", - "column_name": "auth_settings_table", - "data_type": "text", - "is_nullable": "NO", - }, - ], -} -`; - -exports[`db_meta_modules should verify specific module table column defaults 1`] = ` -{ - "sessionsDefaults": [ - { - "column_default": "'app_settings_auth'::text", - "column_name": "auth_settings_table", - }, - { - "column_default": "uuid_nil()", - "column_name": "auth_settings_table_id", - }, - { - "column_default": "uuidv7()", - "column_name": "id", - }, - { - "column_default": "uuid_nil()", - "column_name": "schema_id", - }, - { - "column_default": "'session_credentials'::text", - "column_name": "session_credentials_table", - }, - { - "column_default": "uuid_nil()", - "column_name": "session_credentials_table_id", - }, - { - "column_default": "'30 days'::interval", - "column_name": "sessions_default_expiration", - }, - { - "column_default": "'sessions'::text", - "column_name": "sessions_table", - }, - { - "column_default": "uuid_nil()", - "column_name": "sessions_table_id", - }, - { - "column_default": "uuid_nil()", - "column_name": "users_table_id", - }, - ], - "usersDefaults": [ - { - "column_default": "'auth'::text", - "column_name": "api_name", - }, - { - "column_default": "uuidv7()", - "column_name": "id", - }, - { - "column_default": "uuid_nil()", - "column_name": "schema_id", - }, - { - "column_default": "uuid_nil()", - "column_name": "table_id", - }, - { - "column_default": "'users'::text", - "column_name": "table_name", - }, - { - "column_default": "uuid_nil()", - "column_name": "type_table_id", - }, - { - "column_default": "'role_types'::text", - "column_name": "type_table_name", - }, - ], -} -`; - -exports[`db_meta_modules should verify users_module table structure 1`] = ` -{ - "columns": [ - { - "column_default": "uuidv7()", - "column_name": "id", - "data_type": "uuid", - "is_nullable": "NO", - }, - { - "column_default": null, - "column_name": "database_id", - "data_type": "uuid", - "is_nullable": "NO", - }, - { - "column_default": "uuid_nil()", - "column_name": "schema_id", - "data_type": "uuid", - "is_nullable": "NO", - }, - { - "column_default": "uuid_nil()", - "column_name": "table_id", - "data_type": "uuid", - "is_nullable": "NO", - }, - { - "column_default": "'users'::text", - "column_name": "table_name", - "data_type": "text", - "is_nullable": "NO", - }, - { - "column_default": "uuid_nil()", - "column_name": "type_table_id", - "data_type": "uuid", - "is_nullable": "NO", - }, - { - "column_default": "'role_types'::text", - "column_name": "type_table_name", - "data_type": "text", - "is_nullable": "NO", - }, - { - "column_default": "'auth'::text", - "column_name": "api_name", - "data_type": "text", - "is_nullable": "YES", - }, - { - "column_default": null, - "column_name": "private_api_name", - "data_type": "text", - "is_nullable": "YES", - }, - ], -} -`; diff --git a/packages/metaschema-modules/__tests__/modules.test.ts b/packages/metaschema-modules/__tests__/modules.test.ts index 436110868..05c1b3a81 100644 --- a/packages/metaschema-modules/__tests__/modules.test.ts +++ b/packages/metaschema-modules/__tests__/modules.test.ts @@ -27,6 +27,7 @@ describe('db_meta_modules', () => { 'crypto_auth_module', 'default_ids_module', 'emails_module', + 'config_secrets_module', 'config_secrets_user_module', 'invites_module', 'events_module', @@ -39,6 +40,7 @@ describe('db_meta_modules', () => { 'user_state_module', 'sessions_module', 'user_auth_module', + 'user_credentials_module', 'users_module' ]; @@ -169,7 +171,7 @@ describe('db_meta_modules', () => { } expect(snapshot({ constraintCount: constraints.length })).toMatchSnapshot(); - }, 30000); + }); it('should verify all module tables exist in metaschema_modules_public schema', async () => { const tables = await pg.any(` diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/agent_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/agent_module/table.sql index 777deca25..34c488b34 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/agent_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/agent_module/table.sql @@ -12,6 +12,10 @@ CREATE TABLE metaschema_modules_public.agent_module ( schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + -- Schema name overrides: when set, the trigger uses these instead of hardcoded defaults. + public_schema_name text, + private_schema_name text, + -- Generated table IDs (populated by the generator) thread_table_id uuid NOT NULL DEFAULT uuid_nil(), message_table_id uuid NOT NULL DEFAULT uuid_nil(), diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/billing_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/billing_module/table.sql index 4d2aa0b5c..ad014191a 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/billing_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/billing_module/table.sql @@ -11,6 +11,10 @@ CREATE TABLE metaschema_modules_public.billing_module ( schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + -- Schema name overrides: when set, the trigger uses these instead of hardcoded defaults. + public_schema_name text, + private_schema_name text, + -- Meters table: defines what you track (quota, boolean, credit_pool) meters_table_id uuid NOT NULL DEFAULT uuid_nil(), meters_table_name text NOT NULL DEFAULT '', diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/compute_log_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/compute_log_module/table.sql index cda421e26..0961bfe36 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/compute_log_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/compute_log_module/table.sql @@ -11,6 +11,10 @@ CREATE TABLE metaschema_modules_public.compute_log_module ( schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + -- Schema name overrides: when set, the trigger uses these instead of hardcoded defaults. + public_schema_name text, + private_schema_name text, + -- Compute log table (partitioned by completed_at) compute_log_table_id uuid NOT NULL DEFAULT uuid_nil(), compute_log_table_name text NOT NULL DEFAULT '', diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/config_secrets_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/config_secrets_module/table.sql index 9d3203953..e4f5a408a 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/config_secrets_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/config_secrets_module/table.sql @@ -12,6 +12,10 @@ CREATE TABLE metaschema_modules_public.config_secrets_module ( schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + -- Schema name overrides: when set, the trigger uses these instead of hardcoded defaults. + public_schema_name text, + private_schema_name text, + -- Generated table IDs (populated by the generator) table_id uuid NOT NULL DEFAULT uuid_nil(), config_definitions_table_id uuid NULL DEFAULT NULL, diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/db_usage_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/db_usage_module/table.sql index 9a667fef8..5465b033c 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/db_usage_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/db_usage_module/table.sql @@ -11,6 +11,10 @@ CREATE TABLE metaschema_modules_public.db_usage_module ( schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + -- Schema name overrides: when set, the trigger uses these instead of hardcoded defaults. + public_schema_name text, + private_schema_name text, + -- DB table stats log (partitioned — per-table reads/writes/size from pg_stat_user_tables) table_stats_log_table_id uuid NOT NULL DEFAULT uuid_nil(), table_stats_log_table_name text NOT NULL DEFAULT '', diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/events_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/events_module/table.sql index d363250c3..b3a203263 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/events_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/events_module/table.sql @@ -11,6 +11,10 @@ CREATE TABLE metaschema_modules_public.events_module ( -- schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + + -- Schema name overrides: when set, the trigger uses these instead of hardcoded defaults. + public_schema_name text, + private_schema_name text, -- events_table_id uuid NOT NULL DEFAULT uuid_nil(), diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/function_deployment_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/function_deployment_module/table.sql new file mode 100644 index 000000000..69a3725fc --- /dev/null +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/function_deployment_module/table.sql @@ -0,0 +1,81 @@ +-- Deploy schemas/metaschema_modules_public/tables/function_deployment_module/table to pg + +-- requires: schemas/metaschema_modules_public/schema + +BEGIN; + +CREATE TABLE metaschema_modules_public.function_deployment_module ( + id uuid PRIMARY KEY DEFAULT uuidv7(), + database_id uuid NOT NULL, + + -- Schema references (if uuid_nil, resolved from schema name or default) + schema_id uuid NOT NULL DEFAULT uuid_nil(), + private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + + -- Optional schema name overrides (used when schema IDs are not provided) + public_schema_name text, + private_schema_name text, + + -- Generated table IDs (populated by the generator) + deployments_table_id uuid NOT NULL DEFAULT uuid_nil(), + deployment_events_table_id uuid NOT NULL DEFAULT uuid_nil(), + + -- Table names (input to the generator — bare names without scope prefix). + -- The trigger prepends the scope prefix automatically. + deployments_table_name text NOT NULL DEFAULT 'function_deployments', + deployment_events_table_name text NOT NULL DEFAULT 'function_deployment_events', + + -- API routing (get-or-create: if set, schema is added to this API; if NULL, no API is added) + api_name text, + private_api_name text, + + -- Scope: determines the security level for this module instance. + -- Resolved to a membership_type integer at trigger time via membership_types table. + scope text NOT NULL DEFAULT 'app', + + -- Table name prefix. Auto-derived from scope by the trigger when empty. + -- Override to create multiple module instances at the same scope. + prefix text NOT NULL DEFAULT '', + + -- Entity table for RLS (NULL for app-level deployments, entity table for entity-scoped) + entity_table_id uuid NULL, + + -- FK to function_module: which function definitions table deployments reference + function_module_id uuid NULL, + + -- FK to namespace_module: which namespaces table deployments reference + namespace_module_id uuid NULL, + + -- Configurable security policies (NULL = use defaults based on scope). + -- When provided, replaces the default policy set in apply_function_deployment_security. + -- Accepts a JSON array of policy objects: + -- {"$type": "AuthzEntityMembership", "privileges": ["select", "update"], "data": {...}} + policies jsonb NULL, + + -- Per-table provisions overrides from blueprint config. + -- Keys are table keys (deployments, deployment_events). + -- When a key is present, the module trigger skips default security for that table; + -- secure_table_provision applies the custom grants/policies instead. + provisions jsonb NULL, + + -- Default permissions: permission names auto-granted to new members. + -- NULL uses the module's built-in defaults; explicit array overrides them. + default_permissions text[] DEFAULT NULL, + + -- Constraints + CONSTRAINT function_deployment_module_db_fkey FOREIGN KEY (database_id) REFERENCES metaschema_public.database (id) ON DELETE CASCADE, + CONSTRAINT function_deployment_module_schema_fkey FOREIGN KEY (schema_id) REFERENCES metaschema_public.schema (id) ON DELETE CASCADE, + CONSTRAINT function_deployment_module_private_schema_fkey FOREIGN KEY (private_schema_id) REFERENCES metaschema_public.schema (id) ON DELETE CASCADE, + CONSTRAINT function_deployment_module_deployments_table_fkey FOREIGN KEY (deployments_table_id) REFERENCES metaschema_public.table (id) ON DELETE CASCADE, + CONSTRAINT function_deployment_module_events_table_fkey FOREIGN KEY (deployment_events_table_id) REFERENCES metaschema_public.table (id) ON DELETE CASCADE, + CONSTRAINT function_deployment_module_entity_table_fkey FOREIGN KEY (entity_table_id) REFERENCES metaschema_public.table (id) ON DELETE CASCADE, + CONSTRAINT function_deployment_module_function_module_fkey FOREIGN KEY (function_module_id) REFERENCES metaschema_modules_public.function_module (id) ON DELETE SET NULL, + CONSTRAINT function_deployment_module_namespace_module_fkey FOREIGN KEY (namespace_module_id) REFERENCES metaschema_modules_public.namespace_module (id) ON DELETE SET NULL +); + +CREATE INDEX function_deployment_module_database_id_idx ON metaschema_modules_public.function_deployment_module ( database_id ); + +-- Unique constraint: one function deployment module per database per scope per prefix. +CREATE UNIQUE INDEX function_deployment_module_unique_scope ON metaschema_modules_public.function_deployment_module ( database_id, scope, prefix ); + +COMMIT; diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/function_module/constraints/one_platform_database.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/function_module/constraints/one_platform_database.sql new file mode 100644 index 000000000..638f01a50 --- /dev/null +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/function_module/constraints/one_platform_database.sql @@ -0,0 +1,18 @@ +-- Deploy schemas/metaschema_modules_public/tables/function_module/constraints/one_platform_database to pg + +-- requires: schemas/metaschema_modules_public/tables/function_module/table + +BEGIN; + +-- No-op migration: platform database uniqueness is enforced at the application +-- layer by resolveDatabaseId(), which queries: +-- SELECT database_id FROM function_module WHERE scope = 'platform' LIMIT 1 +-- +-- A hard UNIQUE constraint on ((true)) WHERE scope='platform' would break +-- test isolation (each test database independently provisions platform-scope +-- modules in the same shared table). The existing unique index +-- (database_id, scope, prefix) already prevents duplicates within a single +-- database. Cross-database uniqueness (only one platform DB in production) +-- is enforced operationally and validated at compute worker startup. + +COMMIT; diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/graph_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/graph_module/table.sql index 1eaf07509..7e60af1e8 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/graph_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/graph_module/table.sql @@ -27,9 +27,8 @@ CREATE TABLE metaschema_modules_public.graph_module ( merkle_store_module_id uuid NOT NULL, -- Generated table IDs (populated by BEFORE INSERT trigger) + -- Only the graphs (definition) table — execution tables live in graph_execution_module graphs_table_id uuid NOT NULL DEFAULT uuid_nil(), - executions_table_id uuid NOT NULL DEFAULT uuid_nil(), - outputs_table_id uuid NOT NULL DEFAULT uuid_nil(), -- API routing (get-or-create: if set, schema is added to this API; if NULL, no API is added) api_name text, @@ -44,7 +43,7 @@ CREATE TABLE metaschema_modules_public.graph_module ( policies jsonb NULL, -- Per-table provisions overrides from blueprint config. - -- Keys are table keys (graphs, executions, outputs). + -- Keys are table keys (graphs). -- When a key is present, the module trigger skips default security for that table; -- secure_table_provision applies the custom grants/policies instead. provisions jsonb NULL, @@ -62,8 +61,6 @@ CREATE TABLE metaschema_modules_public.graph_module ( CONSTRAINT private_schema_fkey FOREIGN KEY (private_schema_id) REFERENCES metaschema_public.schema (id) ON DELETE CASCADE, CONSTRAINT merkle_store_fkey FOREIGN KEY (merkle_store_module_id) REFERENCES metaschema_modules_public.merkle_store_module (id) ON DELETE CASCADE, CONSTRAINT graphs_table_fkey FOREIGN KEY (graphs_table_id) REFERENCES metaschema_public.table (id) ON DELETE CASCADE, - CONSTRAINT executions_table_fkey FOREIGN KEY (executions_table_id) REFERENCES metaschema_public.table (id) ON DELETE CASCADE, - CONSTRAINT outputs_table_fkey FOREIGN KEY (outputs_table_id) REFERENCES metaschema_public.table (id) ON DELETE CASCADE, CONSTRAINT graph_module_entity_table_fkey FOREIGN KEY (entity_table_id) REFERENCES metaschema_public.table (id) ON DELETE CASCADE, -- Only one graph module per database + merkle store combination diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/hierarchy_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/hierarchy_module/table.sql index d85ad586f..6a35647c9 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/hierarchy_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/hierarchy_module/table.sql @@ -33,7 +33,7 @@ CREATE TABLE metaschema_modules_public.hierarchy_module ( prefix text NOT NULL DEFAULT '', -- Resolved names for RLS parser lookups - private_schema_name text NOT NULL DEFAULT '', + private_schema_name text NOT NULL DEFAULT '', sprt_table_name text NOT NULL DEFAULT '', -- Function names for helper functions diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/identity_providers_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/identity_providers_module/table.sql index ae017f4df..411158aec 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/identity_providers_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/identity_providers_module/table.sql @@ -11,6 +11,10 @@ CREATE TABLE metaschema_modules_public.identity_providers_module ( schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + -- Schema name overrides: when set, the trigger uses these instead of hardcoded defaults. + public_schema_name text, + private_schema_name text, + table_id uuid NOT NULL DEFAULT uuid_nil(), table_name text NOT NULL DEFAULT 'identity_providers', diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/inference_log_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/inference_log_module/table.sql index 8c94221b2..5f2dc9647 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/inference_log_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/inference_log_module/table.sql @@ -11,6 +11,10 @@ CREATE TABLE metaschema_modules_public.inference_log_module ( schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + -- Schema name overrides: when set, the trigger uses these instead of hardcoded defaults. + public_schema_name text, + private_schema_name text, + -- Inference log table (partitioned by created_at) inference_log_table_id uuid NOT NULL DEFAULT uuid_nil(), inference_log_table_name text NOT NULL DEFAULT '', diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/invites_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/invites_module/table.sql index 8a1a1297e..973712072 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/invites_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/invites_module/table.sql @@ -11,6 +11,10 @@ CREATE TABLE metaschema_modules_public.invites_module ( schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + -- Schema name overrides: when set, the trigger uses these instead of hardcoded defaults. + public_schema_name text, + private_schema_name text, + emails_table_id uuid NOT NULL DEFAULT uuid_nil(), users_table_id uuid NOT NULL DEFAULT uuid_nil(), diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/limits_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/limits_module/table.sql index bde283791..30fc89398 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/limits_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/limits_module/table.sql @@ -10,6 +10,10 @@ CREATE TABLE metaschema_modules_public.limits_module ( -- schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + + -- Schema name overrides: when set, the trigger uses these instead of hardcoded defaults. + public_schema_name text, + private_schema_name text, --- table_id uuid NOT NULL DEFAULT uuid_nil(), table_name text NOT NULL DEFAULT '', diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/memberships_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/memberships_module/table.sql index fa9c6eee1..b77af51ec 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/memberships_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/memberships_module/table.sql @@ -11,6 +11,10 @@ CREATE TABLE metaschema_modules_public.memberships_module ( schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + -- Schema name overrides: when set, the trigger uses these instead of hardcoded defaults. + public_schema_name text, + private_schema_name text, + memberships_table_id uuid NOT NULL DEFAULT uuid_nil(), memberships_table_name text NOT NULL DEFAULT '', diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/merkle_store_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/merkle_store_module/table.sql index e3dda66c1..ecfb275be 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/merkle_store_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/merkle_store_module/table.sql @@ -39,6 +39,11 @@ CREATE TABLE metaschema_modules_public.merkle_store_module ( -- any other value is used as-is. Tables always keep their prefix regardless of this setting. function_prefix text DEFAULT NULL, + -- Permission key for SELECT gating: when set, all 4 merkle tables require this + -- permission for SELECT at platform/app scope (e.g., 'manage_graphs'). + -- NULL means the caller intentionally wants open membership SELECT. + permission_key text DEFAULT NULL, + -- Timestamps created_at timestamptz NOT NULL DEFAULT now(), diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/namespace_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/namespace_module/table.sql index 2015322a5..1b8a956f1 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/namespace_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/namespace_module/table.sql @@ -39,6 +39,12 @@ CREATE TABLE metaschema_modules_public.namespace_module ( -- Entity table for RLS (NULL for app-level namespaces, entity table for entity-scoped namespaces) entity_table_id uuid NULL, + -- Platform namespace table reference (for cross-scope mirror trigger). + -- When scope != 'platform', the insert trigger resolves this automatically + -- from the platform-scope namespace_module row. + -- NULL means no mirror trigger (platform scope, or no platform module exists). + platform_namespaces_table_id uuid NULL, + -- Configurable security policies (NULL = use defaults based on scope). -- When provided, replaces the default policy set in apply_namespace_security. -- Accepts a JSON array of policy objects: diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/notifications_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/notifications_module/table.sql index c0145591e..59f7886e0 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/notifications_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/notifications_module/table.sql @@ -11,6 +11,10 @@ CREATE TABLE metaschema_modules_public.notifications_module ( schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + -- Schema name overrides: when set, the trigger uses these instead of hardcoded defaults. + public_schema_name text, + private_schema_name text, + notifications_table_id uuid NOT NULL DEFAULT uuid_nil(), read_state_table_id uuid NOT NULL DEFAULT uuid_nil(), -- Feature-gated tables: NULL when the corresponding has_* flag is off. diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/permissions_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/permissions_module/table.sql index 9017fe425..3ee65a703 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/permissions_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/permissions_module/table.sql @@ -10,6 +10,10 @@ CREATE TABLE metaschema_modules_public.permissions_module ( -- schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + + -- Schema name overrides: when set, the trigger uses these instead of hardcoded defaults. + public_schema_name text, + private_schema_name text, table_id uuid NOT NULL DEFAULT uuid_nil(), table_name text NOT NULL DEFAULT '', -- diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/plans_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/plans_module/table.sql index 3f51ff9ab..80b9e921b 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/plans_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/plans_module/table.sql @@ -11,6 +11,10 @@ CREATE TABLE metaschema_modules_public.plans_module ( schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + -- Schema name overrides: when set, the trigger uses these instead of hardcoded defaults. + public_schema_name text, + private_schema_name text, + -- Plans table: defines plan tiers (Free, Pro, Enterprise) plans_table_id uuid NOT NULL DEFAULT uuid_nil(), plans_table_name text NOT NULL DEFAULT '', diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/profiles_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/profiles_module/table.sql index 13728055b..2e2fe180c 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/profiles_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/profiles_module/table.sql @@ -10,6 +10,10 @@ CREATE TABLE metaschema_modules_public.profiles_module ( -- schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + + -- Schema name overrides: when set, the trigger uses these instead of hardcoded defaults. + public_schema_name text, + private_schema_name text, -- Main profiles table table_id uuid NOT NULL DEFAULT uuid_nil(), diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/rate_limit_meters_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/rate_limit_meters_module/table.sql index 984e7f479..b9a9ec463 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/rate_limit_meters_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/rate_limit_meters_module/table.sql @@ -13,6 +13,10 @@ CREATE TABLE metaschema_modules_public.rate_limit_meters_module ( -- Private schema: rate_limit_state table, check_rate_limit function (internal) private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + -- Schema name overrides: when set, the trigger uses these instead of hardcoded defaults. + public_schema_name text, + private_schema_name text, + -- State table: sliding window tracking per entity/actor/meter/window (private) rate_limit_state_table_id uuid NOT NULL DEFAULT uuid_nil(), rate_limit_state_table_name text NOT NULL DEFAULT '', diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/storage_log_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/storage_log_module/table.sql index e11ecd679..c7ac65604 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/storage_log_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/storage_log_module/table.sql @@ -11,6 +11,10 @@ CREATE TABLE metaschema_modules_public.storage_log_module ( schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + -- Schema name overrides: when set, the trigger uses these instead of hardcoded defaults. + public_schema_name text, + private_schema_name text, + -- Storage log table (partitioned by snapshot_at) storage_log_table_id uuid NOT NULL DEFAULT uuid_nil(), storage_log_table_name text NOT NULL DEFAULT '', diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/storage_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/storage_module/table.sql index 52c907caa..4ae67363c 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/storage_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/storage_module/table.sql @@ -12,6 +12,11 @@ CREATE TABLE metaschema_modules_public.storage_module ( schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + -- Schema name overrides: when set, the trigger uses these instead of hardcoded defaults. + -- Enables putting storage tables into a dedicated schema (e.g. per-entity isolation). + public_schema_name text, + private_schema_name text, + -- Generated table IDs (populated by the generator) buckets_table_id uuid NOT NULL DEFAULT uuid_nil(), files_table_id uuid NOT NULL DEFAULT uuid_nil(), @@ -92,7 +97,8 @@ CREATE TABLE metaschema_modules_public.storage_module ( -- Constraints -- API routing (configurable per-module) - api_name text DEFAULT 'admin', + -- NULL = no automatic API routing (caller must route explicitly or use entity_type_provision). + api_name text DEFAULT NULL, private_api_name text DEFAULT NULL, CONSTRAINT db_fkey FOREIGN KEY (database_id) REFERENCES metaschema_public.database (id) ON DELETE CASCADE, diff --git a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/transfer_log_module/table.sql b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/transfer_log_module/table.sql index 05d1a9c74..c75ec9b89 100644 --- a/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/transfer_log_module/table.sql +++ b/packages/metaschema-modules/deploy/schemas/metaschema_modules_public/tables/transfer_log_module/table.sql @@ -11,6 +11,10 @@ CREATE TABLE metaschema_modules_public.transfer_log_module ( schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + -- Schema name overrides: when set, the trigger uses these instead of hardcoded defaults. + public_schema_name text, + private_schema_name text, + -- Transfer log table (partitioned by created_at) transfer_log_table_id uuid NOT NULL DEFAULT uuid_nil(), transfer_log_table_name text NOT NULL DEFAULT '', diff --git a/packages/metaschema-modules/metaschema-modules.control b/packages/metaschema-modules/metaschema-modules.control index 37d335ecc..e0ea0b88d 100644 --- a/packages/metaschema-modules/metaschema-modules.control +++ b/packages/metaschema-modules/metaschema-modules.control @@ -1,6 +1,6 @@ # metaschema-modules extension comment = 'metaschema-modules extension' -default_version = '0.26.5' +default_version = '0.15.5' module_pathname = '$libdir/metaschema-modules' requires = 'plpgsql,uuid-ossp,metaschema-schema,services,pgpm-verify' relocatable = false diff --git a/packages/metaschema-modules/package.json b/packages/metaschema-modules/package.json index d07b1ae67..395a17b6b 100644 --- a/packages/metaschema-modules/package.json +++ b/packages/metaschema-modules/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/metaschema-modules", - "version": "0.28.3", + "version": "0.15.5", "description": "Module metadata handling and dependency tracking", "author": "Dan Lynch ", "contributors": [ @@ -25,7 +25,7 @@ "@pgpm/verify": "workspace:*" }, "devDependencies": { - "pgpm": "^4.23.2" + "pgpm": "^4.28.7" }, "repository": { "type": "git", @@ -35,4 +35,4 @@ "bugs": { "url": "https://github.com/constructive-io/pgpm-modules/issues" } -} +} \ No newline at end of file diff --git a/packages/metaschema-modules/pgpm.plan b/packages/metaschema-modules/pgpm.plan index cd4e3b616..4c5513041 100644 --- a/packages/metaschema-modules/pgpm.plan +++ b/packages/metaschema-modules/pgpm.plan @@ -58,6 +58,7 @@ schemas/metaschema_modules_public/tables/db_usage_module/table [schemas/metasche schemas/metaschema_modules_public/tables/agent_module/table [schemas/metaschema_modules_public/schema] 2026-05-12T23:01:00Z devin # add agent_module config table for AI agent conversation threads, messages, and tasks schemas/metaschema_modules_public/tables/merkle_store_module/table [schemas/metaschema_modules_public/schema] 2026-05-21T00:00:00Z devin # add merkle_store_module config table for content-addressed Merkle object stores schemas/metaschema_modules_public/tables/graph_module/table [schemas/metaschema_modules_public/schema schemas/metaschema_modules_public/tables/merkle_store_module/table] 2026-05-21T01:00:00Z devin # add graph_module config table for FBP graph utilities on top of merkle store +schemas/metaschema_modules_public/tables/graph_execution_module/table [schemas/metaschema_modules_public/schema schemas/metaschema_modules_public/tables/graph_module/table] 2026-06-12T00:00:00Z devin # add graph_execution_module config table for partitioned execution state + merkle tree time-travel debugging schemas/metaschema_modules_public/tables/namespace_module/table [schemas/metaschema_modules_public/schema] 2026-05-21T02:00:00Z devin # add namespace_module config table for entity-aware namespace provisioning schemas/metaschema_modules_public/tables/function_module/table [schemas/metaschema_modules_public/schema] 2026-05-21T03:00:00Z devin # add function_module config table for entity-aware function definitions schemas/metaschema_modules_public/tables/function_invocation_module/table [schemas/metaschema_modules_public/schema] 2026-06-08T00:00:00Z devin # add function_invocation_module config table for entity-scoped invocations and execution logs @@ -66,4 +67,5 @@ schemas/metaschema_modules_public/tables/user_credentials_module/table [schemas/ schemas/metaschema_modules_public/tables/user_settings_module/table [schemas/metaschema_modules_public/schema] 2026-05-28T00:00:00Z devin # add user_settings_module for extensible per-user preferences (1:1 with users) schemas/metaschema_modules_public/tables/i18n_module/table [schemas/metaschema_modules_public/schema] 2026-05-28T00:00:00Z devin # add i18n_module config table for internationalization settings -schemas/metaschema_modules_public/tables/graph_execution_module/table [schemas/metaschema_modules_public/schema schemas/metaschema_modules_public/tables/graph_module/table] 2026-06-12T00:00:00Z devin # add graph_execution_module config table for partitioned execution state + merkle tree time-travel debugging +schemas/metaschema_modules_public/tables/function_deployment_module/table [schemas/metaschema_modules_public/schema schemas/metaschema_modules_public/tables/function_module/table schemas/metaschema_modules_public/tables/namespace_module/table] 2026-06-11T06:00:00Z devin # add function_deployment_module config table for function-to-namespace deployment binding +schemas/metaschema_modules_public/tables/function_module/constraints/one_platform_database [schemas/metaschema_modules_public/tables/function_module/table] 2026-06-11T08:00:00Z devin # enforce at most one platform-scope function_module (unambiguous resolveDatabaseId) diff --git a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/agent_module/table.sql b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/agent_module/table.sql deleted file mode 100644 index 28c795254..000000000 --- a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/agent_module/table.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/metaschema_modules_public/tables/agent_module/table from pg - -BEGIN; - -DROP TABLE metaschema_modules_public.agent_module; - -COMMIT; diff --git a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/config_secrets_module/table.sql b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/config_secrets_module/table.sql index 4a00859ea..137e9ced2 100644 --- a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/config_secrets_module/table.sql +++ b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/config_secrets_module/table.sql @@ -2,6 +2,6 @@ BEGIN; -DROP TABLE IF EXISTS metaschema_modules_public.config_secrets_module; +DROP TABLE metaschema_modules_public.config_secrets_module; COMMIT; diff --git a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/config_secrets_org_module/table.sql b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/config_secrets_org_module/table.sql deleted file mode 100644 index d16a1759a..000000000 --- a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/config_secrets_org_module/table.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/metaschema_modules_public/tables/config_secrets_org_module/table from pg - -BEGIN; - -DROP TABLE metaschema_modules_public.config_secrets_org_module; - -COMMIT; diff --git a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/entity_type_provision/table.sql b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/entity_type_provision/table.sql deleted file mode 100644 index 4af431276..000000000 --- a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/entity_type_provision/table.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/metaschema_modules_public/tables/entity_type_provision/table from pg - -BEGIN; - -DROP TABLE metaschema_modules_public.entity_type_provision; - -COMMIT; diff --git a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/function_deployment_module/table.sql b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/function_deployment_module/table.sql new file mode 100644 index 000000000..68b2bfa7e --- /dev/null +++ b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/function_deployment_module/table.sql @@ -0,0 +1,7 @@ +-- Revert schemas/metaschema_modules_public/tables/function_deployment_module/table from pg + +BEGIN; + +DROP TABLE IF EXISTS metaschema_modules_public.function_deployment_module; + +COMMIT; diff --git a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/function_module/constraints/one_platform_database.sql b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/function_module/constraints/one_platform_database.sql new file mode 100644 index 000000000..15c0fa3fc --- /dev/null +++ b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/function_module/constraints/one_platform_database.sql @@ -0,0 +1,7 @@ +-- Revert schemas/metaschema_modules_public/tables/function_module/constraints/one_platform_database from pg + +BEGIN; + +-- No-op: nothing to revert (deploy was a no-op documentation migration) + +COMMIT; diff --git a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/graph_module/table.sql b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/graph_module/table.sql deleted file mode 100644 index 735fc8f55..000000000 --- a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/graph_module/table.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/metaschema_modules_public/tables/graph_module/table from pg - -BEGIN; - -DROP TABLE metaschema_modules_public.graph_module; - -COMMIT; diff --git a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/merkle_store_module/table.sql b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/merkle_store_module/table.sql deleted file mode 100644 index 34afce6ff..000000000 --- a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/merkle_store_module/table.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/metaschema_modules_public/tables/merkle_store_module/table from pg - -BEGIN; - -DROP TABLE metaschema_modules_public.merkle_store_module; - -COMMIT; diff --git a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/session_secrets_module/table.sql b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/session_secrets_module/table.sql deleted file mode 100644 index fbb4553b6..000000000 --- a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/session_secrets_module/table.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/metaschema_modules_public/tables/session_secrets_module/table from pg - -BEGIN; - -DROP TABLE metaschema_modules_public.session_secrets_module; - -COMMIT; diff --git a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/user_credentials_module/table.sql b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/user_credentials_module/table.sql index bca115ea2..c7ef58a99 100644 --- a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/user_credentials_module/table.sql +++ b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/user_credentials_module/table.sql @@ -2,6 +2,6 @@ BEGIN; -DROP TABLE IF EXISTS metaschema_modules_public.user_credentials_module; +DROP TABLE metaschema_modules_public.user_credentials_module; COMMIT; diff --git a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/user_settings_module/table.sql b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/user_settings_module/table.sql index 95138ae62..5fc3cb37a 100644 --- a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/user_settings_module/table.sql +++ b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/user_settings_module/table.sql @@ -2,6 +2,6 @@ BEGIN; -DROP TABLE IF EXISTS metaschema_modules_public.user_settings_module; +DROP TABLE metaschema_modules_public.user_settings_module; COMMIT; diff --git a/packages/metaschema-modules/sql/metaschema-modules--0.26.5.sql b/packages/metaschema-modules/sql/metaschema-modules--0.15.5.sql similarity index 90% rename from packages/metaschema-modules/sql/metaschema-modules--0.26.5.sql rename to packages/metaschema-modules/sql/metaschema-modules--0.15.5.sql index 6a0eadb93..eb0a9bafd 100644 --- a/packages/metaschema-modules/sql/metaschema-modules--0.26.5.sql +++ b/packages/metaschema-modules/sql/metaschema-modules--0.15.5.sql @@ -39,11 +39,11 @@ CREATE TABLE metaschema_modules_public.connected_accounts_module ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT owner_table_fkey FOREIGN KEY(owner_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT schema_fkey FOREIGN KEY(schema_id) @@ -74,11 +74,11 @@ CREATE TABLE metaschema_modules_public.crypto_addresses_module ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT owner_table_fkey FOREIGN KEY(owner_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT schema_fkey FOREIGN KEY(schema_id) @@ -113,19 +113,19 @@ CREATE TABLE metaschema_modules_public.crypto_auth_module ( ON DELETE CASCADE, CONSTRAINT secrets_table_fkey FOREIGN KEY(secrets_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT users_table_fkey FOREIGN KEY(users_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT sessions_table_fkey FOREIGN KEY(sessions_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT session_credentials_table_fkey FOREIGN KEY(session_credentials_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT schema_fkey FOREIGN KEY(schema_id) @@ -165,11 +165,11 @@ CREATE TABLE metaschema_modules_public.denormalized_table_field ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT ref_table_fkey FOREIGN KEY(ref_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT field_fkey FOREIGN KEY(field_id) @@ -199,11 +199,11 @@ CREATE TABLE metaschema_modules_public.emails_module ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT owner_table_fkey FOREIGN KEY(owner_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT schema_fkey FOREIGN KEY(schema_id) @@ -236,11 +236,11 @@ CREATE TABLE metaschema_modules_public.config_secrets_user_module ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT config_defs_table_fkey FOREIGN KEY(config_definitions_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -251,6 +251,8 @@ CREATE TABLE metaschema_modules_public.invites_module ( database_id uuid NOT NULL, schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + public_schema_name text, + private_schema_name text, emails_table_id uuid NOT NULL DEFAULT uuid_nil(), users_table_id uuid NOT NULL DEFAULT uuid_nil(), invites_table_id uuid NOT NULL DEFAULT uuid_nil(), @@ -269,23 +271,23 @@ CREATE TABLE metaschema_modules_public.invites_module ( ON DELETE CASCADE, CONSTRAINT invites_table_fkey FOREIGN KEY(invites_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT emails_table_fkey FOREIGN KEY(emails_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT users_table_fkey FOREIGN KEY(users_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT entity_table_fkey FOREIGN KEY(entity_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT claimed_invites_table_fkey FOREIGN KEY(claimed_invites_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT schema_fkey FOREIGN KEY(schema_id) @@ -306,6 +308,8 @@ CREATE TABLE metaschema_modules_public.events_module ( database_id uuid NOT NULL, schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + public_schema_name text, + private_schema_name text, events_table_id uuid NOT NULL DEFAULT uuid_nil(), events_table_name text NOT NULL DEFAULT '', event_aggregates_table_id uuid NOT NULL DEFAULT uuid_nil(), @@ -334,7 +338,7 @@ CREATE TABLE metaschema_modules_public.events_module ( tg_check_achievements text NOT NULL DEFAULT '', grant_achievement text NOT NULL DEFAULT '', tg_achievement_reward text NOT NULL DEFAULT '', - "interval" text NOT NULL DEFAULT '1 month', + interval text NOT NULL DEFAULT '1 month', retention text DEFAULT '12 months', premake int NOT NULL DEFAULT 2, scope text NOT NULL DEFAULT 'app', @@ -358,39 +362,39 @@ CREATE TABLE metaschema_modules_public.events_module ( ON DELETE CASCADE, CONSTRAINT events_table_fkey FOREIGN KEY(events_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT event_aggregates_table_fkey FOREIGN KEY(event_aggregates_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT event_types_table_fkey FOREIGN KEY(event_types_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT levels_table_fkey FOREIGN KEY(levels_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT level_requirements_table_fkey FOREIGN KEY(level_requirements_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT level_grants_table_fkey FOREIGN KEY(level_grants_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT achievement_rewards_table_fkey FOREIGN KEY(achievement_rewards_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT entity_table_fkey FOREIGN KEY(entity_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT actor_table_fkey FOREIGN KEY(actor_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -401,6 +405,8 @@ CREATE TABLE metaschema_modules_public.limits_module ( database_id uuid NOT NULL, schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + public_schema_name text, + private_schema_name text, table_id uuid NOT NULL DEFAULT uuid_nil(), table_name text NOT NULL DEFAULT '', default_table_id uuid NOT NULL DEFAULT uuid_nil(), @@ -445,59 +451,59 @@ CREATE TABLE metaschema_modules_public.limits_module ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT default_table_fkey FOREIGN KEY(default_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT entity_table_fkey FOREIGN KEY(entity_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT actor_table_fkey FOREIGN KEY(actor_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT aggregate_table_fkey FOREIGN KEY(aggregate_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT limit_credits_table_fkey FOREIGN KEY(limit_credits_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT events_table_fkey FOREIGN KEY(events_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT credit_codes_table_fkey FOREIGN KEY(credit_codes_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT credit_code_items_table_fkey FOREIGN KEY(credit_code_items_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT credit_redemptions_table_fkey FOREIGN KEY(credit_redemptions_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT limit_caps_table_fkey FOREIGN KEY(limit_caps_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT limit_caps_defaults_table_fkey FOREIGN KEY(limit_caps_defaults_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT limit_warnings_table_fkey FOREIGN KEY(limit_warnings_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT limit_warning_state_table_fkey FOREIGN KEY(limit_warning_state_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -519,7 +525,7 @@ CREATE TABLE metaschema_modules_public.membership_types_module ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -530,6 +536,8 @@ CREATE TABLE metaschema_modules_public.memberships_module ( database_id uuid NOT NULL, schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + public_schema_name text, + private_schema_name text, memberships_table_id uuid NOT NULL DEFAULT uuid_nil(), memberships_table_name text NOT NULL DEFAULT '', members_table_id uuid NOT NULL DEFAULT uuid_nil(), @@ -579,31 +587,31 @@ CREATE TABLE metaschema_modules_public.memberships_module ( ON DELETE CASCADE, CONSTRAINT memberships_table_fkey FOREIGN KEY(memberships_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT membership_defaults_table_fkey FOREIGN KEY(membership_defaults_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT membership_settings_table_fkey FOREIGN KEY(membership_settings_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT members_table_fkey FOREIGN KEY(members_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT grants_table_fkey FOREIGN KEY(grants_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT sprt_table_fkey FOREIGN KEY(sprt_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT entity_table_fkey FOREIGN KEY(entity_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT entity_table_owner_fkey FOREIGN KEY(entity_table_owner_id) @@ -611,23 +619,23 @@ CREATE TABLE metaschema_modules_public.memberships_module ( ON DELETE CASCADE, CONSTRAINT actor_table_fkey FOREIGN KEY(actor_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT limits_table_fkey FOREIGN KEY(limits_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT default_limits_table_fkey FOREIGN KEY(default_limits_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT permissions_table_fkey FOREIGN KEY(permissions_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT default_permissions_table_fkey FOREIGN KEY(default_permissions_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT memberships_module_unique UNIQUE (database_id, scope, prefix) @@ -640,6 +648,8 @@ CREATE TABLE metaschema_modules_public.permissions_module ( database_id uuid NOT NULL, schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + public_schema_name text, + private_schema_name text, table_id uuid NOT NULL DEFAULT uuid_nil(), table_name text NOT NULL DEFAULT '', default_table_id uuid NOT NULL DEFAULT uuid_nil(), @@ -669,19 +679,19 @@ CREATE TABLE metaschema_modules_public.permissions_module ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT default_table_fkey FOREIGN KEY(default_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT entity_table_fkey FOREIGN KEY(entity_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT actor_table_fkey FOREIGN KEY(actor_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -703,11 +713,11 @@ CREATE TABLE metaschema_modules_public.phone_numbers_module ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT owner_table_fkey FOREIGN KEY(owner_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT schema_fkey FOREIGN KEY(schema_id) @@ -726,6 +736,8 @@ CREATE TABLE metaschema_modules_public.profiles_module ( database_id uuid NOT NULL, schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + public_schema_name text, + private_schema_name text, table_id uuid NOT NULL DEFAULT uuid_nil(), table_name text NOT NULL DEFAULT '', profile_permissions_table_id uuid NOT NULL DEFAULT uuid_nil(), @@ -758,39 +770,39 @@ CREATE TABLE metaschema_modules_public.profiles_module ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT profile_permissions_table_fkey FOREIGN KEY(profile_permissions_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT profile_grants_table_fkey FOREIGN KEY(profile_grants_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT profile_definition_grants_table_fkey FOREIGN KEY(profile_definition_grants_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT profile_templates_table_fkey FOREIGN KEY(profile_templates_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT entity_table_fkey FOREIGN KEY(entity_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT actor_table_fkey FOREIGN KEY(actor_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT permissions_table_fkey FOREIGN KEY(permissions_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT memberships_table_fkey FOREIGN KEY(memberships_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT profiles_module_unique UNIQUE (database_id, scope, prefix) @@ -818,15 +830,15 @@ CREATE TABLE metaschema_modules_public.rls_module ( ON DELETE CASCADE, CONSTRAINT session_credentials_table_fkey FOREIGN KEY(session_credentials_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT sessions_table_fkey FOREIGN KEY(sessions_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT users_table_fkey FOREIGN KEY(users_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT schema_fkey FOREIGN KEY(schema_id) @@ -866,7 +878,7 @@ CREATE TABLE metaschema_modules_public.user_state_module ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -894,19 +906,19 @@ CREATE TABLE metaschema_modules_public.sessions_module ( ON DELETE CASCADE, CONSTRAINT sessions_table_fkey FOREIGN KEY(sessions_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT session_credentials_table_fkey FOREIGN KEY(session_credentials_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT auth_settings_table_fkey FOREIGN KEY(auth_settings_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT users_table_fkey FOREIGN KEY(users_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -957,27 +969,27 @@ CREATE TABLE metaschema_modules_public.user_auth_module ( ON DELETE CASCADE, CONSTRAINT email_table_fkey FOREIGN KEY(emails_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT users_table_fkey FOREIGN KEY(users_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT secrets_table_fkey FOREIGN KEY(secrets_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT encrypted_table_fkey FOREIGN KEY(encrypted_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT sessions_table_fkey FOREIGN KEY(sessions_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT session_credentials_table_fkey FOREIGN KEY(session_credentials_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -1015,11 +1027,11 @@ CREATE TABLE metaschema_modules_public.users_module ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT type_table_fkey FOREIGN KEY(type_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -1062,23 +1074,23 @@ CREATE TABLE metaschema_modules_public.hierarchy_module ( ON DELETE CASCADE, CONSTRAINT chart_edges_table_fkey FOREIGN KEY(chart_edges_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT hierarchy_sprt_table_fkey FOREIGN KEY(hierarchy_sprt_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT chart_edge_grants_table_fkey FOREIGN KEY(chart_edge_grants_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT entity_table_fkey FOREIGN KEY(entity_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT users_table_fkey FOREIGN KEY(users_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT hierarchy_module_database_unique UNIQUE (database_id) @@ -1104,7 +1116,7 @@ CREATE TABLE metaschema_modules_public.secure_table_provision ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT schema_fkey FOREIGN KEY(schema_id) @@ -1171,11 +1183,11 @@ CREATE TABLE metaschema_modules_public.relation_provision ( ON DELETE CASCADE, CONSTRAINT source_table_fkey FOREIGN KEY(source_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT target_table_fkey FOREIGN KEY(target_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -1493,6 +1505,8 @@ CREATE TABLE metaschema_modules_public.storage_module ( database_id uuid NOT NULL, schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + public_schema_name text, + private_schema_name text, buckets_table_id uuid NOT NULL DEFAULT uuid_nil(), files_table_id uuid NOT NULL DEFAULT uuid_nil(), buckets_table_name text NOT NULL DEFAULT 'buckets', @@ -1524,7 +1538,7 @@ CREATE TABLE metaschema_modules_public.storage_module ( confirm_upload_delay interval NOT NULL DEFAULT '30 seconds', file_events_table_id uuid NULL DEFAULT NULL, default_permissions text[] DEFAULT NULL, - api_name text DEFAULT 'admin', + api_name text DEFAULT NULL, private_api_name text DEFAULT NULL, CONSTRAINT db_fkey FOREIGN KEY(database_id) @@ -1540,23 +1554,23 @@ CREATE TABLE metaschema_modules_public.storage_module ( ON DELETE CASCADE, CONSTRAINT buckets_table_fkey FOREIGN KEY(buckets_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT files_table_fkey FOREIGN KEY(files_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT entity_table_fkey FOREIGN KEY(entity_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT path_shares_table_fkey FOREIGN KEY(path_shares_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT file_events_table_fkey FOREIGN KEY(file_events_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -1836,15 +1850,15 @@ CREATE TABLE metaschema_modules_public.rate_limits_module ( ON DELETE CASCADE, CONSTRAINT rate_limit_settings_table_fkey FOREIGN KEY(rate_limit_settings_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT ip_rate_limits_table_fkey FOREIGN KEY(ip_rate_limits_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT rate_limits_table_fkey FOREIGN KEY(rate_limits_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT rate_limits_module_database_id_uniq UNIQUE (database_id) @@ -1876,11 +1890,11 @@ CREATE TABLE metaschema_modules_public.devices_module ( ON DELETE CASCADE, CONSTRAINT user_devices_table_fkey FOREIGN KEY(user_devices_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT device_settings_table_fkey FOREIGN KEY(device_settings_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT devices_module_database_id_uniq UNIQUE (database_id) @@ -1909,11 +1923,11 @@ CREATE TABLE metaschema_modules_public.session_secrets_module ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT sessions_table_fkey FOREIGN KEY(sessions_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -1945,11 +1959,11 @@ CREATE TABLE metaschema_modules_public.webauthn_credentials_module ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT owner_table_fkey FOREIGN KEY(owner_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT schema_fkey FOREIGN KEY(schema_id) @@ -1994,27 +2008,27 @@ CREATE TABLE metaschema_modules_public.webauthn_auth_module ( ON DELETE CASCADE, CONSTRAINT users_table_fkey FOREIGN KEY(users_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT credentials_table_fkey FOREIGN KEY(credentials_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT sessions_table_fkey FOREIGN KEY(sessions_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT session_credentials_table_fkey FOREIGN KEY(session_credentials_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT session_secrets_table_fkey FOREIGN KEY(session_secrets_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT auth_settings_table_fkey FOREIGN KEY(auth_settings_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -2025,6 +2039,8 @@ CREATE TABLE metaschema_modules_public.identity_providers_module ( database_id uuid NOT NULL, schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + public_schema_name text, + private_schema_name text, table_id uuid NOT NULL DEFAULT uuid_nil(), table_name text NOT NULL DEFAULT 'identity_providers', api_name text DEFAULT 'auth', @@ -2038,7 +2054,7 @@ CREATE TABLE metaschema_modules_public.identity_providers_module ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT schema_fkey FOREIGN KEY(schema_id) @@ -2050,7 +2066,7 @@ CREATE TABLE metaschema_modules_public.identity_providers_module ( ON DELETE CASCADE, CONSTRAINT entity_table_fkey FOREIGN KEY(entity_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -2082,6 +2098,8 @@ CREATE TABLE metaschema_modules_public.notifications_module ( database_id uuid NOT NULL, schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + public_schema_name text, + private_schema_name text, notifications_table_id uuid NOT NULL DEFAULT uuid_nil(), read_state_table_id uuid NOT NULL DEFAULT uuid_nil(), preferences_table_id uuid, @@ -2105,39 +2123,39 @@ CREATE TABLE metaschema_modules_public.notifications_module ( ON DELETE CASCADE, CONSTRAINT notifications_table_fkey FOREIGN KEY(notifications_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT read_state_table_fkey FOREIGN KEY(read_state_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT preferences_table_fkey FOREIGN KEY(preferences_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE SET NULL, CONSTRAINT channels_table_fkey FOREIGN KEY(channels_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE SET NULL, CONSTRAINT delivery_log_table_fkey FOREIGN KEY(delivery_log_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE SET NULL, CONSTRAINT suppressions_table_fkey FOREIGN KEY(suppressions_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE SET NULL, CONSTRAINT owner_table_fkey FOREIGN KEY(owner_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT user_settings_table_fkey FOREIGN KEY(user_settings_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE SET NULL, CONSTRAINT organization_settings_table_fkey FOREIGN KEY(organization_settings_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE SET NULL, CONSTRAINT schema_fkey FOREIGN KEY(schema_id) @@ -2187,6 +2205,8 @@ CREATE TABLE metaschema_modules_public.plans_module ( database_id uuid NOT NULL, schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + public_schema_name text, + private_schema_name text, plans_table_id uuid NOT NULL DEFAULT uuid_nil(), plans_table_name text NOT NULL DEFAULT '', plan_limits_table_id uuid NOT NULL DEFAULT uuid_nil(), @@ -2216,27 +2236,27 @@ CREATE TABLE metaschema_modules_public.plans_module ( ON DELETE CASCADE, CONSTRAINT plans_table_fkey FOREIGN KEY(plans_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT plan_limits_table_fkey FOREIGN KEY(plan_limits_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT plan_pricing_table_fkey FOREIGN KEY(plan_pricing_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT plan_overrides_table_fkey FOREIGN KEY(plan_overrides_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT plan_meter_limits_table_fkey FOREIGN KEY(plan_meter_limits_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT plan_caps_table_fkey FOREIGN KEY(plan_caps_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT plans_module_database_id_unique UNIQUE (database_id) @@ -2249,6 +2269,8 @@ CREATE TABLE metaschema_modules_public.billing_module ( database_id uuid NOT NULL, schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + public_schema_name text, + private_schema_name text, meters_table_id uuid NOT NULL DEFAULT uuid_nil(), meters_table_name text NOT NULL DEFAULT '', plan_subscriptions_table_id uuid NOT NULL DEFAULT uuid_nil(), @@ -2282,31 +2304,31 @@ CREATE TABLE metaschema_modules_public.billing_module ( ON DELETE CASCADE, CONSTRAINT meters_table_fkey FOREIGN KEY(meters_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT plan_subscriptions_table_fkey FOREIGN KEY(plan_subscriptions_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT ledger_table_fkey FOREIGN KEY(ledger_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT balances_table_fkey FOREIGN KEY(balances_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT meter_credits_table_fkey FOREIGN KEY(meter_credits_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT meter_sources_table_fkey FOREIGN KEY(meter_sources_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT meter_defaults_table_fkey FOREIGN KEY(meter_defaults_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT billing_module_database_id_unique UNIQUE (database_id) @@ -2351,35 +2373,35 @@ CREATE TABLE metaschema_modules_public.billing_provider_module ( ON DELETE CASCADE, CONSTRAINT billing_customers_table_fkey FOREIGN KEY(billing_customers_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT billing_products_table_fkey FOREIGN KEY(billing_products_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT billing_prices_table_fkey FOREIGN KEY(billing_prices_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT billing_subscriptions_table_fkey FOREIGN KEY(billing_subscriptions_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT billing_webhook_events_table_fkey FOREIGN KEY(billing_webhook_events_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT products_table_fkey FOREIGN KEY(products_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE SET NULL, CONSTRAINT prices_table_fkey FOREIGN KEY(prices_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE SET NULL, CONSTRAINT subscriptions_table_fkey FOREIGN KEY(subscriptions_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE SET NULL, CONSTRAINT billing_provider_module_database_id_unique UNIQUE (database_id) @@ -2398,7 +2420,7 @@ CREATE TABLE metaschema_modules_public.realtime_module ( source_registry_table_id uuid NOT NULL DEFAULT uuid_nil(), retention_hours int NOT NULL DEFAULT 168, premake int NOT NULL DEFAULT 7, - "interval" text NOT NULL DEFAULT '1 day', + interval text NOT NULL DEFAULT '1 day', notify_channel text NULL, api_name text DEFAULT 'realtime', private_api_name text DEFAULT NULL, @@ -2420,15 +2442,15 @@ CREATE TABLE metaschema_modules_public.realtime_module ( ON DELETE CASCADE, CONSTRAINT change_log_table_fkey FOREIGN KEY(change_log_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT listener_node_table_fkey FOREIGN KEY(listener_node_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT source_registry_table_fkey FOREIGN KEY(source_registry_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -2453,6 +2475,8 @@ CREATE TABLE metaschema_modules_public.rate_limit_meters_module ( database_id uuid NOT NULL, schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + public_schema_name text, + private_schema_name text, rate_limit_state_table_id uuid NOT NULL DEFAULT uuid_nil(), rate_limit_state_table_name text NOT NULL DEFAULT '', rate_limit_overrides_table_id uuid NULL, @@ -2478,15 +2502,15 @@ CREATE TABLE metaschema_modules_public.rate_limit_meters_module ( ON DELETE CASCADE, CONSTRAINT rate_limit_state_table_fkey FOREIGN KEY(rate_limit_state_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT rate_limit_overrides_table_fkey FOREIGN KEY(rate_limit_overrides_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT rate_window_limits_table_fkey FOREIGN KEY(rate_window_limits_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT rate_limit_meters_module_database_id_unique UNIQUE (database_id) @@ -2518,7 +2542,7 @@ CREATE TABLE metaschema_modules_public.config_secrets_org_module ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -2535,11 +2559,13 @@ CREATE TABLE metaschema_modules_public.inference_log_module ( database_id uuid NOT NULL, schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + public_schema_name text, + private_schema_name text, inference_log_table_id uuid NOT NULL DEFAULT uuid_nil(), inference_log_table_name text NOT NULL DEFAULT '', usage_daily_table_id uuid NOT NULL DEFAULT uuid_nil(), usage_daily_table_name text NOT NULL DEFAULT '', - "interval" text NOT NULL DEFAULT '1 month', + interval text NOT NULL DEFAULT '1 month', retention text NOT NULL DEFAULT '12 months', premake int NOT NULL DEFAULT 2, scope text NOT NULL DEFAULT 'app', @@ -2562,11 +2588,11 @@ CREATE TABLE metaschema_modules_public.inference_log_module ( ON DELETE CASCADE, CONSTRAINT inference_log_table_fkey FOREIGN KEY(inference_log_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT usage_daily_table_fkey FOREIGN KEY(usage_daily_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT inference_log_module_database_id_prefix_unique UNIQUE NULLS NOT DISTINCT (database_id, prefix) @@ -2579,11 +2605,13 @@ CREATE TABLE metaschema_modules_public.compute_log_module ( database_id uuid NOT NULL, schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + public_schema_name text, + private_schema_name text, compute_log_table_id uuid NOT NULL DEFAULT uuid_nil(), compute_log_table_name text NOT NULL DEFAULT '', usage_daily_table_id uuid NOT NULL DEFAULT uuid_nil(), usage_daily_table_name text NOT NULL DEFAULT '', - "interval" text NOT NULL DEFAULT '1 month', + interval text NOT NULL DEFAULT '1 month', retention text NOT NULL DEFAULT '12 months', premake int NOT NULL DEFAULT 2, scope text NOT NULL DEFAULT 'app', @@ -2606,11 +2634,11 @@ CREATE TABLE metaschema_modules_public.compute_log_module ( ON DELETE CASCADE, CONSTRAINT compute_log_table_fkey FOREIGN KEY(compute_log_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT usage_daily_table_fkey FOREIGN KEY(usage_daily_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT compute_log_module_database_id_prefix_unique UNIQUE NULLS NOT DISTINCT (database_id, prefix) @@ -2623,11 +2651,13 @@ CREATE TABLE metaschema_modules_public.transfer_log_module ( database_id uuid NOT NULL, schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + public_schema_name text, + private_schema_name text, transfer_log_table_id uuid NOT NULL DEFAULT uuid_nil(), transfer_log_table_name text NOT NULL DEFAULT '', usage_daily_table_id uuid NOT NULL DEFAULT uuid_nil(), usage_daily_table_name text NOT NULL DEFAULT '', - "interval" text NOT NULL DEFAULT '1 month', + interval text NOT NULL DEFAULT '1 month', retention text NOT NULL DEFAULT '12 months', premake int NOT NULL DEFAULT 2, scope text NOT NULL DEFAULT 'app', @@ -2650,11 +2680,11 @@ CREATE TABLE metaschema_modules_public.transfer_log_module ( ON DELETE CASCADE, CONSTRAINT transfer_log_table_fkey FOREIGN KEY(transfer_log_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT usage_daily_table_fkey FOREIGN KEY(usage_daily_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT transfer_log_module_database_id_prefix_unique UNIQUE NULLS NOT DISTINCT (database_id, prefix) @@ -2667,11 +2697,13 @@ CREATE TABLE metaschema_modules_public.storage_log_module ( database_id uuid NOT NULL, schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + public_schema_name text, + private_schema_name text, storage_log_table_id uuid NOT NULL DEFAULT uuid_nil(), storage_log_table_name text NOT NULL DEFAULT '', usage_daily_table_id uuid NOT NULL DEFAULT uuid_nil(), usage_daily_table_name text NOT NULL DEFAULT '', - "interval" text NOT NULL DEFAULT '1 month', + interval text NOT NULL DEFAULT '1 month', retention text NOT NULL DEFAULT '12 months', premake int NOT NULL DEFAULT 2, scope text NOT NULL DEFAULT 'app', @@ -2694,11 +2726,11 @@ CREATE TABLE metaschema_modules_public.storage_log_module ( ON DELETE CASCADE, CONSTRAINT storage_log_table_fkey FOREIGN KEY(storage_log_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT usage_daily_table_fkey FOREIGN KEY(usage_daily_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT storage_log_module_database_id_prefix_unique UNIQUE NULLS NOT DISTINCT (database_id, prefix) @@ -2711,6 +2743,8 @@ CREATE TABLE metaschema_modules_public.db_usage_module ( database_id uuid NOT NULL, schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + public_schema_name text, + private_schema_name text, table_stats_log_table_id uuid NOT NULL DEFAULT uuid_nil(), table_stats_log_table_name text NOT NULL DEFAULT '', table_stats_daily_table_id uuid NOT NULL DEFAULT uuid_nil(), @@ -2719,7 +2753,7 @@ CREATE TABLE metaschema_modules_public.db_usage_module ( query_stats_log_table_name text NOT NULL DEFAULT '', query_stats_daily_table_id uuid NOT NULL DEFAULT uuid_nil(), query_stats_daily_table_name text NOT NULL DEFAULT '', - "interval" text NOT NULL DEFAULT '1 month', + interval text NOT NULL DEFAULT '1 month', retention text NOT NULL DEFAULT '12 months', premake int NOT NULL DEFAULT 2, scope text NOT NULL DEFAULT 'app', @@ -2741,19 +2775,19 @@ CREATE TABLE metaschema_modules_public.db_usage_module ( ON DELETE CASCADE, CONSTRAINT table_stats_log_table_fkey FOREIGN KEY(table_stats_log_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT table_stats_daily_table_fkey FOREIGN KEY(table_stats_daily_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT query_stats_log_table_fkey FOREIGN KEY(query_stats_log_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT query_stats_daily_table_fkey FOREIGN KEY(query_stats_daily_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT db_usage_module_database_id_prefix_unique UNIQUE NULLS NOT DISTINCT (database_id, prefix) @@ -2766,6 +2800,8 @@ CREATE TABLE metaschema_modules_public.agent_module ( database_id uuid NOT NULL, schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + public_schema_name text, + private_schema_name text, thread_table_id uuid NOT NULL DEFAULT uuid_nil(), message_table_id uuid NOT NULL DEFAULT uuid_nil(), task_table_id uuid NOT NULL DEFAULT uuid_nil(), @@ -2809,39 +2845,39 @@ CREATE TABLE metaschema_modules_public.agent_module ( ON DELETE CASCADE, CONSTRAINT agent_module_thread_table_fkey FOREIGN KEY(thread_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT agent_module_message_table_fkey FOREIGN KEY(message_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT agent_module_task_table_fkey FOREIGN KEY(task_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT agent_module_prompts_table_fkey FOREIGN KEY(prompts_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT agent_module_plan_table_fkey FOREIGN KEY(plan_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT agent_module_agent_table_fkey FOREIGN KEY(agent_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT agent_module_persona_table_fkey FOREIGN KEY(persona_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT agent_module_resource_table_fkey FOREIGN KEY(resource_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT agent_module_entity_table_fkey FOREIGN KEY(entity_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -2865,6 +2901,7 @@ CREATE TABLE metaschema_modules_public.merkle_store_module ( private_api_name text, scope text NOT NULL DEFAULT 'app', function_prefix text DEFAULT NULL, + permission_key text DEFAULT NULL, created_at timestamptz NOT NULL DEFAULT now(), CONSTRAINT db_fkey FOREIGN KEY(database_id) @@ -2880,19 +2917,19 @@ CREATE TABLE metaschema_modules_public.merkle_store_module ( ON DELETE CASCADE, CONSTRAINT object_table_fkey FOREIGN KEY(object_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT store_table_fkey FOREIGN KEY(store_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT commit_table_fkey FOREIGN KEY(commit_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT ref_table_fkey FOREIGN KEY(ref_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT merkle_store_module_database_prefix_unique UNIQUE (database_id, prefix) @@ -2913,8 +2950,6 @@ CREATE TABLE metaschema_modules_public.graph_module ( prefix text NOT NULL DEFAULT '', merkle_store_module_id uuid NOT NULL, graphs_table_id uuid NOT NULL DEFAULT uuid_nil(), - executions_table_id uuid NOT NULL DEFAULT uuid_nil(), - outputs_table_id uuid NOT NULL DEFAULT uuid_nil(), api_name text, private_api_name text, entity_table_id uuid NULL, @@ -2940,19 +2975,11 @@ CREATE TABLE metaschema_modules_public.graph_module ( ON DELETE CASCADE, CONSTRAINT graphs_table_fkey FOREIGN KEY(graphs_table_id) - REFERENCES metaschema_public.table (id) - ON DELETE CASCADE, - CONSTRAINT executions_table_fkey - FOREIGN KEY(executions_table_id) - REFERENCES metaschema_public.table (id) - ON DELETE CASCADE, - CONSTRAINT outputs_table_fkey - FOREIGN KEY(outputs_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT graph_module_entity_table_fkey FOREIGN KEY(entity_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT graph_module_database_merkle_unique UNIQUE (database_id, merkle_store_module_id) @@ -2960,6 +2987,67 @@ CREATE TABLE metaschema_modules_public.graph_module ( CREATE INDEX graph_module_database_id_idx ON metaschema_modules_public.graph_module (database_id); +CREATE TABLE metaschema_modules_public.graph_execution_module ( + id uuid PRIMARY KEY DEFAULT uuidv7(), + database_id uuid NOT NULL, + schema_id uuid NOT NULL DEFAULT uuid_nil(), + private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + public_schema_name text, + private_schema_name text, + graph_module_id uuid NOT NULL, + scope text NOT NULL DEFAULT 'app', + prefix text NOT NULL DEFAULT '', + executions_table_id uuid NOT NULL DEFAULT uuid_nil(), + outputs_table_id uuid NOT NULL DEFAULT uuid_nil(), + node_states_table_id uuid NOT NULL DEFAULT uuid_nil(), + executions_table_name text NOT NULL DEFAULT 'function_graph_executions', + outputs_table_name text NOT NULL DEFAULT 'function_graph_execution_outputs', + node_states_table_name text NOT NULL DEFAULT 'function_graph_execution_node_states', + api_name text, + private_api_name text, + entity_table_id uuid NULL, + policies jsonb NULL, + provisions jsonb NULL, + default_permissions text[] DEFAULT NULL, + created_at timestamptz NOT NULL DEFAULT now(), + CONSTRAINT graph_execution_module_db_fkey + FOREIGN KEY(database_id) + REFERENCES metaschema_public.database (id) + ON DELETE CASCADE, + CONSTRAINT graph_execution_module_schema_fkey + FOREIGN KEY(schema_id) + REFERENCES metaschema_public.schema (id) + ON DELETE CASCADE, + CONSTRAINT graph_execution_module_private_schema_fkey + FOREIGN KEY(private_schema_id) + REFERENCES metaschema_public.schema (id) + ON DELETE CASCADE, + CONSTRAINT graph_execution_module_graph_module_fkey + FOREIGN KEY(graph_module_id) + REFERENCES metaschema_modules_public.graph_module (id) + ON DELETE CASCADE, + CONSTRAINT graph_execution_module_executions_table_fkey + FOREIGN KEY(executions_table_id) + REFERENCES metaschema_public."table" (id) + ON DELETE CASCADE, + CONSTRAINT graph_execution_module_outputs_table_fkey + FOREIGN KEY(outputs_table_id) + REFERENCES metaschema_public."table" (id) + ON DELETE CASCADE, + CONSTRAINT graph_execution_module_node_states_table_fkey + FOREIGN KEY(node_states_table_id) + REFERENCES metaschema_public."table" (id) + ON DELETE CASCADE, + CONSTRAINT graph_execution_module_entity_table_fkey + FOREIGN KEY(entity_table_id) + REFERENCES metaschema_public."table" (id) + ON DELETE CASCADE +); + +CREATE INDEX graph_execution_module_database_id_idx ON metaschema_modules_public.graph_execution_module (database_id); + +CREATE UNIQUE INDEX graph_execution_module_unique_scope ON metaschema_modules_public.graph_execution_module (database_id, scope, prefix); + CREATE TABLE metaschema_modules_public.namespace_module ( id uuid PRIMARY KEY DEFAULT uuidv7(), database_id uuid NOT NULL, @@ -2976,6 +3064,7 @@ CREATE TABLE metaschema_modules_public.namespace_module ( scope text NOT NULL DEFAULT 'app', prefix text NOT NULL DEFAULT '', entity_table_id uuid NULL, + platform_namespaces_table_id uuid NULL, policies jsonb NULL, provisions jsonb NULL, default_permissions text[] DEFAULT NULL, @@ -2993,15 +3082,15 @@ CREATE TABLE metaschema_modules_public.namespace_module ( ON DELETE CASCADE, CONSTRAINT namespace_module_namespaces_table_fkey FOREIGN KEY(namespaces_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT namespace_module_events_table_fkey FOREIGN KEY(namespace_events_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT namespace_module_entity_table_fkey FOREIGN KEY(entity_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -3042,15 +3131,15 @@ CREATE TABLE metaschema_modules_public.function_module ( ON DELETE CASCADE, CONSTRAINT function_module_definitions_table_fkey FOREIGN KEY(definitions_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT function_module_secret_defs_table_fkey FOREIGN KEY(secret_definitions_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT function_module_entity_table_fkey FOREIGN KEY(entity_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -3091,15 +3180,15 @@ CREATE TABLE metaschema_modules_public.function_invocation_module ( ON DELETE CASCADE, CONSTRAINT function_invocation_module_invocations_table_fkey FOREIGN KEY(invocations_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT function_invocation_module_logs_table_fkey FOREIGN KEY(execution_logs_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT function_invocation_module_entity_table_fkey FOREIGN KEY(entity_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -3112,6 +3201,8 @@ CREATE TABLE metaschema_modules_public.config_secrets_module ( database_id uuid NOT NULL, schema_id uuid NOT NULL DEFAULT uuid_nil(), private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + public_schema_name text, + private_schema_name text, table_id uuid NOT NULL DEFAULT uuid_nil(), config_definitions_table_id uuid NULL DEFAULT NULL, table_name text NOT NULL DEFAULT 'secrets', @@ -3137,15 +3228,15 @@ CREATE TABLE metaschema_modules_public.config_secrets_module ( ON DELETE CASCADE, CONSTRAINT config_secrets_module_table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT config_secrets_module_config_defs_table_fkey FOREIGN KEY(config_definitions_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT config_secrets_module_entity_table_fkey FOREIGN KEY(entity_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -3179,7 +3270,7 @@ CREATE TABLE metaschema_modules_public.user_credentials_module ( ON DELETE CASCADE, CONSTRAINT user_credentials_module_table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -3213,11 +3304,11 @@ CREATE TABLE metaschema_modules_public.user_settings_module ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT owner_table_fkey FOREIGN KEY(owner_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -3247,10 +3338,69 @@ CREATE TABLE metaschema_modules_public.i18n_module ( ON DELETE CASCADE, CONSTRAINT settings_table_fkey FOREIGN KEY(settings_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); CREATE INDEX i18n_module_database_id_idx ON metaschema_modules_public.i18n_module (database_id); -CREATE UNIQUE INDEX i18n_module_unique_per_db ON metaschema_modules_public.i18n_module (database_id); \ No newline at end of file +CREATE UNIQUE INDEX i18n_module_unique_per_db ON metaschema_modules_public.i18n_module (database_id); + +CREATE TABLE metaschema_modules_public.function_deployment_module ( + id uuid PRIMARY KEY DEFAULT uuidv7(), + database_id uuid NOT NULL, + schema_id uuid NOT NULL DEFAULT uuid_nil(), + private_schema_id uuid NOT NULL DEFAULT uuid_nil(), + public_schema_name text, + private_schema_name text, + deployments_table_id uuid NOT NULL DEFAULT uuid_nil(), + deployment_events_table_id uuid NOT NULL DEFAULT uuid_nil(), + deployments_table_name text NOT NULL DEFAULT 'function_deployments', + deployment_events_table_name text NOT NULL DEFAULT 'function_deployment_events', + api_name text, + private_api_name text, + scope text NOT NULL DEFAULT 'app', + prefix text NOT NULL DEFAULT '', + entity_table_id uuid NULL, + function_module_id uuid NULL, + namespace_module_id uuid NULL, + policies jsonb NULL, + provisions jsonb NULL, + default_permissions text[] DEFAULT NULL, + CONSTRAINT function_deployment_module_db_fkey + FOREIGN KEY(database_id) + REFERENCES metaschema_public.database (id) + ON DELETE CASCADE, + CONSTRAINT function_deployment_module_schema_fkey + FOREIGN KEY(schema_id) + REFERENCES metaschema_public.schema (id) + ON DELETE CASCADE, + CONSTRAINT function_deployment_module_private_schema_fkey + FOREIGN KEY(private_schema_id) + REFERENCES metaschema_public.schema (id) + ON DELETE CASCADE, + CONSTRAINT function_deployment_module_deployments_table_fkey + FOREIGN KEY(deployments_table_id) + REFERENCES metaschema_public."table" (id) + ON DELETE CASCADE, + CONSTRAINT function_deployment_module_events_table_fkey + FOREIGN KEY(deployment_events_table_id) + REFERENCES metaschema_public."table" (id) + ON DELETE CASCADE, + CONSTRAINT function_deployment_module_entity_table_fkey + FOREIGN KEY(entity_table_id) + REFERENCES metaschema_public."table" (id) + ON DELETE CASCADE, + CONSTRAINT function_deployment_module_function_module_fkey + FOREIGN KEY(function_module_id) + REFERENCES metaschema_modules_public.function_module (id) + ON DELETE SET NULL, + CONSTRAINT function_deployment_module_namespace_module_fkey + FOREIGN KEY(namespace_module_id) + REFERENCES metaschema_modules_public.namespace_module (id) + ON DELETE SET NULL +); + +CREATE INDEX function_deployment_module_database_id_idx ON metaschema_modules_public.function_deployment_module (database_id); + +CREATE UNIQUE INDEX function_deployment_module_unique_scope ON metaschema_modules_public.function_deployment_module (database_id, scope, prefix); \ No newline at end of file diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/agent_chat_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/agent_chat_module/table.sql new file mode 100644 index 000000000..133d78496 --- /dev/null +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/agent_chat_module/table.sql @@ -0,0 +1,20 @@ +-- Verify schemas/metaschema_modules_public/tables/agent_module/table on pg + +BEGIN; + +SELECT + id, + database_id, + schema_id, + private_schema_id, + thread_table_id, + thread_table_name, + message_table_id, + message_table_name, + task_table_id, + task_table_name, + prefix +FROM metaschema_modules_public.agent_module +WHERE FALSE; + +ROLLBACK; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/agent_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/agent_module/table.sql deleted file mode 100644 index aa3519ff8..000000000 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/agent_module/table.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Verify schemas/metaschema_modules_public/tables/agent_module/table on pg - -BEGIN; - -SELECT verify_table ('metaschema_modules_public.agent_module'); - -ROLLBACK; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/blueprint/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/blueprint/table.sql index d5683b397..7a71abb5b 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/blueprint/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/blueprint/table.sql @@ -11,6 +11,11 @@ SELECT description, definition, template_id, + status, + constructed_at, + error_details, + ref_map, + constructed_definition, definition_hash, table_hashes, created_at, diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/compute_log_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/compute_log_module/table.sql index de44722ab..be41a8348 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/compute_log_module/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/compute_log_module/table.sql @@ -3,7 +3,8 @@ SELECT id, database_id, schema_id, private_schema_id, compute_log_table_id, compute_log_table_name, usage_daily_table_id, usage_daily_table_name, - retention, scope, actor_fk_table_id, entity_fk_table_id, + "interval", retention, premake, + include_database_id, actor_fk_table_id, entity_fk_table_id, prefix FROM metaschema_modules_public.compute_log_module WHERE FALSE; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/config_secrets_org_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/config_secrets_org_module/table.sql deleted file mode 100644 index b85512867..000000000 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/config_secrets_org_module/table.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Verify schemas/metaschema_modules_public/tables/config_secrets_org_module/table on pg - -BEGIN; - -SELECT verify_table ('metaschema_modules_public.config_secrets_org_module'); - -ROLLBACK; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/db_usage_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/db_usage_module/table.sql index 57f884feb..71ec5bdd0 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/db_usage_module/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/db_usage_module/table.sql @@ -1,10 +1,9 @@ -- Verify schemas/metaschema_modules_public/tables/db_usage_module/table on pg SELECT id, database_id, schema_id, private_schema_id, - table_stats_log_table_id, table_stats_log_table_name, - table_stats_daily_table_id, table_stats_daily_table_name, - query_stats_log_table_id, query_stats_log_table_name, - query_stats_daily_table_id, query_stats_daily_table_name, - retention, scope, prefix + db_usage_log_table_id, db_usage_log_table_name, + usage_daily_table_id, usage_daily_table_name, + "interval", retention, premake, + prefix FROM metaschema_modules_public.db_usage_module WHERE FALSE; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/entity_type_provision/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/entity_type_provision/table.sql deleted file mode 100644 index f5d77396a..000000000 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/entity_type_provision/table.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Verify schemas/metaschema_modules_public/tables/entity_type_provision/table on pg - -BEGIN; - -SELECT verify_table ('metaschema_modules_public.entity_type_provision'); - -ROLLBACK; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/function_deployment_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/function_deployment_module/table.sql new file mode 100644 index 000000000..637ac48f0 --- /dev/null +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/function_deployment_module/table.sql @@ -0,0 +1,14 @@ +-- Verify schemas/metaschema_modules_public/tables/function_deployment_module/table on pg + +BEGIN; + +SELECT id, database_id, schema_id, private_schema_id, + deployments_table_id, deployment_events_table_id, + deployments_table_name, deployment_events_table_name, + scope, prefix, entity_table_id, + function_module_id, namespace_module_id, + policies, provisions +FROM metaschema_modules_public.function_deployment_module +WHERE false; + +ROLLBACK; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/function_invocation_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/function_invocation_module/table.sql index dd5d24f5e..a4fa95db3 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/function_invocation_module/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/function_invocation_module/table.sql @@ -2,6 +2,14 @@ BEGIN; -SELECT verify_table ('metaschema_modules_public.function_invocation_module'); +SELECT id, database_id, schema_id, private_schema_id, + public_schema_name, private_schema_name, + invocations_table_id, execution_logs_table_id, + invocations_table_name, execution_logs_table_name, + api_name, private_api_name, + scope, prefix, entity_table_id, + policies, provisions, default_permissions +FROM metaschema_modules_public.function_invocation_module +WHERE false; ROLLBACK; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/function_module/constraints/one_platform_database.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/function_module/constraints/one_platform_database.sql new file mode 100644 index 000000000..63a5622b2 --- /dev/null +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/function_module/constraints/one_platform_database.sql @@ -0,0 +1,11 @@ +-- Verify schemas/metaschema_modules_public/tables/function_module/constraints/one_platform_database on pg + +BEGIN; + +-- No-op verification: the migration is purely documentation. +-- Verify by confirming the function_module table exists. +SELECT 1 FROM pg_tables +WHERE tablename = 'function_module' + AND schemaname = 'metaschema_modules_public'; + +ROLLBACK; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/graph_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/graph_module/table.sql deleted file mode 100644 index 0c4e161a8..000000000 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/graph_module/table.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Verify schemas/metaschema_modules_public/tables/graph_module/table on pg - -BEGIN; - -SELECT verify_table ('metaschema_modules_public.graph_module'); - -ROLLBACK; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/inference_log_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/inference_log_module/table.sql index eaf4c39cb..f30ebac19 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/inference_log_module/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/inference_log_module/table.sql @@ -11,8 +11,9 @@ SELECT inference_log_table_name, usage_daily_table_id, usage_daily_table_name, + "interval", retention, - scope, + premake, actor_fk_table_id, entity_fk_table_id, prefix diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/merkle_store_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/merkle_store_module/table.sql deleted file mode 100644 index 8b8a33f70..000000000 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/merkle_store_module/table.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Verify schemas/metaschema_modules_public/tables/merkle_store_module/table on pg - -BEGIN; - -SELECT verify_table ('metaschema_modules_public.merkle_store_module'); - -ROLLBACK; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/namespace_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/namespace_module/table.sql index 8cfe54042..5dbc2e9a3 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/namespace_module/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/namespace_module/table.sql @@ -3,11 +3,9 @@ BEGIN; SELECT id, database_id, schema_id, private_schema_id, - public_schema_name, private_schema_name, namespaces_table_id, namespace_events_table_id, namespaces_table_name, namespace_events_table_name, - api_name, private_api_name, scope, prefix, - entity_table_id, policies, provisions, default_permissions + membership_type, entity_table_id, policies FROM metaschema_modules_public.namespace_module WHERE false; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/profiles_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/profiles_module/table.sql index 9c52869fe..64810749e 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/profiles_module/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/profiles_module/table.sql @@ -6,8 +6,7 @@ SELECT id, database_id, schema_id, private_schema_id, table_id, table_name, profile_permissions_table_id, profile_permissions_table_name, profile_grants_table_id, profile_grants_table_name, profile_definition_grants_table_id, profile_definition_grants_table_name, - profile_templates_table_id, profile_templates_table_name, - entity_table_id, actor_table_id, + membership_type, entity_table_id, actor_table_id, permissions_table_id, memberships_table_id, prefix FROM metaschema_modules_public.profiles_module WHERE FALSE; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/relation_provision/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/relation_provision/table.sql index 0caae8560..d6bf096f3 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/relation_provision/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/relation_provision/table.sql @@ -18,9 +18,8 @@ SELECT source_field_name, target_field_name, use_composite_key, - create_index, - expose_in_api, - nodes, + node_type, + node_data, grants, policies, out_field_id, diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/secure_table_provision/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/secure_table_provision/table.sql index f953e5071..b22b45203 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/secure_table_provision/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/secure_table_provision/table.sql @@ -8,8 +8,9 @@ SELECT schema_id, table_id, table_name, - nodes, + node_type, use_rls, + node_data, fields, grants, policies, diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/session_secrets_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/session_secrets_module/table.sql deleted file mode 100644 index 5cf6fc68b..000000000 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/session_secrets_module/table.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Verify schemas/metaschema_modules_public/tables/session_secrets_module/table on pg - -BEGIN; - -SELECT verify_table ('metaschema_modules_public.session_secrets_module'); - -ROLLBACK; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/storage_log_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/storage_log_module/table.sql index adbf9ac7c..c9e95f6c8 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/storage_log_module/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/storage_log_module/table.sql @@ -3,7 +3,7 @@ SELECT id, database_id, schema_id, private_schema_id, storage_log_table_id, storage_log_table_name, usage_daily_table_id, usage_daily_table_name, - retention, scope, + "interval", retention, premake, actor_fk_table_id, entity_fk_table_id, prefix FROM metaschema_modules_public.storage_log_module diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/transfer_log_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/transfer_log_module/table.sql index 6a17ba161..d5a0419e9 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/transfer_log_module/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/transfer_log_module/table.sql @@ -3,7 +3,7 @@ SELECT id, database_id, schema_id, private_schema_id, transfer_log_table_id, transfer_log_table_name, usage_daily_table_id, usage_daily_table_name, - retention, scope, + "interval", retention, premake, actor_fk_table_id, entity_fk_table_id, prefix FROM metaschema_modules_public.transfer_log_module diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/user_settings_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/user_settings_module/table.sql index 7a56d8ee0..2ed6c6a98 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/user_settings_module/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/user_settings_module/table.sql @@ -2,6 +2,6 @@ BEGIN; -SELECT verify_table('metaschema_modules_public.user_settings_module'); +SELECT verify_table ('metaschema_modules_public.user_settings_module'); ROLLBACK; diff --git a/packages/metaschema-schema/Makefile b/packages/metaschema-schema/Makefile index 86d92ddab..a7a2d43c1 100644 --- a/packages/metaschema-schema/Makefile +++ b/packages/metaschema-schema/Makefile @@ -1,5 +1,5 @@ EXTENSION = metaschema-schema -DATA = sql/metaschema-schema--0.29.0.sql +DATA = sql/metaschema-schema--0.15.5.sql PG_CONFIG = pg_config PGXS := $(shell $(PG_CONFIG) --pgxs) diff --git a/packages/metaschema-schema/README.md b/packages/metaschema-schema/README.md index b4961a99e..7053a2190 100644 --- a/packages/metaschema-schema/README.md +++ b/packages/metaschema-schema/README.md @@ -43,7 +43,7 @@ This is a quick way to get started. The sections below provide more detailed ins ### Prerequisites ```bash -# Install pgpm CLI +# Install pgpm CLI npm install -g pgpm # Start local Postgres (via Docker) and export env vars @@ -60,7 +60,7 @@ eval "$(pgpm env)" pgpm install @pgpm/db-meta-schema # 2. Deploy locally -pgpm deploy +pgpm deploy ``` ### **Add to a New Project** @@ -185,7 +185,7 @@ WHERE f.table_id = 'table-uuid' ORDER BY f.field_order; -- Get foreign key relationships -SELECT +SELECT fk.name as constraint_name, t1.name as from_table, t2.name as to_table @@ -308,32 +308,16 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - ## Disclaimer AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. No developer or entity involved in creating this software will be liable for any claims or damages whatsoever associated with your use, inability to use, or your interaction with other users of the code, including any direct, indirect, incidental, special, exemplary, punitive or consequential damages, or loss of profits, cryptocurrencies, tokens, or anything else of value. - diff --git a/packages/metaschema-schema/metaschema-schema.control b/packages/metaschema-schema/metaschema-schema.control index 73c1223ff..89b4acdd1 100644 --- a/packages/metaschema-schema/metaschema-schema.control +++ b/packages/metaschema-schema/metaschema-schema.control @@ -1,6 +1,6 @@ # metaschema-schema extension comment = 'metaschema-schema extension' -default_version = '0.29.0' +default_version = '0.15.5' module_pathname = '$libdir/metaschema-schema' requires = 'citext,hstore,pgpm-inflection,pgpm-database-jobs,pgpm-types,pgcrypto,plpgsql,postgis,uuid-ossp,pgpm-verify' relocatable = false diff --git a/packages/metaschema-schema/package.json b/packages/metaschema-schema/package.json index 0793cc17c..64abb1232 100644 --- a/packages/metaschema-schema/package.json +++ b/packages/metaschema-schema/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/metaschema-schema", - "version": "0.28.3", + "version": "0.15.5", "description": "Database metadata utilities and introspection functions", "author": "Dan Lynch ", "contributors": [ @@ -27,7 +27,7 @@ "@pgpm/verify": "workspace:*" }, "devDependencies": { - "pgpm": "^4.23.2" + "pgpm": "^4.28.7" }, "repository": { "type": "git", @@ -37,4 +37,4 @@ "bugs": { "url": "https://github.com/constructive-io/pgpm-modules/issues" } -} +} \ No newline at end of file diff --git a/packages/metaschema-schema/sql/metaschema-schema--0.29.0.sql b/packages/metaschema-schema/sql/metaschema-schema--0.15.5.sql similarity index 89% rename from packages/metaschema-schema/sql/metaschema-schema--0.29.0.sql rename to packages/metaschema-schema/sql/metaschema-schema--0.15.5.sql index 486bf55f5..d122559aa 100644 --- a/packages/metaschema-schema/sql/metaschema-schema--0.29.0.sql +++ b/packages/metaschema-schema/sql/metaschema-schema--0.15.5.sql @@ -76,7 +76,7 @@ ALTER TABLE metaschema_public.schema CREATE INDEX schema_database_id_idx ON metaschema_public.schema (database_id); -CREATE TABLE metaschema_public.table ( +CREATE TABLE metaschema_public."table" ( id uuid PRIMARY KEY DEFAULT uuidv7(), database_id uuid NOT NULL DEFAULT uuid_nil(), schema_id uuid NOT NULL, @@ -109,14 +109,14 @@ CREATE TABLE metaschema_public.table ( UNIQUE (database_id, schema_id, name) ); -ALTER TABLE metaschema_public.table +ALTER TABLE metaschema_public."table" ADD COLUMN inherits_id uuid NULL - REFERENCES metaschema_public.table (id); + REFERENCES metaschema_public."table" (id); -CREATE INDEX table_schema_id_idx ON metaschema_public.table (schema_id); +CREATE INDEX table_schema_id_idx ON metaschema_public."table" (schema_id); -CREATE INDEX table_database_id_idx ON metaschema_public.table (database_id); +CREATE INDEX table_database_id_idx ON metaschema_public."table" (database_id); CREATE TABLE metaschema_public.check_constraint ( id uuid PRIMARY KEY DEFAULT uuidv7(), @@ -138,7 +138,7 @@ CREATE TABLE metaschema_public.check_constraint ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, UNIQUE (table_id, name), CHECK (field_ids <> '{}') @@ -148,9 +148,7 @@ CREATE INDEX check_constraint_table_id_idx ON metaschema_public.check_constraint CREATE INDEX check_constraint_database_id_idx ON metaschema_public.check_constraint (database_id); -CREATE FUNCTION metaschema_private.database_name_hash( - name text -) RETURNS bytea AS $EOFCODE$ +CREATE FUNCTION metaschema_private.database_name_hash(name text) RETURNS bytea AS $EOFCODE$ SELECT DECODE(MD5(LOWER(inflection.plural (name))), 'hex'); $EOFCODE$ LANGUAGE sql IMMUTABLE; @@ -186,7 +184,7 @@ CREATE TABLE metaschema_public.field ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, UNIQUE (table_id, name) ); @@ -209,7 +207,7 @@ CREATE TABLE metaschema_public.foreign_key_constraint ( smart_tags jsonb, type text, field_ids uuid[] NOT NULL, - ref_table_id uuid NOT NULL REFERENCES metaschema_public.table (id) + ref_table_id uuid NOT NULL REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, ref_field_ids uuid[] NOT NULL, delete_action char(1) DEFAULT 'c', @@ -225,7 +223,7 @@ CREATE TABLE metaschema_public.foreign_key_constraint ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, UNIQUE (table_id, name), CHECK (field_ids <> '{}'), @@ -253,7 +251,7 @@ CREATE TABLE metaschema_public.full_text_search ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CHECK ( cardinality(field_ids) = cardinality(weights) @@ -290,7 +288,7 @@ CREATE TABLE metaschema_public.index ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, UNIQUE (database_id, name) ); @@ -322,7 +320,7 @@ CREATE TABLE metaschema_public.policy ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, UNIQUE (table_id, name) ); @@ -350,7 +348,7 @@ CREATE TABLE metaschema_public.primary_key_constraint ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, UNIQUE (table_id, name), CHECK (field_ids <> '{}') @@ -397,7 +395,7 @@ CREATE TABLE metaschema_public.table_grant ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE ); @@ -407,14 +405,12 @@ CREATE INDEX table_grant_database_id_idx ON metaschema_public.table_grant (datab CREATE UNIQUE INDEX table_grant_unique_idx ON metaschema_public.table_grant (table_id, privilege, grantee_name, (COALESCE(field_ids, CAST('{}' AS uuid[])))); -CREATE FUNCTION metaschema_private.table_name_hash( - name text -) RETURNS bytea AS $EOFCODE$ +CREATE FUNCTION metaschema_private.table_name_hash(name text) RETURNS bytea AS $EOFCODE$ SELECT DECODE(MD5(LOWER(inflection.plural (name))), 'hex'); $EOFCODE$ LANGUAGE sql IMMUTABLE; -CREATE UNIQUE INDEX databases_table_unique_name_idx ON metaschema_public.table (database_id, schema_id, (metaschema_private.table_name_hash(name))); +CREATE UNIQUE INDEX databases_table_unique_name_idx ON metaschema_public."table" (database_id, schema_id, (metaschema_private.table_name_hash(name))); CREATE TABLE metaschema_public.trigger_function ( id uuid PRIMARY KEY DEFAULT uuidv7(), @@ -451,7 +447,7 @@ CREATE TABLE metaschema_public.trigger ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, UNIQUE (table_id, name) ); @@ -480,7 +476,7 @@ CREATE TABLE metaschema_public.unique_constraint ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, UNIQUE (table_id, name), CHECK (field_ids <> '{}') @@ -516,7 +512,7 @@ CREATE TABLE metaschema_public.view ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, UNIQUE (schema_id, name) ); @@ -543,7 +539,7 @@ CREATE TABLE metaschema_public.view_table ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, UNIQUE (view_id, table_id) ); @@ -637,7 +633,7 @@ CREATE TABLE metaschema_public.enum ( name text NOT NULL, label text, description text, - "values" text[] NOT NULL DEFAULT '{}', + values text[] NOT NULL DEFAULT '{}', smart_tags jsonb, category metaschema_public.object_category NOT NULL DEFAULT 'app', scope int NULL, @@ -685,11 +681,11 @@ CREATE TABLE metaschema_public.embedding_chunks ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT chunks_table_fkey FOREIGN KEY(chunks_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE SET NULL, CONSTRAINT embedding_field_fkey FOREIGN KEY(embedding_field_id) @@ -741,7 +737,7 @@ CREATE TABLE metaschema_public.spatial_relation ( ON DELETE CASCADE, CONSTRAINT table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT field_fkey FOREIGN KEY(field_id) @@ -749,7 +745,7 @@ CREATE TABLE metaschema_public.spatial_relation ( ON DELETE CASCADE, CONSTRAINT ref_table_fkey FOREIGN KEY(ref_table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT ref_field_fkey FOREIGN KEY(ref_field_id) @@ -796,13 +792,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('AuthzAllowAll', 'authz_allow_all', 'authz', 'Public Access', 'Allows all access. Generates TRUE expression.', '{"type":"object","properties":{}}'::jsonb, CAST('{"authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('AuthzAllowAll', 'authz_allow_all', 'authz', 'Public Access', 'Allows all access. Generates TRUE expression.', '{"type":"object","properties":{}}'::jsonb, CAST('{"authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -813,13 +803,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('AuthzAppMembership', 'authz_app_membership_check', 'authz', 'App Membership Check', 'App-level membership check (hardcoded membership_type=1). Verifies the user has app membership (optionally with specific permission) without binding to any entity from the row. Uses EXISTS subquery against SPRT table. For entity-scoped checks (org, channel, etc.), use AuthzEntityMembership instead.', CAST('{"type":"object","properties":{"permission":{"type":"string","description":"Single permission name to check (resolved to bitstring mask)"},"permissions":{"type":"array","items":{"type":"string"},"description":"Multiple permission names to check (ORed together into mask)"},"is_admin":{"type":"boolean","description":"If true, require is_admin flag"},"is_owner":{"type":"boolean","description":"If true, require is_owner flag"}},"required":[]}' AS jsonb), CAST('{"membership","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('AuthzAppMembership', 'authz_app_membership_check', 'authz', 'App Membership Check', 'App-level membership check (hardcoded membership_type=1). Verifies the user has app membership (optionally with specific permission) without binding to any entity from the row. Uses EXISTS subquery against SPRT table. For entity-scoped checks (org, channel, etc.), use AuthzEntityMembership instead.', CAST('{"type":"object","properties":{"permission":{"type":"string","description":"Single permission name to check (resolved to bitstring mask)"},"permissions":{"type":"array","items":{"type":"string"},"description":"Multiple permission names to check (ORed together into mask)"},"is_admin":{"type":"boolean","description":"If true, require is_admin flag"},"is_owner":{"type":"boolean","description":"If true, require is_owner flag"}},"required":[]}' AS jsonb), CAST('{"membership","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -830,13 +814,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('AuthzComposite', 'authz_composite', 'authz', 'Composite Policy', 'Composite authorization policy that combines multiple authorization nodes using boolean logic (AND/OR). The data field contains a JSONB AST with nested authorization nodes.', '{"type":"object","description":"A composite policy containing nested authorization nodes combined with boolean logic","properties":{"BoolExpr":{"type":"object","description":"Boolean expression combining multiple authorization nodes","properties":{"boolop":{"type":"string","enum":["AND_EXPR","OR_EXPR","NOT_EXPR"],"description":"Boolean operator: AND_EXPR, OR_EXPR, or NOT_EXPR"},"args":{"type":"array","description":"Array of authorization nodes to combine","items":{"type":"object"}}}}}}'::jsonb, CAST('{"composite","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('AuthzComposite', 'authz_composite', 'authz', 'Composite Policy', 'Composite authorization policy that combines multiple authorization nodes using boolean logic (AND/OR). The data field contains a JSONB AST with nested authorization nodes.', '{"type":"object","description":"A composite policy containing nested authorization nodes combined with boolean logic","properties":{"BoolExpr":{"type":"object","description":"Boolean expression combining multiple authorization nodes","properties":{"boolop":{"type":"string","enum":["AND_EXPR","OR_EXPR","NOT_EXPR"],"description":"Boolean operator: AND_EXPR, OR_EXPR, or NOT_EXPR"},"args":{"type":"array","description":"Array of authorization nodes to combine","items":{"type":"object"}}}}}}'::jsonb, CAST('{"composite","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -847,13 +825,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('AuthzDenyAll', 'authz_deny_all', 'authz', 'No Access', 'Denies all access. Generates FALSE expression.', '{"type":"object","properties":{}}'::jsonb, CAST('{"authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('AuthzDenyAll', 'authz_deny_all', 'authz', 'No Access', 'Denies all access. Generates FALSE expression.', '{"type":"object","properties":{}}'::jsonb, CAST('{"authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -864,13 +836,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('AuthzDirectOwner', 'authz_direct_owner', 'authz', 'Direct Ownership', 'Direct equality comparison between a table column and the current user ID. Simplest authorization pattern with no subqueries.', CAST('{"type":"object","properties":{"entity_field":{"type":"string","format":"column-ref","description":"Column name containing the owner user ID (e.g., owner_id)"}},"required":["entity_field"]}' AS jsonb), CAST('{"ownership","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('AuthzDirectOwner', 'authz_direct_owner', 'authz', 'Direct Ownership', 'Direct equality comparison between a table column and the current user ID. Simplest authorization pattern with no subqueries.', CAST('{"type":"object","properties":{"entity_field":{"type":"string","format":"column-ref","description":"Column name containing the owner user ID (e.g., owner_id)"}},"required":["entity_field"]}' AS jsonb), CAST('{"ownership","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -881,13 +847,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('AuthzDirectOwnerAny', 'authz_direct_owner_any', 'authz', 'Multi-Owner Access', 'OR logic for multiple ownership fields. Checks if current user matches any of the specified fields.', '{"type":"object","properties":{"entity_fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Array of column names to check for ownership"}},"required":["entity_fields"]}'::jsonb, CAST('{"ownership","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('AuthzDirectOwnerAny', 'authz_direct_owner_any', 'authz', 'Multi-Owner Access', 'OR logic for multiple ownership fields. Checks if current user matches any of the specified fields.', '{"type":"object","properties":{"entity_fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Array of column names to check for ownership"}},"required":["entity_fields"]}'::jsonb, CAST('{"ownership","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -898,13 +858,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('AuthzEntityMembership', 'authz_entity_membership', 'authz', 'Entity Membership', 'Membership check scoped by a field on the row through the SPRT table. Verifies user has membership in the entity referenced by the row.', CAST('{"type":"object","properties":{"entity_field":{"type":"string","format":"column-ref","description":"Column name referencing the entity (e.g., entity_id, org_id)"},"sel_field":{"type":"string","description":"SPRT column to select for the entity match","default":"entity_id"},"membership_type":{"type":["integer","string"],"description":"Scope: 1=app, 2=org, 3+=dynamic entity types (or string name resolved via membership_types_module)"},"entity_type":{"type":"string","description":"Entity type prefix (e.g. ''channel'', ''department''). Resolved to membership_type integer via memberships_module lookup. Use instead of membership_type for readability."},"permission":{"type":"string","description":"Single permission name to check (resolved to bitstring mask)"},"permissions":{"type":"array","items":{"type":"string"},"description":"Multiple permission names to check (ORed together into mask)"},"is_admin":{"type":"boolean","description":"If true, require is_admin flag"},"is_owner":{"type":"boolean","description":"If true, require is_owner flag"}},"required":["entity_field"]}' AS jsonb), CAST('{"membership","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('AuthzEntityMembership', 'authz_entity_membership', 'authz', 'Entity Membership', 'Membership check scoped by a field on the row through the SPRT table. Verifies user has membership in the entity referenced by the row.', CAST('{"type":"object","properties":{"entity_field":{"type":"string","format":"column-ref","description":"Column name referencing the entity (e.g., entity_id, org_id)"},"sel_field":{"type":"string","description":"SPRT column to select for the entity match","default":"entity_id"},"membership_type":{"type":["integer","string"],"description":"Scope: 1=app, 2=org, 3+=dynamic entity types (or string name resolved via membership_types_module)"},"entity_type":{"type":"string","description":"Entity type prefix (e.g. ''channel'', ''department''). Resolved to membership_type integer via memberships_module lookup. Use instead of membership_type for readability."},"permission":{"type":"string","description":"Single permission name to check (resolved to bitstring mask)"},"permissions":{"type":"array","items":{"type":"string"},"description":"Multiple permission names to check (ORed together into mask)"},"is_admin":{"type":"boolean","description":"If true, require is_admin flag"},"is_owner":{"type":"boolean","description":"If true, require is_owner flag"}},"required":["entity_field"]}' AS jsonb), CAST('{"membership","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -915,13 +869,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('AuthzFilePath', 'authz_file_path', 'authz', 'File Path Share', 'Path-scoped file sharing via ltree containment. Grants access when a path_shares row matches the current user, bucket, and an ancestor path with the required permission.', CAST('{"type":"object","properties":{"shares_table_id":{"type":"string","format":"uuid","description":"UUID of the path_shares table (alternative to shares_schema/shares_table)"},"shares_schema":{"type":"string","description":"Schema of the path_shares table (or use shares_table_id)"},"shares_table":{"type":"string","description":"Name of the path_shares table (or use shares_table_id)"},"files_table_id":{"type":"string","format":"uuid","description":"UUID of the files table (alternative to files_schema/files_table)"},"files_schema":{"type":"string","description":"Schema of the files table (or use files_table_id)"},"files_table":{"type":"string","description":"Name of the files table (or use files_table_id)"},"permission_field":{"type":"string","format":"column-ref","description":"Boolean column on the path_shares table that grants the required permission (e.g. can_read, can_write)"},"bucket_field":{"type":"string","format":"column-ref","description":"Column on the files table referencing the bucket","default":"bucket_id"},"path_field":{"type":"string","format":"column-ref","description":"Ltree column on the files table representing the file path","default":"path"}},"required":["permission_field"]}' AS jsonb), CAST('{"storage","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('AuthzFilePath', 'authz_file_path', 'authz', 'File Path Share', 'Path-scoped file sharing via ltree containment. Grants access when a path_shares row matches the current user, bucket, and an ancestor path with the required permission.', CAST('{"type":"object","properties":{"shares_table_id":{"type":"string","format":"uuid","description":"UUID of the path_shares table (alternative to shares_schema/shares_table)"},"shares_schema":{"type":"string","description":"Schema of the path_shares table (or use shares_table_id)"},"shares_table":{"type":"string","description":"Name of the path_shares table (or use shares_table_id)"},"files_table_id":{"type":"string","format":"uuid","description":"UUID of the files table (alternative to files_schema/files_table)"},"files_schema":{"type":"string","description":"Schema of the files table (or use files_table_id)"},"files_table":{"type":"string","description":"Name of the files table (or use files_table_id)"},"permission_field":{"type":"string","format":"column-ref","description":"Boolean column on the path_shares table that grants the required permission (e.g. can_read, can_write)"},"bucket_field":{"type":"string","format":"column-ref","description":"Column on the files table referencing the bucket","default":"bucket_id"},"path_field":{"type":"string","format":"column-ref","description":"Ltree column on the files table representing the file path","default":"path"}},"required":["permission_field"]}' AS jsonb), CAST('{"storage","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -932,13 +880,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('AuthzMemberList', 'authz_member_list', 'authz', 'Member List', 'Check if current user is in an array column on the same row.', '{"type":"object","properties":{"array_field":{"type":"string","format":"column-ref","description":"Column name containing the array of user IDs"}},"required":["array_field"]}'::jsonb, CAST('{"ownership","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('AuthzMemberList', 'authz_member_list', 'authz', 'Member List', 'Check if current user is in an array column on the same row.', '{"type":"object","properties":{"array_field":{"type":"string","format":"column-ref","description":"Column name containing the array of user IDs"}},"required":["array_field"]}'::jsonb, CAST('{"ownership","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -949,13 +891,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('AuthzMemberOwner', 'authz_member_owner', 'authz', 'Member Owner', 'Compound policy: the row must be owned by the current user (owner_field = current_user_id) AND the current user must be a member of the entity referenced by entity_field. Combines direct ownership with entity membership — the actor can only access rows they own within entities they belong to.', CAST('{"type":"object","properties":{"owner_field":{"type":"string","format":"column-ref","description":"Column name containing the owner user ID (e.g., owner_id)","default":"owner_id"},"entity_field":{"type":"string","format":"column-ref","description":"Column name referencing the entity (e.g., entity_id)","default":"entity_id"},"sel_field":{"type":"string","description":"SPRT column to select for the entity match","default":"entity_id"},"membership_type":{"type":["integer","string"],"description":"Scope: 1=app, 2=org, 3+=dynamic entity types (or string name resolved via membership_types_module)"},"entity_type":{"type":"string","description":"Entity type prefix (e.g. ''channel'', ''department''). Resolved to membership_type integer via memberships_module lookup."},"permission":{"type":"string","description":"Single permission name to check (resolved to bitstring mask)"},"permissions":{"type":"array","items":{"type":"string"},"description":"Multiple permission names to check (ORed together into mask)"}},"required":["owner_field","entity_field"]}' AS jsonb), CAST('{"ownership","membership","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('AuthzMemberOwner', 'authz_member_owner', 'authz', 'Member Owner', 'Compound policy: the row must be owned by the current user (owner_field = current_user_id) AND the current user must be a member of the entity referenced by entity_field. Combines direct ownership with entity membership — the actor can only access rows they own within entities they belong to.', CAST('{"type":"object","properties":{"owner_field":{"type":"string","format":"column-ref","description":"Column name containing the owner user ID (e.g., owner_id)","default":"owner_id"},"entity_field":{"type":"string","format":"column-ref","description":"Column name referencing the entity (e.g., entity_id)","default":"entity_id"},"sel_field":{"type":"string","description":"SPRT column to select for the entity match","default":"entity_id"},"membership_type":{"type":["integer","string"],"description":"Scope: 1=app, 2=org, 3+=dynamic entity types (or string name resolved via membership_types_module)"},"entity_type":{"type":"string","description":"Entity type prefix (e.g. ''channel'', ''department''). Resolved to membership_type integer via memberships_module lookup."},"permission":{"type":"string","description":"Single permission name to check (resolved to bitstring mask)"},"permissions":{"type":"array","items":{"type":"string"},"description":"Multiple permission names to check (ORed together into mask)"}},"required":["owner_field","entity_field"]}' AS jsonb), CAST('{"ownership","membership","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -966,13 +902,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('AuthzNotReadOnly', 'authz_not_read_only', 'authz', 'Not Read-Only', 'Restrictive policy that blocks read-only members from mutations. Checks actor_id + is_read_only IS NOT TRUE on the SPRT. Designed to run as a restrictive counterpart after a permissive AuthzEntityMembership policy has already verified membership.', CAST('{"type":"object","properties":{"entity_field":{"type":"string","format":"column-ref","description":"Column name referencing the entity (e.g., entity_id, org_id)"},"membership_type":{"type":["integer","string"],"description":"Scope: 2=org, 3+=dynamic entity types. Must be >= 2 (entity-scoped)."}},"required":["entity_field"]}' AS jsonb), CAST('{"membership","authz","restrictive"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('AuthzNotReadOnly', 'authz_not_read_only', 'authz', 'Not Read-Only', 'Restrictive policy that blocks read-only members from mutations. Checks actor_id + is_read_only IS NOT TRUE on the SPRT. Designed to run as a restrictive counterpart after a permissive AuthzEntityMembership policy has already verified membership.', CAST('{"type":"object","properties":{"entity_field":{"type":"string","format":"column-ref","description":"Column name referencing the entity (e.g., entity_id, org_id)"},"membership_type":{"type":["integer","string"],"description":"Scope: 2=org, 3+=dynamic entity types. Must be >= 2 (entity-scoped)."}},"required":["entity_field"]}' AS jsonb), CAST('{"membership","authz","restrictive"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -983,13 +913,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('AuthzOrgHierarchy', 'authz_org_hierarchy', 'authz', 'Org Hierarchy', 'Organizational hierarchy visibility using closure table. Managers can see subordinate data or subordinates can see manager data.', CAST('{"type":"object","properties":{"direction":{"type":"string","enum":["up","down"],"description":"down=manager sees subordinates, up=subordinate sees managers"},"entity_field":{"type":"string","format":"column-ref","description":"Field referencing the org entity","default":"entity_id"},"anchor_field":{"type":"string","format":"column-ref","description":"Field referencing the user (e.g., owner_id)"},"max_depth":{"type":"integer","description":"Optional max depth to limit visibility"}},"required":["direction","anchor_field"]}' AS jsonb), CAST('{"membership","hierarchy","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('AuthzOrgHierarchy', 'authz_org_hierarchy', 'authz', 'Org Hierarchy', 'Organizational hierarchy visibility using closure table. Managers can see subordinate data or subordinates can see manager data.', CAST('{"type":"object","properties":{"direction":{"type":"string","enum":["up","down"],"description":"down=manager sees subordinates, up=subordinate sees managers"},"entity_field":{"type":"string","format":"column-ref","description":"Field referencing the org entity","default":"entity_id"},"anchor_field":{"type":"string","format":"column-ref","description":"Field referencing the user (e.g., owner_id)"},"max_depth":{"type":"integer","description":"Optional max depth to limit visibility"}},"required":["direction","anchor_field"]}' AS jsonb), CAST('{"membership","hierarchy","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1000,13 +924,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('AuthzPeerOwnership', 'authz_peer_ownership', 'authz', 'Peer Ownership', 'Peer visibility through shared entity membership. Authorizes access to user-owned rows when the owner and current user are both members of the same entity. Self-joins the SPRT table to find peers.', CAST('{"type":"object","properties":{"owner_field":{"type":"string","format":"column-ref","description":"Column name on protected table referencing the owning user (e.g., owner_id)"},"membership_type":{"type":["integer","string"],"description":"Scope: 1=app, 2=org, 3+=dynamic entity types (or string name resolved via membership_types_module)"},"entity_type":{"type":"string","description":"Entity type prefix (e.g. ''channel'', ''department''). Resolved to membership_type integer via memberships_module lookup. Use instead of membership_type for readability."},"permission":{"type":"string","description":"Single permission name to check on the current user membership (resolved to bitstring mask)"},"permissions":{"type":"array","items":{"type":"string"},"description":"Multiple permission names to check on the current user membership (ORed together into mask)"},"is_admin":{"type":"boolean","description":"If true, require is_admin flag on current user membership"},"is_owner":{"type":"boolean","description":"If true, require is_owner flag on current user membership"}},"required":["owner_field"]}' AS jsonb), CAST('{"membership","peer","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('AuthzPeerOwnership', 'authz_peer_ownership', 'authz', 'Peer Ownership', 'Peer visibility through shared entity membership. Authorizes access to user-owned rows when the owner and current user are both members of the same entity. Self-joins the SPRT table to find peers.', CAST('{"type":"object","properties":{"owner_field":{"type":"string","format":"column-ref","description":"Column name on protected table referencing the owning user (e.g., owner_id)"},"membership_type":{"type":["integer","string"],"description":"Scope: 1=app, 2=org, 3+=dynamic entity types (or string name resolved via membership_types_module)"},"entity_type":{"type":"string","description":"Entity type prefix (e.g. ''channel'', ''department''). Resolved to membership_type integer via memberships_module lookup. Use instead of membership_type for readability."},"permission":{"type":"string","description":"Single permission name to check on the current user membership (resolved to bitstring mask)"},"permissions":{"type":"array","items":{"type":"string"},"description":"Multiple permission names to check on the current user membership (ORed together into mask)"},"is_admin":{"type":"boolean","description":"If true, require is_admin flag on current user membership"},"is_owner":{"type":"boolean","description":"If true, require is_owner flag on current user membership"}},"required":["owner_field"]}' AS jsonb), CAST('{"membership","peer","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1017,13 +935,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('AuthzPublishable', 'authz_publishable', 'authz', 'Published Content', 'Published state access control. Restricts access to records that are published.', CAST('{"type":"object","properties":{"is_published_field":{"type":"string","format":"column-ref","description":"Boolean field indicating published state","default":"is_published"},"published_at_field":{"type":"string","format":"column-ref","description":"Timestamp field for publish time","default":"published_at"},"require_published_at":{"type":"boolean","description":"Require published_at to be non-null and <= now()","default":true}}}' AS jsonb), CAST('{"temporal","publishing","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('AuthzPublishable', 'authz_publishable', 'authz', 'Published Content', 'Published state access control. Restricts access to records that are published.', CAST('{"type":"object","properties":{"is_published_field":{"type":"string","format":"column-ref","description":"Boolean field indicating published state","default":"is_published"},"published_at_field":{"type":"string","format":"column-ref","description":"Timestamp field for publish time","default":"published_at"},"require_published_at":{"type":"boolean","description":"Require published_at to be non-null and <= now()","default":true}}}' AS jsonb), CAST('{"temporal","publishing","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1034,13 +946,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('AuthzRelatedEntityMembership', 'authz_related_entity_membership', 'authz', 'Related Entity Membership', 'JOIN-based membership verification through related tables. Joins SPRT table with another table to verify membership.', CAST('{"type":"object","properties":{"entity_field":{"type":"string","format":"column-ref","description":"Column name on protected table referencing the join table"},"sel_field":{"type":"string","description":"SPRT column to select for the entity match","default":"entity_id"},"sprt_join_field":{"type":"string","description":"SPRT column to join on with the related table","default":"entity_id"},"membership_type":{"type":["integer","string"],"description":"Scope: 1=app, 2=org, 3+=dynamic entity types (or string name resolved via membership_types_module)"},"entity_type":{"type":"string","description":"Entity type prefix (e.g. ''channel'', ''department''). Resolved to membership_type integer via memberships_module lookup. Use instead of membership_type for readability."},"obj_table_id":{"type":"string","format":"uuid","description":"UUID of the join table (alternative to obj_schema/obj_table)"},"obj_schema":{"type":"string","description":"Schema of the join table (or use obj_table_id)"},"obj_table":{"type":"string","description":"Name of the join table (or use obj_table_id)"},"obj_field_id":{"type":"string","format":"uuid","description":"UUID of field on join table (alternative to obj_field)"},"obj_field":{"type":"string","format":"column-ref","description":"Field name on join table to match against SPRT entity_id"},"permission":{"type":"string","description":"Single permission name to check (resolved to bitstring mask)"},"permissions":{"type":"array","items":{"type":"string"},"description":"Multiple permission names to check (ORed together into mask)"},"is_admin":{"type":"boolean","description":"If true, require is_admin flag"},"is_owner":{"type":"boolean","description":"If true, require is_owner flag"}},"required":["entity_field"]}' AS jsonb), CAST('{"membership","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('AuthzRelatedEntityMembership', 'authz_related_entity_membership', 'authz', 'Related Entity Membership', 'JOIN-based membership verification through related tables. Joins SPRT table with another table to verify membership.', CAST('{"type":"object","properties":{"entity_field":{"type":"string","format":"column-ref","description":"Column name on protected table referencing the join table"},"sel_field":{"type":"string","description":"SPRT column to select for the entity match","default":"entity_id"},"sprt_join_field":{"type":"string","description":"SPRT column to join on with the related table","default":"entity_id"},"membership_type":{"type":["integer","string"],"description":"Scope: 1=app, 2=org, 3+=dynamic entity types (or string name resolved via membership_types_module)"},"entity_type":{"type":"string","description":"Entity type prefix (e.g. ''channel'', ''department''). Resolved to membership_type integer via memberships_module lookup. Use instead of membership_type for readability."},"obj_table_id":{"type":"string","format":"uuid","description":"UUID of the join table (alternative to obj_schema/obj_table)"},"obj_schema":{"type":"string","description":"Schema of the join table (or use obj_table_id)"},"obj_table":{"type":"string","description":"Name of the join table (or use obj_table_id)"},"obj_field_id":{"type":"string","format":"uuid","description":"UUID of field on join table (alternative to obj_field)"},"obj_field":{"type":"string","format":"column-ref","description":"Field name on join table to match against SPRT entity_id"},"permission":{"type":"string","description":"Single permission name to check (resolved to bitstring mask)"},"permissions":{"type":"array","items":{"type":"string"},"description":"Multiple permission names to check (ORed together into mask)"},"is_admin":{"type":"boolean","description":"If true, require is_admin flag"},"is_owner":{"type":"boolean","description":"If true, require is_owner flag"}},"required":["entity_field"]}' AS jsonb), CAST('{"membership","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1051,13 +957,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('AuthzRelatedMemberList', 'authz_related_member_list', 'authz', 'Related Member List', 'Array membership check in a related table.', CAST('{"type":"object","properties":{"owned_table_id":{"type":"string","format":"uuid","description":"UUID of the related table (alternative to owned_schema/owned_table)"},"owned_schema":{"type":"string","description":"Schema of the related table (or use owned_table_id)"},"owned_table":{"type":"string","description":"Name of the related table (or use owned_table_id)"},"owned_table_key":{"type":"string","format":"column-ref","description":"Array column in related table"},"owned_table_ref_key":{"type":"string","format":"column-ref","description":"FK column in related table"},"this_object_key":{"type":"string","format":"column-ref","description":"PK column in protected table"}},"required":["owned_table_key","owned_table_ref_key","this_object_key"]}' AS jsonb), CAST('{"ownership","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('AuthzRelatedMemberList', 'authz_related_member_list', 'authz', 'Related Member List', 'Array membership check in a related table.', CAST('{"type":"object","properties":{"owned_table_id":{"type":"string","format":"uuid","description":"UUID of the related table (alternative to owned_schema/owned_table)"},"owned_schema":{"type":"string","description":"Schema of the related table (or use owned_table_id)"},"owned_table":{"type":"string","description":"Name of the related table (or use owned_table_id)"},"owned_table_key":{"type":"string","format":"column-ref","description":"Array column in related table"},"owned_table_ref_key":{"type":"string","format":"column-ref","description":"FK column in related table"},"this_object_key":{"type":"string","format":"column-ref","description":"PK column in protected table"}},"required":["owned_table_key","owned_table_ref_key","this_object_key"]}' AS jsonb), CAST('{"ownership","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1068,13 +968,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('AuthzRelatedPeerOwnership', 'authz_related_peer_ownership', 'authz', 'Related Peer Ownership', 'Peer visibility through shared entity membership via a related table. Like AuthzPeerOwnership but the owning user is resolved through a FK JOIN to a related table. Combines SPRT self-join with object table JOIN.', CAST('{"type":"object","properties":{"entity_field":{"type":"string","format":"column-ref","description":"Column name on protected table referencing the related table (e.g., message_id)"},"membership_type":{"type":["integer","string"],"description":"Scope: 1=app, 2=org, 3+=dynamic entity types (or string name resolved via membership_types_module)"},"entity_type":{"type":"string","description":"Entity type prefix (e.g. ''channel'', ''department''). Resolved to membership_type integer via memberships_module lookup. Use instead of membership_type for readability."},"obj_table_id":{"type":"string","format":"uuid","description":"UUID of the related table (alternative to obj_schema/obj_table)"},"obj_schema":{"type":"string","description":"Schema of the related table (or use obj_table_id)"},"obj_table":{"type":"string","description":"Name of the related table (or use obj_table_id)"},"obj_field_id":{"type":"string","format":"uuid","description":"UUID of field on related table containing the owner user ID (alternative to obj_field)"},"obj_field":{"type":"string","format":"column-ref","description":"Field name on related table containing the owner user ID (e.g., sender_id)"},"obj_ref_field":{"type":"string","format":"column-ref","description":"Field on related table to select for matching entity_field","default":"id"},"permission":{"type":"string","description":"Single permission name to check on the current user membership (resolved to bitstring mask)"},"permissions":{"type":"array","items":{"type":"string"},"description":"Multiple permission names to check on the current user membership (ORed together into mask)"},"is_admin":{"type":"boolean","description":"If true, require is_admin flag on current user membership"},"is_owner":{"type":"boolean","description":"If true, require is_owner flag on current user membership"}},"required":["entity_field"]}' AS jsonb), CAST('{"membership","peer","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('AuthzRelatedPeerOwnership', 'authz_related_peer_ownership', 'authz', 'Related Peer Ownership', 'Peer visibility through shared entity membership via a related table. Like AuthzPeerOwnership but the owning user is resolved through a FK JOIN to a related table. Combines SPRT self-join with object table JOIN.', CAST('{"type":"object","properties":{"entity_field":{"type":"string","format":"column-ref","description":"Column name on protected table referencing the related table (e.g., message_id)"},"membership_type":{"type":["integer","string"],"description":"Scope: 1=app, 2=org, 3+=dynamic entity types (or string name resolved via membership_types_module)"},"entity_type":{"type":"string","description":"Entity type prefix (e.g. ''channel'', ''department''). Resolved to membership_type integer via memberships_module lookup. Use instead of membership_type for readability."},"obj_table_id":{"type":"string","format":"uuid","description":"UUID of the related table (alternative to obj_schema/obj_table)"},"obj_schema":{"type":"string","description":"Schema of the related table (or use obj_table_id)"},"obj_table":{"type":"string","description":"Name of the related table (or use obj_table_id)"},"obj_field_id":{"type":"string","format":"uuid","description":"UUID of field on related table containing the owner user ID (alternative to obj_field)"},"obj_field":{"type":"string","format":"column-ref","description":"Field name on related table containing the owner user ID (e.g., sender_id)"},"obj_ref_field":{"type":"string","format":"column-ref","description":"Field on related table to select for matching entity_field","default":"id"},"permission":{"type":"string","description":"Single permission name to check on the current user membership (resolved to bitstring mask)"},"permissions":{"type":"array","items":{"type":"string"},"description":"Multiple permission names to check on the current user membership (ORed together into mask)"},"is_admin":{"type":"boolean","description":"If true, require is_admin flag on current user membership"},"is_owner":{"type":"boolean","description":"If true, require is_owner flag on current user membership"}},"required":["entity_field"]}' AS jsonb), CAST('{"membership","peer","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1085,13 +979,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('AuthzTemporal', 'authz_temporal', 'authz', 'Temporal Access', 'Time-window based access control. Restricts access based on valid_from and/or valid_until timestamps. At least one of valid_from_field or valid_until_field must be provided.', CAST('{"type":"object","properties":{"valid_from_field":{"type":"string","format":"column-ref","description":"Column for start time (at least one of valid_from_field or valid_until_field required)"},"valid_until_field":{"type":"string","format":"column-ref","description":"Column for end time (at least one of valid_from_field or valid_until_field required)"},"valid_from_inclusive":{"type":"boolean","description":"Include start boundary","default":true},"valid_until_inclusive":{"type":"boolean","description":"Include end boundary","default":false}},"anyOf":[{"required":["valid_from_field"]},{"required":["valid_until_field"]}]}' AS jsonb), CAST('{"temporal","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('AuthzTemporal', 'authz_temporal', 'authz', 'Temporal Access', 'Time-window based access control. Restricts access based on valid_from and/or valid_until timestamps. At least one of valid_from_field or valid_until_field must be provided.', CAST('{"type":"object","properties":{"valid_from_field":{"type":"string","format":"column-ref","description":"Column for start time (at least one of valid_from_field or valid_until_field required)"},"valid_until_field":{"type":"string","format":"column-ref","description":"Column for end time (at least one of valid_from_field or valid_until_field required)"},"valid_from_inclusive":{"type":"boolean","description":"Include start boundary","default":true},"valid_until_inclusive":{"type":"boolean","description":"Include end boundary","default":false}},"anyOf":[{"required":["valid_from_field"]},{"required":["valid_until_field"]}]}' AS jsonb), CAST('{"temporal","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1102,13 +990,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('CheckGreaterThan', 'check_greater_than', 'check', 'Check Greater Than', 'Adds a CHECK constraint that validates a column value is greater than a threshold (single-column: column > value) or that one column is greater than another (cross-column: columns[0] > columns[1]). Compiled via AST helpers.', CAST('{"type":"object","properties":{"column":{"type":"string","format":"column-ref","description":"Single column to compare against value (mutually exclusive with columns)"},"value":{"type":"number","description":"Threshold value for single-column comparison (column > value)","default":0},"columns":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Two columns for cross-column comparison (columns[0] > columns[1])","minItems":2,"maxItems":2}}}' AS jsonb), CAST('{"check","constraint","validation","comparison"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('CheckGreaterThan', 'check_greater_than', 'check', 'Check Greater Than', 'Adds a CHECK constraint that validates a column value is greater than a threshold (single-column: column > value) or that one column is greater than another (cross-column: columns[0] > columns[1]). Compiled via AST helpers.', CAST('{"type":"object","properties":{"column":{"type":"string","format":"column-ref","description":"Single column to compare against value (mutually exclusive with columns)"},"value":{"type":"number","description":"Threshold value for single-column comparison (column > value)","default":0},"columns":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Two columns for cross-column comparison (columns[0] > columns[1])","minItems":2,"maxItems":2}}}' AS jsonb), CAST('{"check","constraint","validation","comparison"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1119,13 +1001,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('CheckLessThan', 'check_less_than', 'check', 'Check Less Than', 'Adds a CHECK constraint that validates a column value is less than a threshold (single-column: column < value) or that one column is less than another (cross-column: columns[0] < columns[1]). Compiled via AST helpers.', CAST('{"type":"object","properties":{"column":{"type":"string","format":"column-ref","description":"Single column to compare against value (mutually exclusive with columns)"},"value":{"type":"number","description":"Threshold value for single-column comparison (column < value)"},"columns":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Two columns for cross-column comparison (columns[0] < columns[1])","minItems":2,"maxItems":2}}}' AS jsonb), CAST('{"check","constraint","validation","comparison"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('CheckLessThan', 'check_less_than', 'check', 'Check Less Than', 'Adds a CHECK constraint that validates a column value is less than a threshold (single-column: column < value) or that one column is less than another (cross-column: columns[0] < columns[1]). Compiled via AST helpers.', CAST('{"type":"object","properties":{"column":{"type":"string","format":"column-ref","description":"Single column to compare against value (mutually exclusive with columns)"},"value":{"type":"number","description":"Threshold value for single-column comparison (column < value)"},"columns":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Two columns for cross-column comparison (columns[0] < columns[1])","minItems":2,"maxItems":2}}}' AS jsonb), CAST('{"check","constraint","validation","comparison"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1136,13 +1012,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('CheckNotEqual', 'check_not_equal', 'check', 'Check Not Equal', 'Adds a CHECK constraint that validates two columns are not equal (columns[0] != columns[1]). Useful for preventing self-referencing rows. Compiled via AST helpers.', '{"type":"object","properties":{"columns":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Two columns that must not be equal","minItems":2,"maxItems":2}},"required":["columns"]}'::jsonb, CAST('{"check","constraint","validation","inequality"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('CheckNotEqual', 'check_not_equal', 'check', 'Check Not Equal', 'Adds a CHECK constraint that validates two columns are not equal (columns[0] != columns[1]). Useful for preventing self-referencing rows. Compiled via AST helpers.', '{"type":"object","properties":{"columns":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Two columns that must not be equal","minItems":2,"maxItems":2}},"required":["columns"]}'::jsonb, CAST('{"check","constraint","validation","inequality"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1153,13 +1023,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('CheckOneOf', 'check_one_of', 'check', 'Check One Of', 'Adds a CHECK constraint that validates a column value is one of an allowed set (e.g. tier IN (''free'', ''paid'', ''custom'')). Compiled to column = ANY(ARRAY[...]) via AST helpers.', '{"type":"object","properties":{"column":{"type":"string","format":"column-ref","description":"Column to validate against the allowed values"},"values":{"type":"array","items":{"type":"string"},"description":"Array of allowed values for the column"}},"required":["column","values"]}'::jsonb, CAST('{"check","constraint","validation","enum"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('CheckOneOf', 'check_one_of', 'check', 'Check One Of', 'Adds a CHECK constraint that validates a column value is one of an allowed set (e.g. tier IN (''free'', ''paid'', ''custom'')). Compiled to column = ANY(ARRAY[...]) via AST helpers.', '{"type":"object","properties":{"column":{"type":"string","format":"column-ref","description":"Column to validate against the allowed values"},"values":{"type":"array","items":{"type":"string"},"description":"Array of allowed values for the column"}},"required":["column","values"]}'::jsonb, CAST('{"check","constraint","validation","enum"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1170,13 +1034,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataArchivable', 'data_archivable', 'data', 'Archivable', 'Adds user-reversible archive support with is_archived boolean and archived_at timestamp, plus a partial index for efficient active-row queries.', '{"type":"object","properties":{"is_archived_field":{"type":"string","format":"column-ref","description":"Column name for the archive boolean flag","default":"is_archived"},"archived_at_field":{"type":"string","format":"column-ref","description":"Column name for the archive timestamp","default":"archived_at"},"include_id":{"type":"boolean","description":"If true, also adds a UUID primary key column with auto-generation","default":true}}}'::jsonb, CAST('{"schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataArchivable', 'data_archivable', 'data', 'Archivable', 'Adds user-reversible archive support with is_archived boolean and archived_at timestamp, plus a partial index for efficient active-row queries.', '{"type":"object","properties":{"is_archived_field":{"type":"string","format":"column-ref","description":"Column name for the archive boolean flag","default":"is_archived"},"archived_at_field":{"type":"string","format":"column-ref","description":"Column name for the archive timestamp","default":"archived_at"},"include_id":{"type":"boolean","description":"If true, also adds a UUID primary key column with auto-generation","default":true}}}'::jsonb, CAST('{"schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1187,13 +1045,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataBulk', 'data_bulk', 'data', 'Bulk Operations', 'Enables bulk mutation smart tags on a table. When provisioned, adds @behavior tags for the selected bulk operations (insert, upsert, update, delete). Requires the graphile-bulk-mutations plugin.', CAST('{"type":"object","properties":{"insert":{"type":"boolean","description":"Enable bulk insert (+bulkInsert)","default":true},"upsert":{"type":"boolean","description":"Enable bulk upsert (+bulkUpsert)","default":false},"update":{"type":"boolean","description":"Enable bulk update (+bulkUpdate)","default":false},"delete":{"type":"boolean","description":"Enable bulk delete (+bulkDelete)","default":false}}}' AS jsonb), CAST('{"bulk","mutations","graphile"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataBulk', 'data_bulk', 'data', 'Bulk Operations', 'Enables bulk mutation smart tags on a table. When provisioned, adds @behavior tags for the selected bulk operations (insert, upsert, update, delete). Requires the graphile-bulk-mutations plugin.', CAST('{"type":"object","properties":{"insert":{"type":"boolean","description":"Enable bulk insert (+bulkInsert)","default":true},"upsert":{"type":"boolean","description":"Enable bulk upsert (+bulkUpsert)","default":false},"update":{"type":"boolean","description":"Enable bulk update (+bulkUpdate)","default":false},"delete":{"type":"boolean","description":"Enable bulk delete (+bulkDelete)","default":false}}}' AS jsonb), CAST('{"bulk","mutations","graphile"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1204,13 +1056,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataCompositeField', 'data_composite_field', 'data', 'Composite Field', 'Creates a derived text field that automatically concatenates multiple source fields via BEFORE INSERT/UPDATE triggers. Used to produce a unified text representation (e.g., embedding_text) from multiple columns on a table. The trigger fires with ''_000'' prefix to run before Search* triggers alphabetically.', CAST('{"type":"object","properties":{"target":{"type":"string","format":"column-ref","description":"Name of the derived text field to create","default":"embedding_text"},"source_fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Array of source field names to concatenate into the target field"},"format":{"type":"string","enum":["labeled","plain"],"description":"Output format: ''labeled'' (field_name: value) or ''plain'' (values only)","default":"labeled"}},"required":["source_fields"]}' AS jsonb), CAST('{"transform","behavior"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataCompositeField', 'data_composite_field', 'data', 'Composite Field', 'Creates a derived text field that automatically concatenates multiple source fields via BEFORE INSERT/UPDATE triggers. Used to produce a unified text representation (e.g., embedding_text) from multiple columns on a table. The trigger fires with ''_000'' prefix to run before Search* triggers alphabetically.', CAST('{"type":"object","properties":{"target":{"type":"string","format":"column-ref","description":"Name of the derived text field to create","default":"embedding_text"},"source_fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Array of source field names to concatenate into the target field"},"format":{"type":"string","enum":["labeled","plain"],"description":"Output format: ''labeled'' (field_name: value) or ''plain'' (values only)","default":"labeled"}},"required":["source_fields"]}' AS jsonb), CAST('{"transform","behavior"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1221,13 +1067,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataDirectOwner', 'data_direct_owner', 'data', 'Ownership', 'Adds ownership column for direct user ownership. Enables AuthzDirectOwner authorization.', '{"type":"object","properties":{"owner_field_name":{"type":"string","format":"column-ref","description":"Column name for owner ID","default":"owner_id"},"include_id":{"type":"boolean","description":"If true, also adds a UUID primary key column with auto-generation","default":true},"include_user_fk":{"type":"boolean","description":"If true, adds a foreign key constraint from owner_id to the users table","default":true},"create_index":{"type":"boolean","description":"If true, creates a B-tree index on the owner column","default":true}}}'::jsonb, CAST('{"ownership","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataDirectOwner', 'data_direct_owner', 'data', 'Ownership', 'Adds ownership column for direct user ownership. Enables AuthzDirectOwner authorization.', '{"type":"object","properties":{"owner_field_name":{"type":"string","format":"column-ref","description":"Column name for owner ID","default":"owner_id"},"include_id":{"type":"boolean","description":"If true, also adds a UUID primary key column with auto-generation","default":true},"include_user_fk":{"type":"boolean","description":"If true, adds a foreign key constraint from owner_id to the users table","default":true},"create_index":{"type":"boolean","description":"If true, creates a B-tree index on the owner column","default":true}}}'::jsonb, CAST('{"ownership","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1238,13 +1078,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataEntityMembership', 'data_entity_membership', 'data', 'Entity Membership', 'Adds entity reference for organization/group scoping. Enables AuthzEntityMembership, AuthzMembership, AuthzOrgHierarchy authorization.', '{"type":"object","properties":{"entity_field_name":{"type":"string","format":"column-ref","description":"Column name for entity ID","default":"entity_id"},"include_id":{"type":"boolean","description":"If true, also adds a UUID primary key column with auto-generation","default":true},"include_user_fk":{"type":"boolean","description":"If true, adds a foreign key constraint from entity_id to the users table","default":true},"create_index":{"type":"boolean","description":"If true, creates a B-tree index on the entity column","default":true}}}'::jsonb, CAST('{"membership","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataEntityMembership', 'data_entity_membership', 'data', 'Entity Membership', 'Adds entity reference for organization/group scoping. Enables AuthzEntityMembership, AuthzMembership, AuthzOrgHierarchy authorization.', '{"type":"object","properties":{"entity_field_name":{"type":"string","format":"column-ref","description":"Column name for entity ID","default":"entity_id"},"include_id":{"type":"boolean","description":"If true, also adds a UUID primary key column with auto-generation","default":true},"include_user_fk":{"type":"boolean","description":"If true, adds a foreign key constraint from entity_id to the users table","default":true},"create_index":{"type":"boolean","description":"If true, creates a B-tree index on the entity column","default":true}}}'::jsonb, CAST('{"membership","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1255,13 +1089,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataForceCurrentUser', 'data_force_current_user', 'data', 'Force Current User', 'BEFORE INSERT trigger that forces a field to the value of jwt_public.current_user_id(). Prevents clients from spoofing the actor/uploader identity. The field value is always overwritten regardless of what the client provides.', CAST('{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of the field to force to current_user_id()","default":"actor_id"}}}' AS jsonb), CAST('{"trigger","security","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataForceCurrentUser', 'data_force_current_user', 'data', 'Force Current User', 'BEFORE INSERT trigger that forces a field to the value of jwt_public.current_user_id(). Prevents clients from spoofing the actor/uploader identity. The field value is always overwritten regardless of what the client provides.', CAST('{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of the field to force to current_user_id()","default":"actor_id"}}}' AS jsonb), CAST('{"trigger","security","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1272,13 +1100,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataI18n', 'data_i18n', 'data', 'Internationalization', 'Creates a companion _translations table with lang_code + translatable fields. Copies SELECT policies and column-ref fields from the base table. Adds @i18n smart comment so the Graphile i18n plugin discovers it. Requires i18n_module to be provisioned for the database.', CAST('{"type":"object","properties":{"fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Field names on the base table to make translatable. Each field is duplicated on the translation table with the same type."},"table_suffix":{"type":"string","description":"Suffix for the translation table name","default":"_translations"},"lang_code_type":{"type":"string","enum":["citext","text"],"description":"Type for the lang_code column","default":"citext"},"copy_mutation_policies":{"type":"boolean","description":"Whether to also copy INSERT/UPDATE/DELETE policies (not just SELECT). Default true — translations should be editable by the same users who can edit the base row.","default":true},"search":{"type":"object","description":"SearchFullText configuration for the translations table. When provided, creates a tsvector column on the translations table with lang_column=lang_code for dynamic per-row language stemming.","properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of the tsvector column on the translations table","default":"search"},"source_fields":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","format":"column-ref","description":"Name of the translatable source column"},"weight":{"type":"string","enum":["A","B","C","D"],"description":"tsvector weight class (A=highest, D=lowest)","default":"D"}},"required":["field"]},"description":"Translatable columns that feed the tsvector. Language is determined dynamically from the lang_code column of each row."},"search_score_weight":{"type":"number","description":"Weight for this algorithm in composite searchScore","default":1}},"required":["source_fields"]}},"required":["fields"]}' AS jsonb), CAST('{"i18n","translation","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataI18n', 'data_i18n', 'data', 'Internationalization', 'Creates a companion _translations table with lang_code + translatable fields. Copies SELECT policies and column-ref fields from the base table. Adds @i18n smart comment so the Graphile i18n plugin discovers it. Requires i18n_module to be provisioned for the database.', CAST('{"type":"object","properties":{"fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Field names on the base table to make translatable. Each field is duplicated on the translation table with the same type."},"table_suffix":{"type":"string","description":"Suffix for the translation table name","default":"_translations"},"lang_code_type":{"type":"string","enum":["citext","text"],"description":"Type for the lang_code column","default":"citext"},"copy_mutation_policies":{"type":"boolean","description":"Whether to also copy INSERT/UPDATE/DELETE policies (not just SELECT). Default true — translations should be editable by the same users who can edit the base row.","default":true},"search":{"type":"object","description":"SearchFullText configuration for the translations table. When provided, creates a tsvector column on the translations table with lang_column=lang_code for dynamic per-row language stemming.","properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of the tsvector column on the translations table","default":"search"},"source_fields":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","format":"column-ref","description":"Name of the translatable source column"},"weight":{"type":"string","enum":["A","B","C","D"],"description":"tsvector weight class (A=highest, D=lowest)","default":"D"}},"required":["field"]},"description":"Translatable columns that feed the tsvector. Language is determined dynamically from the lang_code column of each row."},"search_score_weight":{"type":"number","description":"Weight for this algorithm in composite searchScore","default":1}},"required":["source_fields"]}},"required":["fields"]}' AS jsonb), CAST('{"i18n","translation","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1289,13 +1111,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataId', 'data_id', 'data', 'Primary Key ID', 'Adds a UUID primary key column with auto-generation default (uuidv7). This is the standard primary key pattern for all tables.', '{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Column name for the primary key","default":"id"}}}'::jsonb, CAST('{"primary_key","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataId', 'data_id', 'data', 'Primary Key ID', 'Adds a UUID primary key column with auto-generation default (uuidv7). This is the standard primary key pattern for all tables.', '{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Column name for the primary key","default":"id"}}}'::jsonb, CAST('{"primary_key","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1306,13 +1122,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataImmutableFields', 'data_immutable_fields', 'data', 'Immutable Fields', 'BEFORE UPDATE trigger that prevents changes to a list of specified fields after INSERT. Raises an exception if any of the listed fields have changed. Unlike FieldImmutable (single-field), this handles multiple fields in a single trigger for efficiency.', CAST(E'{"type":"object","properties":{"fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Field names that cannot be modified after INSERT (e.g. [\\"key\\", \\"bucket_id\\", \\"owner_id\\"])"}},"required":["fields"]}' AS jsonb), CAST('{"trigger","constraint","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataImmutableFields', 'data_immutable_fields', 'data', 'Immutable Fields', 'BEFORE UPDATE trigger that prevents changes to a list of specified fields after INSERT. Raises an exception if any of the listed fields have changed. Unlike FieldImmutable (single-field), this handles multiple fields in a single trigger for efficiency.', CAST(E'{"type":"object","properties":{"fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Field names that cannot be modified after INSERT (e.g. [\\"key\\", \\"bucket_id\\", \\"owner_id\\"])"}},"required":["fields"]}' AS jsonb), CAST('{"trigger","constraint","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1323,13 +1133,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataInflection', 'data_inflection', 'data', 'Inflection', 'Transforms field values using inflection operations (snake_case, camelCase, slugify, plural, singular, etc). Attaches BEFORE INSERT and BEFORE UPDATE triggers. References fields by name in data jsonb.', '{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of the field to transform"},"ops":{"type":"array","items":{"type":"string","enum":["plural","singular","camel","pascal","dashed","slugify","underscore","lower","upper"]},"description":"Inflection operations to apply in order"}},"required":["field_name","ops"]}'::jsonb, CAST('{"transform","behavior"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataInflection', 'data_inflection', 'data', 'Inflection', 'Transforms field values using inflection operations (snake_case, camelCase, slugify, plural, singular, etc). Attaches BEFORE INSERT and BEFORE UPDATE triggers. References fields by name in data jsonb.', '{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of the field to transform"},"ops":{"type":"array","items":{"type":"string","enum":["plural","singular","camel","pascal","dashed","slugify","underscore","lower","upper"]},"description":"Inflection operations to apply in order"}},"required":["field_name","ops"]}'::jsonb, CAST('{"transform","behavior"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1340,13 +1144,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataInheritFromParent', 'data_inherit_from_parent', 'data', 'Inherit From Parent', 'BEFORE INSERT trigger that copies specified fields from a parent table via a foreign key. The parent row is looked up through RLS (SECURITY INVOKER), so the insert fails if the caller cannot see the parent. Used by the storage module to inherit owner_id and is_public from buckets to files.', CAST(E'{"type":"object","properties":{"parent_fk_field":{"type":"string","format":"column-ref","description":"Name of the FK field on this table that references the parent (e.g. bucket_id)"},"fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Field names to copy from the parent row (e.g. [\\"owner_id\\", \\"is_public\\"])"},"parent_table":{"type":"string","description":"Parent table name (optional fallback if FK not yet registered in metaschema)"},"parent_schema":{"type":"string","description":"Parent table schema (optional, defaults to same schema as child table)"}},"required":["parent_fk_field","fields"]}' AS jsonb), CAST('{"trigger","inheritance","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataInheritFromParent', 'data_inherit_from_parent', 'data', 'Inherit From Parent', 'BEFORE INSERT trigger that copies specified fields from a parent table via a foreign key. The parent row is looked up through RLS (SECURITY INVOKER), so the insert fails if the caller cannot see the parent. Used by the storage module to inherit owner_id and is_public from buckets to files.', CAST(E'{"type":"object","properties":{"parent_fk_field":{"type":"string","format":"column-ref","description":"Name of the FK field on this table that references the parent (e.g. bucket_id)"},"fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Field names to copy from the parent row (e.g. [\\"owner_id\\", \\"is_public\\"])"},"parent_table":{"type":"string","description":"Parent table name (optional fallback if FK not yet registered in metaschema)"},"parent_schema":{"type":"string","description":"Parent table schema (optional, defaults to same schema as child table)"}},"required":["parent_fk_field","fields"]}' AS jsonb), CAST('{"trigger","inheritance","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1357,13 +1155,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataJsonb', 'data_jsonb', 'data', 'JSONB Field', 'Adds a JSONB column with optional GIN index for containment queries (@>, ?, ?|, ?&). Standard pattern for semi-structured metadata.', '{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Column name for the JSONB field","default":"metadata"},"default_value":{"type":"object","description":"Default value as a FieldDefault object","default":{"value":{},"cast":{"name":"jsonb"}}},"is_required":{"type":"boolean","description":"Whether the column has a NOT NULL constraint","default":false},"create_index":{"type":"boolean","description":"Whether to create a GIN index","default":true}}}'::jsonb, CAST('{"jsonb","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataJsonb', 'data_jsonb', 'data', 'JSONB Field', 'Adds a JSONB column with optional GIN index for containment queries (@>, ?, ?|, ?&). Standard pattern for semi-structured metadata.', '{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Column name for the JSONB field","default":"metadata"},"default_value":{"type":"object","description":"Default value as a FieldDefault object","default":{"value":{},"cast":{"name":"jsonb"}}},"is_required":{"type":"boolean","description":"Whether the column has a NOT NULL constraint","default":false},"create_index":{"type":"boolean","description":"Whether to create a GIN index","default":true}}}'::jsonb, CAST('{"jsonb","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1374,13 +1166,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataMemberOwner', 'data_member_owner', 'data', 'Member Owner', 'Adds owner_id and entity_id columns with a compound AuthzMemberOwner policy. The actor must own the row (owner_id = current_user_id()) AND be a member of the entity (entity_id in SPRT). Use for private data within an entity scope — e.g., personal chat threads that belong to the company but only the author can see.', '{"type":"object","properties":{"owner_field_name":{"type":"string","format":"column-ref","description":"Column name for the owner reference","default":"owner_id"},"entity_field_name":{"type":"string","format":"column-ref","description":"Column name for the entity reference","default":"entity_id"},"include_id":{"type":"boolean","description":"If true, also adds a UUID primary key column with auto-generation","default":true},"include_user_fk":{"type":"boolean","description":"If true, adds foreign key constraints from owner_id and entity_id to the users table","default":true},"create_index":{"type":"boolean","description":"If true, creates B-tree indexes on the owner and entity columns","default":true},"membership_type":{"type":"integer","description":"Membership type for SPRT resolution. Required for entity-scoped provisioning.","default":null}}}'::jsonb, CAST('{"ownership","membership","security","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataMemberOwner', 'data_member_owner', 'data', 'Member Owner', 'Adds owner_id and entity_id columns with a compound AuthzMemberOwner policy. The actor must own the row (owner_id = current_user_id()) AND be a member of the entity (entity_id in SPRT). Use for private data within an entity scope — e.g., personal chat threads that belong to the company but only the author can see.', '{"type":"object","properties":{"owner_field_name":{"type":"string","format":"column-ref","description":"Column name for the owner reference","default":"owner_id"},"entity_field_name":{"type":"string","format":"column-ref","description":"Column name for the entity reference","default":"entity_id"},"include_id":{"type":"boolean","description":"If true, also adds a UUID primary key column with auto-generation","default":true},"include_user_fk":{"type":"boolean","description":"If true, adds foreign key constraints from owner_id and entity_id to the users table","default":true},"create_index":{"type":"boolean","description":"If true, creates B-tree indexes on the owner and entity columns","default":true},"membership_type":{"type":"integer","description":"Membership type for SPRT resolution. Required for entity-scoped provisioning.","default":null}}}'::jsonb, CAST('{"ownership","membership","security","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1391,13 +1177,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataOwnedFields', 'data_owned_fields', 'data', 'Owned Fields', 'Restricts which user can modify specific columns in shared objects. Creates an AFTER UPDATE trigger that throws OWNED_PROPS when a non-owner tries to change protected fields. References fields by name in data jsonb.', CAST('{"type":"object","properties":{"role_key_field_name":{"type":"string","format":"column-ref","description":"Name of the field identifying the owner (e.g. sender_id)"},"protected_field_names":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Names of fields only this owner can modify"}},"required":["role_key_field_name","protected_field_names"]}' AS jsonb), CAST('{"ownership","constraint","behavior"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataOwnedFields', 'data_owned_fields', 'data', 'Owned Fields', 'Restricts which user can modify specific columns in shared objects. Creates an AFTER UPDATE trigger that throws OWNED_PROPS when a non-owner tries to change protected fields. References fields by name in data jsonb.', CAST('{"type":"object","properties":{"role_key_field_name":{"type":"string","format":"column-ref","description":"Name of the field identifying the owner (e.g. sender_id)"},"protected_field_names":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Names of fields only this owner can modify"}},"required":["role_key_field_name","protected_field_names"]}' AS jsonb), CAST('{"ownership","constraint","behavior"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1408,13 +1188,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataOwnershipInEntity', 'data_ownership_in_entity', 'data', 'Ownership In Entity', 'Combines direct ownership with entity scoping. Adds both owner_id and entity_id columns. Enables AuthzDirectOwner, AuthzEntityMembership, and AuthzOrgHierarchy authorization. Particularly useful for OrgHierarchy where a user owns a row (owner_id) within an entity (entity_id), and managers above can see subordinate-owned records via the hierarchy closure table.', '{"type":"object","properties":{"owner_field_name":{"type":"string","format":"column-ref","description":"Column name for the owner reference","default":"owner_id"},"entity_field_name":{"type":"string","format":"column-ref","description":"Column name for the entity reference","default":"entity_id"},"include_id":{"type":"boolean","description":"If true, also adds a UUID primary key column with auto-generation","default":true},"include_user_fk":{"type":"boolean","description":"If true, adds foreign key constraints from owner_id and entity_id to the users table","default":true},"create_index":{"type":"boolean","description":"If true, creates B-tree indexes on the owner and entity columns","default":true}}}'::jsonb, CAST('{"ownership","membership","hierarchy","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataOwnershipInEntity', 'data_ownership_in_entity', 'data', 'Ownership In Entity', 'Combines direct ownership with entity scoping. Adds both owner_id and entity_id columns. Enables AuthzDirectOwner, AuthzEntityMembership, and AuthzOrgHierarchy authorization. Particularly useful for OrgHierarchy where a user owns a row (owner_id) within an entity (entity_id), and managers above can see subordinate-owned records via the hierarchy closure table.', '{"type":"object","properties":{"owner_field_name":{"type":"string","format":"column-ref","description":"Column name for the owner reference","default":"owner_id"},"entity_field_name":{"type":"string","format":"column-ref","description":"Column name for the entity reference","default":"entity_id"},"include_id":{"type":"boolean","description":"If true, also adds a UUID primary key column with auto-generation","default":true},"include_user_fk":{"type":"boolean","description":"If true, adds foreign key constraints from owner_id and entity_id to the users table","default":true},"create_index":{"type":"boolean","description":"If true, creates B-tree indexes on the owner and entity columns","default":true}}}'::jsonb, CAST('{"ownership","membership","hierarchy","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1425,13 +1199,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataPeoplestamps', 'data_peoplestamps', 'data', 'Peoplestamps', 'Adds user tracking for creates/updates with created_by and updated_by columns.', '{"type":"object","properties":{"created_by_field":{"type":"string","format":"column-ref","description":"Column name for the creating user reference","default":"created_by"},"updated_by_field":{"type":"string","format":"column-ref","description":"Column name for the last-updating user reference","default":"updated_by"},"include_id":{"type":"boolean","description":"If true, also adds a UUID primary key column with auto-generation","default":true},"include_user_fk":{"type":"boolean","description":"If true, adds foreign key constraints from created_by and updated_by to the users table","default":false},"create_index":{"type":"boolean","description":"If true, creates B-tree indexes on the peoplestamp columns","default":true}}}'::jsonb, CAST('{"timestamps","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataPeoplestamps', 'data_peoplestamps', 'data', 'Peoplestamps', 'Adds user tracking for creates/updates with created_by and updated_by columns.', '{"type":"object","properties":{"created_by_field":{"type":"string","format":"column-ref","description":"Column name for the creating user reference","default":"created_by"},"updated_by_field":{"type":"string","format":"column-ref","description":"Column name for the last-updating user reference","default":"updated_by"},"include_id":{"type":"boolean","description":"If true, also adds a UUID primary key column with auto-generation","default":true},"include_user_fk":{"type":"boolean","description":"If true, adds foreign key constraints from created_by and updated_by to the users table","default":false},"create_index":{"type":"boolean","description":"If true, creates B-tree indexes on the peoplestamp columns","default":true}}}'::jsonb, CAST('{"timestamps","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1442,13 +1210,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataPublishable', 'data_publishable', 'data', 'Publishable', 'Adds publish state columns (is_published, published_at) for content visibility. Enables AuthzPublishable and AuthzTemporal authorization.', '{"type":"object","properties":{"is_published_field_name":{"type":"string","format":"column-ref","description":"Column name for the published boolean flag","default":"is_published"},"published_at_field_name":{"type":"string","format":"column-ref","description":"Column name for the publish timestamp","default":"published_at"},"include_id":{"type":"boolean","description":"If true, also adds a UUID primary key column with auto-generation","default":true}}}'::jsonb, CAST('{"publishing","temporal","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataPublishable', 'data_publishable', 'data', 'Publishable', 'Adds publish state columns (is_published, published_at) for content visibility. Enables AuthzPublishable and AuthzTemporal authorization.', '{"type":"object","properties":{"is_published_field_name":{"type":"string","format":"column-ref","description":"Column name for the published boolean flag","default":"is_published"},"published_at_field_name":{"type":"string","format":"column-ref","description":"Column name for the publish timestamp","default":"published_at"},"include_id":{"type":"boolean","description":"If true, also adds a UUID primary key column with auto-generation","default":true}}}'::jsonb, CAST('{"publishing","temporal","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1459,13 +1221,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataRealtime', 'data_realtime', 'data', 'Realtime Subscriptions', 'Creates per-table subscriber tables in subscriptions_public with RLS policies derived from source table SELECT policies. Attaches statement-level triggers to emit changes to subscribers.', CAST('{"type":"object","properties":{"operations":{"type":"array","items":{"type":"string","enum":["INSERT","UPDATE","DELETE"]},"description":"Which DML operations to track with emit_change triggers","default":["INSERT","UPDATE","DELETE"]},"subscriber_table_name":{"type":"string","description":"Custom name for the subscriber table (defaults to {source_table}_subscriber)"}}}' AS jsonb), CAST('{"realtime","subscriptions","triggers"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataRealtime', 'data_realtime', 'data', 'Realtime Subscriptions', 'Creates per-table subscriber tables in subscriptions_public with RLS policies derived from source table SELECT policies. Attaches statement-level triggers to emit changes to subscribers.', CAST('{"type":"object","properties":{"operations":{"type":"array","items":{"type":"string","enum":["INSERT","UPDATE","DELETE"]},"description":"Which DML operations to track with emit_change triggers","default":["INSERT","UPDATE","DELETE"]},"subscriber_table_name":{"type":"string","description":"Custom name for the subscriber table (defaults to {source_table}_subscriber)"}}}' AS jsonb), CAST('{"realtime","subscriptions","triggers"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1476,13 +1232,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataSlug', 'data_slug', 'data', 'Slug', 'Auto-generates URL-friendly slugs from field values on insert/update. Attaches BEFORE INSERT and BEFORE UPDATE triggers that call inflection.slugify() on the target field. References fields by name in data jsonb.', CAST('{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of the field to slugify","default":"slug"},"source_field_name":{"type":"string","format":"column-ref","description":"Optional source field name (defaults to field_name)"}},"required":[]}' AS jsonb), CAST('{"transform","behavior"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataSlug', 'data_slug', 'data', 'Slug', 'Auto-generates URL-friendly slugs from field values on insert/update. Attaches BEFORE INSERT and BEFORE UPDATE triggers that call inflection.slugify() on the target field. References fields by name in data jsonb.', CAST('{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of the field to slugify","default":"slug"},"source_field_name":{"type":"string","format":"column-ref","description":"Optional source field name (defaults to field_name)"}},"required":[]}' AS jsonb), CAST('{"transform","behavior"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1493,13 +1243,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataSoftDelete', 'data_soft_delete', 'data', 'Soft Delete', 'Adds soft delete support with deleted_at and is_deleted columns.', '{"type":"object","properties":{"deleted_at_field":{"type":"string","format":"column-ref","description":"Column name for the soft-delete timestamp","default":"deleted_at"},"is_deleted_field":{"type":"string","format":"column-ref","description":"Column name for the soft-delete boolean flag","default":"is_deleted"},"include_id":{"type":"boolean","description":"If true, also adds a UUID primary key column with auto-generation","default":true}}}'::jsonb, CAST('{"schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataSoftDelete', 'data_soft_delete', 'data', 'Soft Delete', 'Adds soft delete support with deleted_at and is_deleted columns.', '{"type":"object","properties":{"deleted_at_field":{"type":"string","format":"column-ref","description":"Column name for the soft-delete timestamp","default":"deleted_at"},"is_deleted_field":{"type":"string","format":"column-ref","description":"Column name for the soft-delete boolean flag","default":"is_deleted"},"include_id":{"type":"boolean","description":"If true, also adds a UUID primary key column with auto-generation","default":true}}}'::jsonb, CAST('{"schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1510,13 +1254,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataStatusField', 'data_status_field', 'data', 'Status Field', 'Adds a status column with B-tree index for efficient equality filtering and sorting. Optionally constrains values via CHECK constraint when allowed_values is provided.', CAST('{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Column name for the status field","default":"status"},"type":{"type":"object","description":"Column type as a FieldType object","default":{"name":"text"}},"default_value":{"type":"string","description":"Default value expression (e.g., active)"},"is_required":{"type":"boolean","description":"Whether the column has a NOT NULL constraint","default":true},"allowed_values":{"type":"array","items":{"type":"string"},"description":"If provided, creates a CHECK constraint restricting the column to these values"}}}' AS jsonb), CAST('{"status","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataStatusField', 'data_status_field', 'data', 'Status Field', 'Adds a status column with B-tree index for efficient equality filtering and sorting. Optionally constrains values via CHECK constraint when allowed_values is provided.', CAST('{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Column name for the status field","default":"status"},"type":{"type":"object","description":"Column type as a FieldType object","default":{"name":"text"}},"default_value":{"type":"string","description":"Default value expression (e.g., active)"},"is_required":{"type":"boolean","description":"Whether the column has a NOT NULL constraint","default":true},"allowed_values":{"type":"array","items":{"type":"string"},"description":"If provided, creates a CHECK constraint restricting the column to these values"}}}' AS jsonb), CAST('{"status","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1527,13 +1265,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataTags', 'data_tags', 'data', 'Tags', 'Adds a citext[] tags column with GIN index for efficient array containment queries (@>, &&). Standard tagging pattern for categorization and filtering.', '{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Column name for the tags array","default":"tags"},"default_value":{"type":"object","description":"Default value as a FieldDefault object","default":{"value":[],"cast":{"name":"citext","array_dimensions":1}}},"is_required":{"type":"boolean","description":"Whether the column has a NOT NULL constraint","default":false}}}'::jsonb, CAST('{"tags","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataTags', 'data_tags', 'data', 'Tags', 'Adds a citext[] tags column with GIN index for efficient array containment queries (@>, &&). Standard tagging pattern for categorization and filtering.', '{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Column name for the tags array","default":"tags"},"default_value":{"type":"object","description":"Default value as a FieldDefault object","default":{"value":[],"cast":{"name":"citext","array_dimensions":1}}},"is_required":{"type":"boolean","description":"Whether the column has a NOT NULL constraint","default":false}}}'::jsonb, CAST('{"tags","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1544,13 +1276,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('DataTimestamps', 'data_timestamps', 'data', 'Timestamps', 'Adds automatic timestamp tracking with created_at and updated_at columns.', '{"type":"object","properties":{"created_at_field":{"type":"string","format":"column-ref","description":"Column name for the creation timestamp","default":"created_at"},"updated_at_field":{"type":"string","format":"column-ref","description":"Column name for the last-updated timestamp","default":"updated_at"},"include_id":{"type":"boolean","description":"If true, also adds a UUID primary key column with auto-generation","default":true}}}'::jsonb, CAST('{"timestamps","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('DataTimestamps', 'data_timestamps', 'data', 'Timestamps', 'Adds automatic timestamp tracking with created_at and updated_at columns.', '{"type":"object","properties":{"created_at_field":{"type":"string","format":"column-ref","description":"Column name for the creation timestamp","default":"created_at"},"updated_at_field":{"type":"string","format":"column-ref","description":"Column name for the last-updated timestamp","default":"updated_at"},"include_id":{"type":"boolean","description":"If true, also adds a UUID primary key column with auto-generation","default":true}}}'::jsonb, CAST('{"timestamps","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1561,13 +1287,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('EventReferral', 'event_referral', 'event', 'Event Referral', 'Creates triggers that record events for the referrer (inviter) when their invitees perform actions on a watched table. Resolves the referrer automatically via the invites module''s claimed_invites table using the membership_type context. Supports the same compound condition system as EventTracker. Use with achievements to unlock levels and grant credits based on invitee activity.', CAST(E'{"type":"object","$defs":{"triggerCondition":{"type":"object","description":"A leaf condition ({field, op, value?, row?, ref?}) or a combinator ({AND, OR, NOT}).","properties":{"field":{"type":"string","format":"column-ref","description":"Column name (validated against the table)."},"op":{"type":"string","enum":["=","!=",">","<",">=","<=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS DISTINCT FROM"],"description":"Comparison operator."},"value":{"description":"Comparison value. Type is resolved from the column definition. Omit for IS NULL, IS NOT NULL, IS DISTINCT FROM."},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW","description":"Row reference (default: NEW)."},"ref":{"type":"object","description":"Column reference for field-to-field comparison (alternative to value).","properties":{"field":{"type":"string","format":"column-ref"},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW"}}},"AND":{"type":"array","description":"Array of conditions combined with AND.","items":{"$ref":"#/$defs/triggerCondition"}},"OR":{"type":"array","description":"Array of conditions combined with OR.","items":{"$ref":"#/$defs/triggerCondition"}},"NOT":{"$ref":"#/$defs/triggerCondition","description":"Negated condition."}}}},"properties":{"event_name":{"type":"string","description":"Event type name to record for the referrer (e.g., \\"invitee_uploaded_avatar\\", \\"invitee_completed_onboarding\\")"},"events":{"type":"array","items":{"type":"string","enum":["INSERT","UPDATE","DELETE"]},"description":"DML events that trigger recording","default":["INSERT"]},"actor_field":{"type":"string","format":"column-ref","description":"Column containing the invitee (actor) ID on the source table — used to look up the referrer via claimed_invites.receiver_id","default":"owner_id"},"entity_field":{"type":"string","format":"column-ref","description":"Column containing the entity ID (org/group) for entity-scoped referral events. For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup. Omit for user-only events."},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]},"max_depth":{"type":"integer","description":"Maximum depth to walk up the invite chain. Default 1 (direct inviter only). Set 2–10 to enable multi-level referral rewards. App-level only — must not be combined with entity_field.","default":1,"minimum":1,"maximum":10},"auto_register_type":{"type":"boolean","description":"Automatically register the event_name in event_types during provisioning","default":true},"condition_field":{"type":"string","format":"column-ref","description":"Column name for conditional WHEN clause (fires only when field equals condition_value)"},"condition_value":{"type":"string","description":"Value to compare against condition_field in WHEN clause"},"conditions":{"description":"Compound conditions for the trigger WHEN clause. Accepts a single leaf condition, an array of conditions (implicitly AND), or a nested combinator tree ({AND: [...], OR: [...], NOT: {...}}). Each leaf is {field, op, value?, row?, ref?}. Column types are resolved automatically from the table schema. Cannot be combined with condition_field or watch_fields.","x-codegen-type":"TriggerCondition | TriggerCondition[]","oneOf":[{"$ref":"#/$defs/triggerCondition"},{"type":"array","items":{"$ref":"#/$defs/triggerCondition"}}]},"watch_fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"For UPDATE triggers, only fire when these fields change (uses DISTINCT FROM)"}},"required":["event_name"]}' AS jsonb), CAST('{"events","referral","invites","analytics","tracking"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('EventReferral', 'event_referral', 'event', 'Event Referral', 'Creates triggers that record events for the referrer (inviter) when their invitees perform actions on a watched table. Resolves the referrer automatically via the invites module''s claimed_invites table using the membership_type context. Supports the same compound condition system as EventTracker. Use with achievements to unlock levels and grant credits based on invitee activity.', CAST(E'{"type":"object","$defs":{"triggerCondition":{"type":"object","description":"A leaf condition ({field, op, value?, row?, ref?}) or a combinator ({AND, OR, NOT}).","properties":{"field":{"type":"string","format":"column-ref","description":"Column name (validated against the table)."},"op":{"type":"string","enum":["=","!=",">","<",">=","<=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS DISTINCT FROM"],"description":"Comparison operator."},"value":{"description":"Comparison value. Type is resolved from the column definition. Omit for IS NULL, IS NOT NULL, IS DISTINCT FROM."},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW","description":"Row reference (default: NEW)."},"ref":{"type":"object","description":"Column reference for field-to-field comparison (alternative to value).","properties":{"field":{"type":"string","format":"column-ref"},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW"}}},"AND":{"type":"array","description":"Array of conditions combined with AND.","items":{"$ref":"#/$defs/triggerCondition"}},"OR":{"type":"array","description":"Array of conditions combined with OR.","items":{"$ref":"#/$defs/triggerCondition"}},"NOT":{"$ref":"#/$defs/triggerCondition","description":"Negated condition."}}}},"properties":{"event_name":{"type":"string","description":"Event type name to record for the referrer (e.g., \\"invitee_uploaded_avatar\\", \\"invitee_completed_onboarding\\")"},"events":{"type":"array","items":{"type":"string","enum":["INSERT","UPDATE","DELETE"]},"description":"DML events that trigger recording","default":["INSERT"]},"actor_field":{"type":"string","format":"column-ref","description":"Column containing the invitee (actor) ID on the source table — used to look up the referrer via claimed_invites.receiver_id","default":"owner_id"},"entity_field":{"type":"string","format":"column-ref","description":"Column containing the entity ID (org/group) for entity-scoped referral events. For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup. Omit for user-only events."},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]},"max_depth":{"type":"integer","description":"Maximum depth to walk up the invite chain. Default 1 (direct inviter only). Set 2–10 to enable multi-level referral rewards. App-level only — must not be combined with entity_field.","default":1,"minimum":1,"maximum":10},"auto_register_type":{"type":"boolean","description":"Automatically register the event_name in event_types during provisioning","default":true},"condition_field":{"type":"string","format":"column-ref","description":"Column name for conditional WHEN clause (fires only when field equals condition_value)"},"condition_value":{"type":"string","description":"Value to compare against condition_field in WHEN clause"},"conditions":{"description":"Compound conditions for the trigger WHEN clause. Accepts a single leaf condition, an array of conditions (implicitly AND), or a nested combinator tree ({AND: [...], OR: [...], NOT: {...}}). Each leaf is {field, op, value?, row?, ref?}. Column types are resolved automatically from the table schema. Cannot be combined with condition_field or watch_fields.","x-codegen-type":"TriggerCondition | TriggerCondition[]","oneOf":[{"$ref":"#/$defs/triggerCondition"},{"type":"array","items":{"$ref":"#/$defs/triggerCondition"}}]},"watch_fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"For UPDATE triggers, only fire when these fields change (uses DISTINCT FROM)"}},"required":["event_name"]}' AS jsonb), CAST('{"events","referral","invites","analytics","tracking"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1578,13 +1298,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('EventTracker', 'event_tracker', 'event', 'Event Tracker', 'Creates triggers that record events via the events module when table rows change. Supports the same compound condition system as JobTrigger (condition_field, watch_fields, or full AND/OR/NOT conditions). Events are recorded to app_events and aggregated automatically. Use with achievements (blueprint-level) to unlock levels and grant credits based on event accumulation.', CAST(E'{"type":"object","$defs":{"triggerCondition":{"type":"object","description":"A leaf condition ({field, op, value?, row?, ref?}) or a combinator ({AND, OR, NOT}).","properties":{"field":{"type":"string","format":"column-ref","description":"Column name (validated against the table)."},"op":{"type":"string","enum":["=","!=",">","<",">=","<=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS DISTINCT FROM"],"description":"Comparison operator."},"value":{"description":"Comparison value. Type is resolved from the column definition. Omit for IS NULL, IS NOT NULL, IS DISTINCT FROM."},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW","description":"Row reference (default: NEW)."},"ref":{"type":"object","description":"Column reference for field-to-field comparison (alternative to value).","properties":{"field":{"type":"string","format":"column-ref"},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW"}}},"AND":{"type":"array","description":"Array of conditions combined with AND.","items":{"$ref":"#/$defs/triggerCondition"}},"OR":{"type":"array","description":"Array of conditions combined with OR.","items":{"$ref":"#/$defs/triggerCondition"}},"NOT":{"$ref":"#/$defs/triggerCondition","description":"Negated condition."}}}},"properties":{"event_name":{"type":"string","description":"Event type name to record (e.g., \\"avatar_uploaded\\", \\"order_completed\\")"},"events":{"type":"array","items":{"type":"string","enum":["INSERT","UPDATE","DELETE"]},"description":"DML events that trigger recording","default":["INSERT"]},"count":{"type":"integer","description":"Number of events to record per trigger fire","default":1},"toggle":{"type":"boolean","description":"Toggle mode: records event when condition is met, removes when condition is unmet","default":false},"actor_field":{"type":"string","format":"column-ref","description":"Column containing the actor (user) ID to attribute the event to","default":"owner_id"},"entity_field":{"type":"string","format":"column-ref","description":"Column containing the entity ID (org/group) for entity-scoped events. For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup. Omit for user-only events."},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]},"auto_register_type":{"type":"boolean","description":"Automatically register the event_name in event_types during provisioning","default":true},"condition_field":{"type":"string","format":"column-ref","description":"Column name for conditional WHEN clause (fires only when field equals condition_value)"},"condition_value":{"type":"string","description":"Value to compare against condition_field in WHEN clause"},"conditions":{"description":"Compound conditions for the trigger WHEN clause. Accepts a single leaf condition, an array of conditions (implicitly AND), or a nested combinator tree ({AND: [...], OR: [...], NOT: {...}}). Each leaf is {field, op, value?, row?, ref?}. Column types are resolved automatically from the table schema. Cannot be combined with condition_field or watch_fields.","x-codegen-type":"TriggerCondition | TriggerCondition[]","oneOf":[{"$ref":"#/$defs/triggerCondition"},{"type":"array","items":{"$ref":"#/$defs/triggerCondition"}}]},"watch_fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"For UPDATE triggers, only fire when these fields change (uses DISTINCT FROM)"}},"required":["event_name"]}' AS jsonb), CAST('{"events","triggers","analytics","tracking"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('EventTracker', 'event_tracker', 'event', 'Event Tracker', 'Creates triggers that record events via the events module when table rows change. Supports the same compound condition system as JobTrigger (condition_field, watch_fields, or full AND/OR/NOT conditions). Events are recorded to app_events and aggregated automatically. Use with achievements (blueprint-level) to unlock levels and grant credits based on event accumulation.', CAST(E'{"type":"object","$defs":{"triggerCondition":{"type":"object","description":"A leaf condition ({field, op, value?, row?, ref?}) or a combinator ({AND, OR, NOT}).","properties":{"field":{"type":"string","format":"column-ref","description":"Column name (validated against the table)."},"op":{"type":"string","enum":["=","!=",">","<",">=","<=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS DISTINCT FROM"],"description":"Comparison operator."},"value":{"description":"Comparison value. Type is resolved from the column definition. Omit for IS NULL, IS NOT NULL, IS DISTINCT FROM."},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW","description":"Row reference (default: NEW)."},"ref":{"type":"object","description":"Column reference for field-to-field comparison (alternative to value).","properties":{"field":{"type":"string","format":"column-ref"},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW"}}},"AND":{"type":"array","description":"Array of conditions combined with AND.","items":{"$ref":"#/$defs/triggerCondition"}},"OR":{"type":"array","description":"Array of conditions combined with OR.","items":{"$ref":"#/$defs/triggerCondition"}},"NOT":{"$ref":"#/$defs/triggerCondition","description":"Negated condition."}}}},"properties":{"event_name":{"type":"string","description":"Event type name to record (e.g., \\"avatar_uploaded\\", \\"order_completed\\")"},"events":{"type":"array","items":{"type":"string","enum":["INSERT","UPDATE","DELETE"]},"description":"DML events that trigger recording","default":["INSERT"]},"count":{"type":"integer","description":"Number of events to record per trigger fire","default":1},"toggle":{"type":"boolean","description":"Toggle mode: records event when condition is met, removes when condition is unmet","default":false},"actor_field":{"type":"string","format":"column-ref","description":"Column containing the actor (user) ID to attribute the event to","default":"owner_id"},"entity_field":{"type":"string","format":"column-ref","description":"Column containing the entity ID (org/group) for entity-scoped events. For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup. Omit for user-only events."},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]},"auto_register_type":{"type":"boolean","description":"Automatically register the event_name in event_types during provisioning","default":true},"condition_field":{"type":"string","format":"column-ref","description":"Column name for conditional WHEN clause (fires only when field equals condition_value)"},"condition_value":{"type":"string","description":"Value to compare against condition_field in WHEN clause"},"conditions":{"description":"Compound conditions for the trigger WHEN clause. Accepts a single leaf condition, an array of conditions (implicitly AND), or a nested combinator tree ({AND: [...], OR: [...], NOT: {...}}). Each leaf is {field, op, value?, row?, ref?}. Column types are resolved automatically from the table schema. Cannot be combined with condition_field or watch_fields.","x-codegen-type":"TriggerCondition | TriggerCondition[]","oneOf":[{"$ref":"#/$defs/triggerCondition"},{"type":"array","items":{"$ref":"#/$defs/triggerCondition"}}]},"watch_fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"For UPDATE triggers, only fire when these fields change (uses DISTINCT FROM)"}},"required":["event_name"]}' AS jsonb), CAST('{"events","triggers","analytics","tracking"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1595,13 +1309,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('GuardStepUp', 'guard_step_up', 'guard', 'Guard Step-Up', 'Attaches a BEFORE trigger that calls require_step_up() to enforce recent password or MFA verification before allowing mutations. Requires a provisioned sessions_module (with app_settings_auth) for the target database. The step_up_window is read from app_settings_auth at runtime (default 30 minutes). Supports compound conditions (AND/OR/NOT), watch_fields (fire only when specific fields change), and simple condition_field/condition_value leaf conditions.', CAST('{"type":"object","$defs":{"triggerCondition":{"type":"object","description":"A leaf condition ({field, op, value?, row?, ref?}) or a combinator ({AND, OR, NOT}).","properties":{"field":{"type":"string","format":"column-ref","description":"Column name (validated against the table)."},"op":{"type":"string","enum":["=","!=",">","<",">=","<=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS DISTINCT FROM"],"description":"Comparison operator."},"value":{"description":"Comparison value. Type is resolved from the column definition. Omit for IS NULL, IS NOT NULL, IS DISTINCT FROM."},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW","description":"Row reference (default: NEW)."},"ref":{"type":"object","description":"Column reference for field-to-field comparison (alternative to value).","properties":{"field":{"type":"string","format":"column-ref"},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW"}}},"AND":{"type":"array","description":"Array of conditions combined with AND.","items":{"$ref":"#/$defs/triggerCondition"}},"OR":{"type":"array","description":"Array of conditions combined with OR.","items":{"$ref":"#/$defs/triggerCondition"}},"NOT":{"$ref":"#/$defs/triggerCondition","description":"Negated condition."}}}},"properties":{"step_up_type":{"type":"string","enum":["password","mfa","password_or_mfa"],"description":"Which verification method satisfies the step-up requirement","default":"password_or_mfa"},"events":{"type":"array","items":{"type":"string","enum":["INSERT","UPDATE","DELETE"]},"description":"Which DML events require step-up verification","default":["UPDATE","DELETE"]},"condition_field":{"type":"string","format":"column-ref","description":"Column name for conditional WHEN clause (fires only when field equals condition_value)"},"condition_value":{"type":"string","description":"Value to compare against condition_field in WHEN clause"},"conditions":{"description":"Compound conditions for the trigger WHEN clause. Accepts a single leaf condition, an array of conditions (implicitly AND), or a nested combinator tree ({AND: [...], OR: [...], NOT: {...}}). Each leaf is {field, op, value?, row?, ref?}. Column types are resolved automatically from the table schema. Cannot be combined with condition_field or watch_fields.","x-codegen-type":"TriggerCondition | TriggerCondition[]","oneOf":[{"$ref":"#/$defs/triggerCondition"},{"type":"array","items":{"$ref":"#/$defs/triggerCondition"}}]},"watch_fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"For UPDATE triggers, only fire when these fields change (uses DISTINCT FROM)"}},"required":[]}' AS jsonb), CAST('{"guard","triggers","auth","step-up","mfa","security"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('GuardStepUp', 'guard_step_up', 'guard', 'Guard Step-Up', 'Attaches a BEFORE trigger that calls require_step_up() to enforce recent password or MFA verification before allowing mutations. Requires a provisioned sessions_module (with app_settings_auth) for the target database. The step_up_window is read from app_settings_auth at runtime (default 30 minutes). Supports compound conditions (AND/OR/NOT), watch_fields (fire only when specific fields change), and simple condition_field/condition_value leaf conditions.', CAST('{"type":"object","$defs":{"triggerCondition":{"type":"object","description":"A leaf condition ({field, op, value?, row?, ref?}) or a combinator ({AND, OR, NOT}).","properties":{"field":{"type":"string","format":"column-ref","description":"Column name (validated against the table)."},"op":{"type":"string","enum":["=","!=",">","<",">=","<=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS DISTINCT FROM"],"description":"Comparison operator."},"value":{"description":"Comparison value. Type is resolved from the column definition. Omit for IS NULL, IS NOT NULL, IS DISTINCT FROM."},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW","description":"Row reference (default: NEW)."},"ref":{"type":"object","description":"Column reference for field-to-field comparison (alternative to value).","properties":{"field":{"type":"string","format":"column-ref"},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW"}}},"AND":{"type":"array","description":"Array of conditions combined with AND.","items":{"$ref":"#/$defs/triggerCondition"}},"OR":{"type":"array","description":"Array of conditions combined with OR.","items":{"$ref":"#/$defs/triggerCondition"}},"NOT":{"$ref":"#/$defs/triggerCondition","description":"Negated condition."}}}},"properties":{"step_up_type":{"type":"string","enum":["password","mfa","password_or_mfa"],"description":"Which verification method satisfies the step-up requirement","default":"password_or_mfa"},"events":{"type":"array","items":{"type":"string","enum":["INSERT","UPDATE","DELETE"]},"description":"Which DML events require step-up verification","default":["UPDATE","DELETE"]},"condition_field":{"type":"string","format":"column-ref","description":"Column name for conditional WHEN clause (fires only when field equals condition_value)"},"condition_value":{"type":"string","description":"Value to compare against condition_field in WHEN clause"},"conditions":{"description":"Compound conditions for the trigger WHEN clause. Accepts a single leaf condition, an array of conditions (implicitly AND), or a nested combinator tree ({AND: [...], OR: [...], NOT: {...}}). Each leaf is {field, op, value?, row?, ref?}. Column types are resolved automatically from the table schema. Cannot be combined with condition_field or watch_fields.","x-codegen-type":"TriggerCondition | TriggerCondition[]","oneOf":[{"$ref":"#/$defs/triggerCondition"},{"type":"array","items":{"$ref":"#/$defs/triggerCondition"}}]},"watch_fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"For UPDATE triggers, only fire when these fields change (uses DISTINCT FROM)"}},"required":[]}' AS jsonb), CAST('{"guard","triggers","auth","step-up","mfa","security"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1612,13 +1320,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('JobTrigger', 'data_job_trigger', 'job', 'Job Trigger', 'Dynamically creates PostgreSQL triggers that enqueue jobs via app_jobs.add_job() when table rows are inserted, updated, or deleted. Supports configurable payload strategies (full row, row ID, selected fields, or custom mapping), conditional firing via WHEN clauses, watched field changes, and extended job options (queue, priority, delay, max attempts).', CAST(E'{"type":"object","$defs":{"triggerCondition":{"type":"object","description":"A leaf condition ({field, op, value?, row?, ref?}) or a combinator ({AND, OR, NOT}).","properties":{"field":{"type":"string","format":"column-ref","description":"Column name (validated against the table)."},"op":{"type":"string","enum":["=","!=",">","<",">=","<=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS DISTINCT FROM"],"description":"Comparison operator."},"value":{"description":"Comparison value. Type is resolved from the column definition. Omit for IS NULL, IS NOT NULL, IS DISTINCT FROM."},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW","description":"Row reference (default: NEW)."},"ref":{"type":"object","description":"Column reference for field-to-field comparison (alternative to value).","properties":{"field":{"type":"string","format":"column-ref"},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW"}}},"AND":{"type":"array","description":"Array of conditions combined with AND.","items":{"$ref":"#/$defs/triggerCondition"}},"OR":{"type":"array","description":"Array of conditions combined with OR.","items":{"$ref":"#/$defs/triggerCondition"}},"NOT":{"$ref":"#/$defs/triggerCondition","description":"Negated condition."}}}},"properties":{"task_identifier":{"type":"string","format":"function-ref","description":"Job task identifier passed to add_job (e.g., process_invoice, sync_to_stripe). Must match a registered function definition when function_module is installed."},"payload_strategy":{"type":"string","enum":["row","row_id","fields","custom"],"description":"How to build the job payload: row (full NEW/OLD), row_id (just id), fields (selected columns), custom (mapped columns)","default":"row_id"},"payload_fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Column names to include in payload (only for fields strategy)"},"payload_custom":{"type":"object","additionalProperties":{"type":"string","format":"column-ref"},"description":"Key-to-column mapping for custom payload (e.g., {\\"invoice_id\\": \\"id\\", \\"total\\": \\"amount\\"})"},"events":{"type":"array","items":{"type":"string","enum":["INSERT","UPDATE","DELETE"]},"description":"Trigger events to create","default":["INSERT","UPDATE"]},"include_old":{"type":"boolean","description":"Include OLD row in payload (for UPDATE triggers)","default":false},"include_meta":{"type":"boolean","description":"Include table/schema metadata in payload","default":false},"condition_field":{"type":"string","format":"column-ref","description":"Column name for conditional WHEN clause (fires only when field equals condition_value)"},"condition_value":{"type":"string","description":"Value to compare against condition_field in WHEN clause"},"conditions":{"description":"Compound conditions for the trigger WHEN clause. Accepts a single leaf condition, an array of conditions (implicitly AND), or a nested combinator tree ({AND: [...], OR: [...], NOT: {...}}). Each leaf is {field, op, value?, row?, ref?}. Column types are resolved automatically from the table schema. Cannot be combined with condition_field or watch_fields.","x-codegen-type":"TriggerCondition | TriggerCondition[]","oneOf":[{"$ref":"#/$defs/triggerCondition"},{"type":"array","items":{"$ref":"#/$defs/triggerCondition"}}]},"watch_fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"For UPDATE triggers, only fire when these fields change (uses DISTINCT FROM)"},"entity_field":{"type":"string","format":"column-ref","description":"Column on the trigger table that holds (or references) the entity_id for billing scope. For direct entity_id columns, just set this field. For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup."},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","format":"column-ref","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]},"job_key":{"type":"string","description":"Static job key for upsert semantics (prevents duplicate jobs)"},"queue_name":{"type":"string","description":"Job queue name for routing to specific workers"},"priority":{"type":"integer","description":"Job priority (lower = higher priority)","default":0},"run_at_delay":{"type":"string","description":"Delay before job runs as PostgreSQL interval (e.g., 30 seconds, 5 minutes)"},"max_attempts":{"type":"integer","description":"Maximum retry attempts for the job","default":25}},"required":["task_identifier"]}' AS jsonb), CAST('{"jobs","triggers","async"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('JobTrigger', 'data_job_trigger', 'job', 'Job Trigger', 'Dynamically creates PostgreSQL triggers that enqueue jobs via app_jobs.add_job() when table rows are inserted, updated, or deleted. Supports configurable payload strategies (full row, row ID, selected fields, or custom mapping), conditional firing via WHEN clauses, watched field changes, and extended job options (queue, priority, delay, max attempts).', CAST(E'{"type":"object","$defs":{"triggerCondition":{"type":"object","description":"A leaf condition ({field, op, value?, row?, ref?}) or a combinator ({AND, OR, NOT}).","properties":{"field":{"type":"string","format":"column-ref","description":"Column name (validated against the table)."},"op":{"type":"string","enum":["=","!=",">","<",">=","<=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS DISTINCT FROM"],"description":"Comparison operator."},"value":{"description":"Comparison value. Type is resolved from the column definition. Omit for IS NULL, IS NOT NULL, IS DISTINCT FROM."},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW","description":"Row reference (default: NEW)."},"ref":{"type":"object","description":"Column reference for field-to-field comparison (alternative to value).","properties":{"field":{"type":"string","format":"column-ref"},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW"}}},"AND":{"type":"array","description":"Array of conditions combined with AND.","items":{"$ref":"#/$defs/triggerCondition"}},"OR":{"type":"array","description":"Array of conditions combined with OR.","items":{"$ref":"#/$defs/triggerCondition"}},"NOT":{"$ref":"#/$defs/triggerCondition","description":"Negated condition."}}}},"properties":{"task_identifier":{"type":"string","format":"function-ref","description":"Job task identifier passed to add_job (e.g., process_invoice, sync_to_stripe). Must match a registered function definition when function_module is installed."},"payload_strategy":{"type":"string","enum":["row","row_id","fields","custom"],"description":"How to build the job payload: row (full NEW/OLD), row_id (just id), fields (selected columns), custom (mapped columns)","default":"row_id"},"payload_fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Column names to include in payload (only for fields strategy)"},"payload_custom":{"type":"object","additionalProperties":{"type":"string","format":"column-ref"},"description":"Key-to-column mapping for custom payload (e.g., {\\"invoice_id\\": \\"id\\", \\"total\\": \\"amount\\"})"},"events":{"type":"array","items":{"type":"string","enum":["INSERT","UPDATE","DELETE"]},"description":"Trigger events to create","default":["INSERT","UPDATE"]},"include_old":{"type":"boolean","description":"Include OLD row in payload (for UPDATE triggers)","default":false},"include_meta":{"type":"boolean","description":"Include table/schema metadata in payload","default":false},"condition_field":{"type":"string","format":"column-ref","description":"Column name for conditional WHEN clause (fires only when field equals condition_value)"},"condition_value":{"type":"string","description":"Value to compare against condition_field in WHEN clause"},"conditions":{"description":"Compound conditions for the trigger WHEN clause. Accepts a single leaf condition, an array of conditions (implicitly AND), or a nested combinator tree ({AND: [...], OR: [...], NOT: {...}}). Each leaf is {field, op, value?, row?, ref?}. Column types are resolved automatically from the table schema. Cannot be combined with condition_field or watch_fields.","x-codegen-type":"TriggerCondition | TriggerCondition[]","oneOf":[{"$ref":"#/$defs/triggerCondition"},{"type":"array","items":{"$ref":"#/$defs/triggerCondition"}}]},"watch_fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"For UPDATE triggers, only fire when these fields change (uses DISTINCT FROM)"},"entity_field":{"type":"string","format":"column-ref","description":"Column on the trigger table that holds (or references) the entity_id for billing scope. For direct entity_id columns, just set this field. For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup."},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","format":"column-ref","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]},"job_key":{"type":"string","description":"Static job key for upsert semantics (prevents duplicate jobs)"},"queue_name":{"type":"string","description":"Job queue name for routing to specific workers"},"priority":{"type":"integer","description":"Job priority (lower = higher priority)","default":0},"run_at_delay":{"type":"string","description":"Delay before job runs as PostgreSQL interval (e.g., 30 seconds, 5 minutes)"},"max_attempts":{"type":"integer","description":"Maximum retry attempts for the job","default":25}},"required":["task_identifier"]}' AS jsonb), CAST('{"jobs","triggers","async"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1629,13 +1331,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('LimitEnforceAggregate', 'limit_enforce_aggregate', 'limit_enforce', 'Enforce Aggregate Counter', 'Declaratively attaches aggregate limit-tracking triggers to a table. On INSERT the named limit is incremented per entity; on DELETE it is decremented. Uses org_limit_aggregates_inc/dec for per-entity (org-level) aggregate limits rather than per-user limits. Requires a provisioned limits_module for the target database.', CAST(E'{"type":"object","properties":{"limit_name":{"type":"string","description":"Name of the aggregate limit to track (must match a default_limits entry, e.g. \\"databases\\", \\"members\\")"},"scope":{"type":"string","description":"Membership type prefix that determines which limits_module row to use. Resolved dynamically via memberships_module — supports any provisioned type (e.g. \\"org\\", \\"data_room\\", \\"channel\\", \\"team\\").","default":"org"},"entity_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds (or references) the entity id for aggregate limit lookup. For direct entity_id columns, just set this field. For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup.","default":"entity_id"},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]},"events":{"type":"array","items":{"type":"string","enum":["INSERT","DELETE","UPDATE"]},"description":"Which DML events to attach triggers for","default":["INSERT","DELETE"]}},"required":["limit_name"]}' AS jsonb), CAST('{"limits","triggers","aggregates","enforce"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('LimitEnforceAggregate', 'limit_enforce_aggregate', 'limit_enforce', 'Enforce Aggregate Counter', 'Declaratively attaches aggregate limit-tracking triggers to a table. On INSERT the named limit is incremented per entity; on DELETE it is decremented. Uses org_limit_aggregates_inc/dec for per-entity (org-level) aggregate limits rather than per-user limits. Requires a provisioned limits_module for the target database.', CAST(E'{"type":"object","properties":{"limit_name":{"type":"string","description":"Name of the aggregate limit to track (must match a default_limits entry, e.g. \\"databases\\", \\"members\\")"},"scope":{"type":"string","description":"Membership type prefix that determines which limits_module row to use. Resolved dynamically via memberships_module — supports any provisioned type (e.g. \\"org\\", \\"data_room\\", \\"channel\\", \\"team\\").","default":"org"},"entity_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds (or references) the entity id for aggregate limit lookup. For direct entity_id columns, just set this field. For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup.","default":"entity_id"},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]},"events":{"type":"array","items":{"type":"string","enum":["INSERT","DELETE","UPDATE"]},"description":"Which DML events to attach triggers for","default":["INSERT","DELETE"]}},"required":["limit_name"]}' AS jsonb), CAST('{"limits","triggers","aggregates","enforce"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1646,13 +1342,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('LimitEnforceCounter', 'limit_enforce_counter', 'limit_enforce', 'Enforce Counter', 'Declaratively attaches limit-tracking triggers to a table. On INSERT the named limit is incremented; on DELETE it is decremented. Requires a provisioned limits_module for the target scope.', CAST(E'{"type":"object","properties":{"limit_name":{"type":"string","description":"Name of the limit to track (must match a default_limits entry, e.g. \\"projects\\", \\"members\\")"},"scope":{"type":"string","description":"Membership type prefix that determines which limits_module row to use. Resolved dynamically via memberships_module — supports any provisioned type (e.g. \\"app\\", \\"org\\", \\"data_room\\", \\"channel\\", \\"team\\").","default":"app"},"actor_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds the actor or entity id used for limit lookup","default":"owner_id"},"entity_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds (or references) the entity id for entity context resolution. For direct entity_id columns, just set this field. For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup."},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]},"events":{"type":"array","items":{"type":"string","enum":["INSERT","DELETE","UPDATE"]},"description":"Which DML events to attach triggers for","default":["INSERT","DELETE"]}},"required":["limit_name"]}' AS jsonb), CAST('{"limits","triggers","enforce"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('LimitEnforceCounter', 'limit_enforce_counter', 'limit_enforce', 'Enforce Counter', 'Declaratively attaches limit-tracking triggers to a table. On INSERT the named limit is incremented; on DELETE it is decremented. Requires a provisioned limits_module for the target scope.', CAST(E'{"type":"object","properties":{"limit_name":{"type":"string","description":"Name of the limit to track (must match a default_limits entry, e.g. \\"projects\\", \\"members\\")"},"scope":{"type":"string","description":"Membership type prefix that determines which limits_module row to use. Resolved dynamically via memberships_module — supports any provisioned type (e.g. \\"app\\", \\"org\\", \\"data_room\\", \\"channel\\", \\"team\\").","default":"app"},"actor_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds the actor or entity id used for limit lookup","default":"owner_id"},"entity_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds (or references) the entity id for entity context resolution. For direct entity_id columns, just set this field. For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup."},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]},"events":{"type":"array","items":{"type":"string","enum":["INSERT","DELETE","UPDATE"]},"description":"Which DML events to attach triggers for","default":["INSERT","DELETE"]}},"required":["limit_name"]}' AS jsonb), CAST('{"limits","triggers","enforce"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1663,13 +1353,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('LimitEnforceFeature', 'limit_enforce_feature', 'limit_enforce', 'Enforce Feature Flag', 'Gates a table behind a feature flag backed by the cap tables. Attaches a BEFORE INSERT trigger that checks whether the named feature cap value is > 0. Features are modeled as caps with max=0 (disabled) or max=1 (enabled) in limit_caps / limit_caps_defaults tables. Resolution: COALESCE(per-entity cap, scope default, 0).', CAST(E'{"type":"object","properties":{"feature_name":{"type":"string","description":"Cap name representing this feature (must match a limit_caps_defaults entry with max=0 or max=1)"},"scope":{"type":"string","description":"Membership type prefix that determines which limits_module row to use. Resolved dynamically via memberships_module — supports any provisioned type (e.g. \\"app\\", \\"org\\", \\"data_room\\", \\"channel\\", \\"team\\").","default":"app"},"entity_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds (or references) the entity id for per-entity cap lookups (only used for org scope). For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup.","default":"entity_id"},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]}},"required":["feature_name"]}' AS jsonb), CAST('{"limits","triggers","feature-flags","enforce","caps"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('LimitEnforceFeature', 'limit_enforce_feature', 'limit_enforce', 'Enforce Feature Flag', 'Gates a table behind a feature flag backed by the cap tables. Attaches a BEFORE INSERT trigger that checks whether the named feature cap value is > 0. Features are modeled as caps with max=0 (disabled) or max=1 (enabled) in limit_caps / limit_caps_defaults tables. Resolution: COALESCE(per-entity cap, scope default, 0).', CAST(E'{"type":"object","properties":{"feature_name":{"type":"string","description":"Cap name representing this feature (must match a limit_caps_defaults entry with max=0 or max=1)"},"scope":{"type":"string","description":"Membership type prefix that determines which limits_module row to use. Resolved dynamically via memberships_module — supports any provisioned type (e.g. \\"app\\", \\"org\\", \\"data_room\\", \\"channel\\", \\"team\\").","default":"app"},"entity_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds (or references) the entity id for per-entity cap lookups (only used for org scope). For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup.","default":"entity_id"},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]}},"required":["feature_name"]}' AS jsonb), CAST('{"limits","triggers","feature-flags","enforce","caps"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1680,13 +1364,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('LimitEnforceRate', 'limit_enforce_rate', 'limit_enforce', 'Enforce Rate Limit', 'Attaches a BEFORE trigger that calls check_rate_limit() to enforce sliding-window rate limits before allowing mutations. The function checks all three scopes (entity, actor-in-entity, actor) in a single call; which scopes are actually enforced is controlled by what rows exist in rate_window_limits (plan-based config). Requires a provisioned meter_rate_limits_module and billing_module for the target database.', CAST(E'{"type":"object","properties":{"meter_slug":{"type":"string","description":"Slug of the billing meter to check rate limits against (must match a meters table entry, e.g. \\"messaging\\", \\"inference\\")"},"entity_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds (or references) the entity id for rate limiting. For direct entity_id columns, just set this field. For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup.","default":"entity_id"},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]},"actor_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds the actor id (user) for rate limiting","default":"owner_id"},"events":{"type":"array","items":{"type":"string","enum":["INSERT","UPDATE"]},"description":"Which DML events to enforce rate limits on (DELETE is excluded since it reduces load)","default":["INSERT"]}},"required":["meter_slug"]}' AS jsonb), CAST('{"rate-limits","triggers","enforce","metering","abuse-protection"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('LimitEnforceRate', 'limit_enforce_rate', 'limit_enforce', 'Enforce Rate Limit', 'Attaches a BEFORE trigger that calls check_rate_limit() to enforce sliding-window rate limits before allowing mutations. The function checks all three scopes (entity, actor-in-entity, actor) in a single call; which scopes are actually enforced is controlled by what rows exist in rate_window_limits (plan-based config). Requires a provisioned meter_rate_limits_module and billing_module for the target database.', CAST(E'{"type":"object","properties":{"meter_slug":{"type":"string","description":"Slug of the billing meter to check rate limits against (must match a meters table entry, e.g. \\"messaging\\", \\"inference\\")"},"entity_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds (or references) the entity id for rate limiting. For direct entity_id columns, just set this field. For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup.","default":"entity_id"},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]},"actor_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds the actor id (user) for rate limiting","default":"owner_id"},"events":{"type":"array","items":{"type":"string","enum":["INSERT","UPDATE"]},"description":"Which DML events to enforce rate limits on (DELETE is excluded since it reduces load)","default":["INSERT"]}},"required":["meter_slug"]}' AS jsonb), CAST('{"rate-limits","triggers","enforce","metering","abuse-protection"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1697,13 +1375,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('LimitTrackUsage', 'limit_track_usage', 'limit_track', 'Track Usage', 'Declaratively attaches billing usage-recording triggers to a table. On INSERT the named meter is incremented via record_usage; on DELETE it is decremented (reversal). On UPDATE, if the entity_field changes, the old entity is decremented and the new entity is incremented. Requires a provisioned billing_module for the target database.', CAST(E'{"type":"object","properties":{"meter_slug":{"type":"string","description":"Slug of the billing meter to record usage against (must match a meters table entry, e.g. \\"databases\\", \\"seats\\")"},"entity_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds (or references) the entity id for billing. For direct entity_id columns, just set this field. For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup.","default":"entity_id"},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]},"quantity":{"type":"integer","description":"Units to record per event (default 1)","default":1},"events":{"type":"array","items":{"type":"string","enum":["INSERT","DELETE","UPDATE"]},"description":"Which DML events to attach triggers for","default":["INSERT","DELETE"]}},"required":["meter_slug"]}' AS jsonb), CAST('{"billing","triggers","metering","usage","track"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('LimitTrackUsage', 'limit_track_usage', 'limit_track', 'Track Usage', 'Declaratively attaches billing usage-recording triggers to a table. On INSERT the named meter is incremented via record_usage; on DELETE it is decremented (reversal). On UPDATE, if the entity_field changes, the old entity is decremented and the new entity is incremented. Requires a provisioned billing_module for the target database.', CAST(E'{"type":"object","properties":{"meter_slug":{"type":"string","description":"Slug of the billing meter to record usage against (must match a meters table entry, e.g. \\"databases\\", \\"seats\\")"},"entity_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds (or references) the entity id for billing. For direct entity_id columns, just set this field. For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup.","default":"entity_id"},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]},"quantity":{"type":"integer","description":"Units to record per event (default 1)","default":1},"events":{"type":"array","items":{"type":"string","enum":["INSERT","DELETE","UPDATE"]},"description":"Which DML events to attach triggers for","default":["INSERT","DELETE"]}},"required":["meter_slug"]}' AS jsonb), CAST('{"billing","triggers","metering","usage","track"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1714,13 +1386,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('LimitWarningAggregate', 'limit_warning_aggregate', 'limit_warning', 'Warning Aggregate', 'Attaches an AFTER INSERT trigger that checks if the entity''s aggregate usage has crossed any warning threshold configured in the limit_warnings table. If a threshold is reached for the first time, enqueues a background job (e.g. email notification). Uses limit_warning_state for one-time dedup per warning/actor/entity triple. Requires a provisioned limits_module with limit_warnings and aggregate limits enabled.', CAST(E'{"type":"object","properties":{"limit_name":{"type":"string","description":"Name of the aggregate limit to watch (must match a limit_warnings.name entry, e.g. \\"databases\\", \\"members\\")"},"scope":{"type":"string","description":"Membership type prefix that determines which limits_module row to use. Resolved dynamically via memberships_module — supports any provisioned type (e.g. \\"org\\", \\"data_room\\", \\"channel\\", \\"team\\").","default":"org"},"entity_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds (or references) the entity id for aggregate limit lookup. For direct entity_id columns, just set this field. For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup.","default":"entity_id"},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]}},"required":["limit_name"]}' AS jsonb), CAST('{"limits","triggers","aggregates","warning","notifications"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('LimitWarningAggregate', 'limit_warning_aggregate', 'limit_warning', 'Warning Aggregate', 'Attaches an AFTER INSERT trigger that checks if the entity''s aggregate usage has crossed any warning threshold configured in the limit_warnings table. If a threshold is reached for the first time, enqueues a background job (e.g. email notification). Uses limit_warning_state for one-time dedup per warning/actor/entity triple. Requires a provisioned limits_module with limit_warnings and aggregate limits enabled.', CAST(E'{"type":"object","properties":{"limit_name":{"type":"string","description":"Name of the aggregate limit to watch (must match a limit_warnings.name entry, e.g. \\"databases\\", \\"members\\")"},"scope":{"type":"string","description":"Membership type prefix that determines which limits_module row to use. Resolved dynamically via memberships_module — supports any provisioned type (e.g. \\"org\\", \\"data_room\\", \\"channel\\", \\"team\\").","default":"org"},"entity_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds (or references) the entity id for aggregate limit lookup. For direct entity_id columns, just set this field. For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup.","default":"entity_id"},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]}},"required":["limit_name"]}' AS jsonb), CAST('{"limits","triggers","aggregates","warning","notifications"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1731,13 +1397,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('LimitWarningCounter', 'limit_warning_counter', 'limit_warning', 'Warning Counter', 'Attaches an AFTER INSERT trigger that checks if the actor''s current usage has crossed any warning threshold configured in the limit_warnings table. If a threshold is reached for the first time, enqueues a background job (e.g. email notification). Uses limit_warning_state for one-time dedup per warning/actor pair. Requires a provisioned limits_module with limit_warnings enabled.', CAST(E'{"type":"object","properties":{"limit_name":{"type":"string","description":"Name of the limit to watch (must match a limit_warnings.name entry, e.g. \\"projects\\", \\"members\\")"},"scope":{"type":"string","description":"Membership type prefix that determines which limits_module row to use. Resolved dynamically via memberships_module — supports any provisioned type (e.g. \\"app\\", \\"org\\", \\"data_room\\", \\"channel\\", \\"team\\").","default":"app"},"actor_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds the actor id for limit lookup","default":"owner_id"},"entity_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds (or references) the entity id. When provided, entity_id is included in the job payload and dedup state. For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup."},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]}},"required":["limit_name"]}' AS jsonb), CAST('{"limits","triggers","warning","notifications"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('LimitWarningCounter', 'limit_warning_counter', 'limit_warning', 'Warning Counter', 'Attaches an AFTER INSERT trigger that checks if the actor''s current usage has crossed any warning threshold configured in the limit_warnings table. If a threshold is reached for the first time, enqueues a background job (e.g. email notification). Uses limit_warning_state for one-time dedup per warning/actor pair. Requires a provisioned limits_module with limit_warnings enabled.', CAST(E'{"type":"object","properties":{"limit_name":{"type":"string","description":"Name of the limit to watch (must match a limit_warnings.name entry, e.g. \\"projects\\", \\"members\\")"},"scope":{"type":"string","description":"Membership type prefix that determines which limits_module row to use. Resolved dynamically via memberships_module — supports any provisioned type (e.g. \\"app\\", \\"org\\", \\"data_room\\", \\"channel\\", \\"team\\").","default":"app"},"actor_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds the actor id for limit lookup","default":"owner_id"},"entity_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds (or references) the entity id. When provided, entity_id is included in the job payload and dedup state. For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup."},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]}},"required":["limit_name"]}' AS jsonb), CAST('{"limits","triggers","warning","notifications"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1748,13 +1408,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('LimitWarningRate', 'limit_warning_rate', 'limit_warning', 'Warning Rate Limit', 'Attaches an AFTER INSERT trigger that checks if the actor''s current request count in the active sliding window has crossed any warning threshold configured in the limit_warnings table. If a threshold is reached for the first time, enqueues a background job (e.g. email notification). Uses limit_warning_state for one-time dedup per warning/actor pair. Requires both a limits_module with limit_warnings enabled and a rate_limit_meters_module.', CAST(E'{"type":"object","properties":{"meter_slug":{"type":"string","description":"Slug of the billing meter to check rate limits against (must match a meters table entry)"},"scope":{"type":"string","description":"Membership type prefix that determines which limits_module row to use for warnings and warning_state tables. Resolved dynamically via memberships_module — supports any provisioned type (e.g. \\"app\\", \\"org\\", \\"data_room\\", \\"channel\\", \\"team\\").","default":"app"},"entity_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds (or references) the entity id for rate limit lookup. For direct entity_id columns, just set this field. For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup.","default":"entity_id"},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]},"actor_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds the actor id for rate limit lookup","default":"owner_id"}},"required":["meter_slug"]}' AS jsonb), CAST('{"rate-limits","triggers","warning","notifications","metering"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('LimitWarningRate', 'limit_warning_rate', 'limit_warning', 'Warning Rate Limit', 'Attaches an AFTER INSERT trigger that checks if the actor''s current request count in the active sliding window has crossed any warning threshold configured in the limit_warnings table. If a threshold is reached for the first time, enqueues a background job (e.g. email notification). Uses limit_warning_state for one-time dedup per warning/actor pair. Requires both a limits_module with limit_warnings enabled and a rate_limit_meters_module.', CAST(E'{"type":"object","properties":{"meter_slug":{"type":"string","description":"Slug of the billing meter to check rate limits against (must match a meters table entry)"},"scope":{"type":"string","description":"Membership type prefix that determines which limits_module row to use for warnings and warning_state tables. Resolved dynamically via memberships_module — supports any provisioned type (e.g. \\"app\\", \\"org\\", \\"data_room\\", \\"channel\\", \\"team\\").","default":"app"},"entity_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds (or references) the entity id for rate limit lookup. For direct entity_id columns, just set this field. For FK lookups (e.g., channel_id → channels.entity_id), combine with entity_lookup.","default":"entity_id"},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Used when entity_field is a FK (e.g., channel_id) rather than a direct entity_id. The generator validates all fields against metaschema within the same database_id.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from (e.g., \\"channels\\"). Required."},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, e.g., \\"public\\"). Optional — if omitted, resolved by table name within the same database_id (raises error if ambiguous)."},"obj_field":{"type":"string","description":"Column on the related table that holds the entity_id (e.g., \\"entity_id\\"). Required."}},"required":["obj_table","obj_field"]},"actor_field":{"type":"string","format":"column-ref","description":"Column on the target table that holds the actor id for rate limit lookup","default":"owner_id"}},"required":["meter_slug"]}' AS jsonb), CAST('{"rate-limits","triggers","warning","notifications","metering"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1765,13 +1419,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('ProcessChunks', 'data_chunks', 'process', 'Chunks', 'Creates a chunked-embedding child table for any parent table. Provisions the chunks table with content, chunk_index, embedding vector, metadata, HNSW index, inherited RLS, and optional job trigger for automatic text splitting. Composed internally by ProcessFileEmbedding (enabled by default in extract mode) but can also be used standalone.', CAST(E'{"type":"object","properties":{"content_field_name":{"type":"string","format":"column-ref","description":"Name of the text content column in the chunks table","default":"content"},"chunk_size":{"type":"integer","description":"Maximum number of characters per chunk","default":1000},"chunk_overlap":{"type":"integer","description":"Number of overlapping characters between consecutive chunks","default":200},"chunk_strategy":{"type":"string","enum":["fixed","sentence","paragraph","semantic"],"description":"Strategy for splitting text into chunks","default":"paragraph"},"dimensions":{"type":"integer","description":"Vector dimensions for per-chunk embeddings","default":768},"metric":{"type":"string","enum":["cosine","l2","ip"],"description":"Distance metric for the HNSW index on chunk embeddings","default":"cosine"},"embedding_model":{"type":"string","description":"Embedding model identifier for per-chunk embeddings. When null, the worker falls back to runtime config (llm_module / env vars)."},"embedding_provider":{"type":"string","description":"Embedding provider name (e.g. \\"ollama\\", \\"openai\\"). When null, the worker falls back to runtime config."},"chunks_table_name":{"type":"string","description":"Override the chunks table name. Defaults to {parent_table}_chunks."},"metadata_fields":{"type":"array","items":{"type":"string"},"description":"Field names from the parent table to copy into chunk metadata"},"search_indexes":{"type":"array","items":{"type":"string","enum":["fulltext","bm25","trigram"]},"description":"Text search indexes to create on the chunks content column. Omit to mirror the parent table''s text search indexes. Set explicitly to override (e.g. [\\"fulltext\\", \\"bm25\\"])."},"entity_field":{"type":"string","format":"column-ref","description":"Column on the parent table that holds (or references) the entity_id for billing scope. Forwarded to the chunking job trigger."},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Forwarded to the chunking job trigger.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from"},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, optional)"},"obj_field":{"type":"string","format":"column-ref","description":"Column on the related table that holds the entity_id"}},"required":["obj_table","obj_field"]},"enqueue_chunking_job":{"type":"boolean","description":"Whether to create a job trigger that auto-enqueues chunking on parent INSERT/UPDATE","default":true},"chunking_task_name":{"type":"string","description":"Task identifier for the chunking job queue","default":"generate_chunks"}}}' AS jsonb), CAST('{"embedding","chunks","vector","ai","rag"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('ProcessChunks', 'data_chunks', 'process', 'Chunks', 'Creates a chunked-embedding child table for any parent table. Provisions the chunks table with content, chunk_index, embedding vector, metadata, HNSW index, inherited RLS, and optional job trigger for automatic text splitting. Composed internally by ProcessFileEmbedding (enabled by default in extract mode) but can also be used standalone.', CAST(E'{"type":"object","properties":{"content_field_name":{"type":"string","format":"column-ref","description":"Name of the text content column in the chunks table","default":"content"},"chunk_size":{"type":"integer","description":"Maximum number of characters per chunk","default":1000},"chunk_overlap":{"type":"integer","description":"Number of overlapping characters between consecutive chunks","default":200},"chunk_strategy":{"type":"string","enum":["fixed","sentence","paragraph","semantic"],"description":"Strategy for splitting text into chunks","default":"paragraph"},"dimensions":{"type":"integer","description":"Vector dimensions for per-chunk embeddings","default":768},"metric":{"type":"string","enum":["cosine","l2","ip"],"description":"Distance metric for the HNSW index on chunk embeddings","default":"cosine"},"embedding_model":{"type":"string","description":"Embedding model identifier for per-chunk embeddings. When null, the worker falls back to runtime config (llm_module / env vars)."},"embedding_provider":{"type":"string","description":"Embedding provider name (e.g. \\"ollama\\", \\"openai\\"). When null, the worker falls back to runtime config."},"chunks_table_name":{"type":"string","description":"Override the chunks table name. Defaults to {parent_table}_chunks."},"metadata_fields":{"type":"array","items":{"type":"string"},"description":"Field names from the parent table to copy into chunk metadata"},"search_indexes":{"type":"array","items":{"type":"string","enum":["fulltext","bm25","trigram"]},"description":"Text search indexes to create on the chunks content column. Omit to mirror the parent table''s text search indexes. Set explicitly to override (e.g. [\\"fulltext\\", \\"bm25\\"])."},"entity_field":{"type":"string","format":"column-ref","description":"Column on the parent table that holds (or references) the entity_id for billing scope. Forwarded to the chunking job trigger."},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Forwarded to the chunking job trigger.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from"},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, optional)"},"obj_field":{"type":"string","format":"column-ref","description":"Column on the related table that holds the entity_id"}},"required":["obj_table","obj_field"]},"enqueue_chunking_job":{"type":"boolean","description":"Whether to create a job trigger that auto-enqueues chunking on parent INSERT/UPDATE","default":true},"chunking_task_name":{"type":"string","description":"Task identifier for the chunking job queue","default":"generate_chunks"}}}' AS jsonb), CAST('{"embedding","chunks","vector","ai","rag"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1782,13 +1430,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('ProcessExtraction', 'process_extraction', 'process', 'File Extraction', 'Creates extraction output fields and a job trigger for file text extraction. Fires when a file is uploaded (status = ''uploaded'') or on INSERT. The external worker extracts text/metadata from the file (PDF, DOCX, HTML, etc.) and writes the result back to the configured output fields. Typically used upstream of ProcessFileEmbedding or ProcessChunks.', CAST(E'{"type":"object","$defs":{"triggerCondition":{"type":"object","description":"A leaf condition ({field, op, value?, row?, ref?}) or a combinator ({AND, OR, NOT}).","properties":{"field":{"type":"string","format":"column-ref","description":"Column name (validated against the table)."},"op":{"type":"string","enum":["=","!=",">","<",">=","<=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS DISTINCT FROM"],"description":"Comparison operator."},"value":{"description":"Comparison value. Type is resolved from the column definition. Omit for IS NULL, IS NOT NULL, IS DISTINCT FROM."},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW","description":"Row reference (default: NEW)."},"ref":{"type":"object","description":"Column reference for field-to-field comparison (alternative to value).","properties":{"field":{"type":"string","format":"column-ref"},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW"}}},"AND":{"type":"array","description":"Array of conditions combined with AND.","items":{"$ref":"#/$defs/triggerCondition"}},"OR":{"type":"array","description":"Array of conditions combined with OR.","items":{"$ref":"#/$defs/triggerCondition"}},"NOT":{"$ref":"#/$defs/triggerCondition","description":"Negated condition."}}}},"properties":{"text_field":{"type":"string","format":"column-ref","description":"Field to store extracted text/markdown","default":"extracted_text"},"metadata_field":{"type":"string","format":"column-ref","description":"JSONB field for extraction metadata (page count, language, etc.)","default":"extracted_metadata"},"extraction_model":{"type":"string","description":"Extraction model identifier (e.g. a vision model for OCR, an LLM for structured extraction). Included in the job payload so the worker knows which model to use. When null, the worker falls back to runtime config."},"extraction_provider":{"type":"string","description":"Extraction provider name (e.g. \\"ollama\\", \\"openai\\"). When null, the worker falls back to runtime config."},"mime_patterns":{"type":"array","items":{"type":"string"},"description":"MIME type LIKE patterns to match. Multiple patterns are OR''d together. Examples: [''application/pdf'', ''text/%''], [''application/vnd.openxmlformats%''].","default":["application/pdf","text/%"]},"task_identifier":{"type":"string","description":"Job task identifier for the extraction worker","default":"extract_file_text"},"events":{"type":"array","items":{"type":"string","enum":["INSERT","UPDATE"]},"description":"Trigger events that fire the job","default":["INSERT"]},"payload_custom":{"type":"object","additionalProperties":{"type":"string","format":"column-ref"},"description":"Custom payload key-to-column mapping for the job trigger","default":{"file_id":"id","key":"key","mime_type":"mime_type","bucket_id":"bucket_id"}},"trigger_conditions":{"description":"Additional compound conditions beyond auto-generated filtering. Merged with the auto-generated conditions via AND.","x-codegen-type":"TriggerCondition | TriggerCondition[]","oneOf":[{"$ref":"#/$defs/triggerCondition"},{"type":"array","items":{"$ref":"#/$defs/triggerCondition"}}]},"entity_field":{"type":"string","format":"column-ref","description":"Column on the trigger table that holds (or references) the entity_id for billing scope. Forwarded to the composed JobTrigger."},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Forwarded to the composed JobTrigger.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from"},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, optional)"},"obj_field":{"type":"string","format":"column-ref","description":"Column on the related table that holds the entity_id"}},"required":["obj_table","obj_field"]},"queue_name":{"type":"string","description":"Job queue name for extraction tasks","default":"extraction"},"max_attempts":{"type":"integer","description":"Maximum number of retry attempts","default":5},"priority":{"type":"integer","description":"Job priority (lower = higher priority)","default":0}}}' AS jsonb), CAST('{"extraction","files","processing","jobs","text"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('ProcessExtraction', 'process_extraction', 'process', 'File Extraction', 'Creates extraction output fields and a job trigger for file text extraction. Fires when a file is uploaded (status = ''uploaded'') or on INSERT. The external worker extracts text/metadata from the file (PDF, DOCX, HTML, etc.) and writes the result back to the configured output fields. Typically used upstream of ProcessFileEmbedding or ProcessChunks.', CAST(E'{"type":"object","$defs":{"triggerCondition":{"type":"object","description":"A leaf condition ({field, op, value?, row?, ref?}) or a combinator ({AND, OR, NOT}).","properties":{"field":{"type":"string","format":"column-ref","description":"Column name (validated against the table)."},"op":{"type":"string","enum":["=","!=",">","<",">=","<=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS DISTINCT FROM"],"description":"Comparison operator."},"value":{"description":"Comparison value. Type is resolved from the column definition. Omit for IS NULL, IS NOT NULL, IS DISTINCT FROM."},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW","description":"Row reference (default: NEW)."},"ref":{"type":"object","description":"Column reference for field-to-field comparison (alternative to value).","properties":{"field":{"type":"string","format":"column-ref"},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW"}}},"AND":{"type":"array","description":"Array of conditions combined with AND.","items":{"$ref":"#/$defs/triggerCondition"}},"OR":{"type":"array","description":"Array of conditions combined with OR.","items":{"$ref":"#/$defs/triggerCondition"}},"NOT":{"$ref":"#/$defs/triggerCondition","description":"Negated condition."}}}},"properties":{"text_field":{"type":"string","format":"column-ref","description":"Field to store extracted text/markdown","default":"extracted_text"},"metadata_field":{"type":"string","format":"column-ref","description":"JSONB field for extraction metadata (page count, language, etc.)","default":"extracted_metadata"},"extraction_model":{"type":"string","description":"Extraction model identifier (e.g. a vision model for OCR, an LLM for structured extraction). Included in the job payload so the worker knows which model to use. When null, the worker falls back to runtime config."},"extraction_provider":{"type":"string","description":"Extraction provider name (e.g. \\"ollama\\", \\"openai\\"). When null, the worker falls back to runtime config."},"mime_patterns":{"type":"array","items":{"type":"string"},"description":"MIME type LIKE patterns to match. Multiple patterns are OR''d together. Examples: [''application/pdf'', ''text/%''], [''application/vnd.openxmlformats%''].","default":["application/pdf","text/%"]},"task_identifier":{"type":"string","description":"Job task identifier for the extraction worker","default":"extract_file_text"},"events":{"type":"array","items":{"type":"string","enum":["INSERT","UPDATE"]},"description":"Trigger events that fire the job","default":["INSERT"]},"payload_custom":{"type":"object","additionalProperties":{"type":"string","format":"column-ref"},"description":"Custom payload key-to-column mapping for the job trigger","default":{"file_id":"id","key":"key","mime_type":"mime_type","bucket_id":"bucket_id"}},"trigger_conditions":{"description":"Additional compound conditions beyond auto-generated filtering. Merged with the auto-generated conditions via AND.","x-codegen-type":"TriggerCondition | TriggerCondition[]","oneOf":[{"$ref":"#/$defs/triggerCondition"},{"type":"array","items":{"$ref":"#/$defs/triggerCondition"}}]},"entity_field":{"type":"string","format":"column-ref","description":"Column on the trigger table that holds (or references) the entity_id for billing scope. Forwarded to the composed JobTrigger."},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Forwarded to the composed JobTrigger.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from"},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, optional)"},"obj_field":{"type":"string","format":"column-ref","description":"Column on the related table that holds the entity_id"}},"required":["obj_table","obj_field"]},"queue_name":{"type":"string","description":"Job queue name for extraction tasks","default":"extraction"},"max_attempts":{"type":"integer","description":"Maximum number of retry attempts","default":5},"priority":{"type":"integer","description":"Job priority (lower = higher priority)","default":0}}}' AS jsonb), CAST('{"extraction","files","processing","jobs","text"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1799,13 +1441,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('ProcessFileEmbedding', 'data_file_embedding', 'process', 'File Embedding', 'Generic, MIME-scoped embedding node for file tables. Supports two modes: direct (whole-file to single vector, e.g. CLIP for images) when extraction is omitted, or extract (file to text to chunks to per-chunk vectors) when extraction config is provided. Composes SearchVector + JobTrigger + ProcessChunks (enabled by default in extract mode) internally. Multiple instances can coexist on the same table with different MIME scopes, field names, and embedding strategies.', CAST(E'{"type":"object","$defs":{"triggerCondition":{"type":"object","description":"A leaf condition ({field, op, value?, row?, ref?}) or a combinator ({AND, OR, NOT}).","properties":{"field":{"type":"string","format":"column-ref","description":"Column name (validated against the table)."},"op":{"type":"string","enum":["=","!=",">","<",">=","<=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS DISTINCT FROM"],"description":"Comparison operator."},"value":{"description":"Comparison value. Type is resolved from the column definition. Omit for IS NULL, IS NOT NULL, IS DISTINCT FROM."},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW","description":"Row reference (default: NEW)."},"ref":{"type":"object","description":"Column reference for field-to-field comparison (alternative to value).","properties":{"field":{"type":"string","format":"column-ref"},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW"}}},"AND":{"type":"array","description":"Array of conditions combined with AND.","items":{"$ref":"#/$defs/triggerCondition"}},"OR":{"type":"array","description":"Array of conditions combined with OR.","items":{"$ref":"#/$defs/triggerCondition"}},"NOT":{"$ref":"#/$defs/triggerCondition","description":"Negated condition."}}}},"properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of the vector embedding column","default":"embedding"},"dimensions":{"type":"integer","description":"Vector dimensions (e.g. 512 for CLIP, 768 for nomic, 1536 for ada-002)","default":768},"index_method":{"type":"string","enum":["hnsw","ivfflat"],"description":"Index type for similarity search","default":"hnsw"},"metric":{"type":"string","enum":["cosine","l2","ip"],"description":"Distance metric","default":"cosine"},"index_options":{"type":"object","description":"Index-specific options. HNSW: {m, ef_construction}. IVFFlat: {lists}.","default":{}},"embedding_model":{"type":"string","description":"Embedding model identifier (e.g. \\"nomic-embed-text\\", \\"text-embedding-3-small\\", \\"clip-vit-base-patch32\\"). Included in the job payload so the worker knows which model to use. When null, the worker falls back to runtime config (llm_module / env vars)."},"embedding_provider":{"type":"string","description":"Embedding provider name (e.g. \\"ollama\\", \\"openai\\"). When null, the worker falls back to runtime config."},"mime_patterns":{"type":"array","items":{"type":"string"},"description":"MIME type LIKE patterns to match. Multiple patterns are OR''d together. Examples: [''image/%''], [''application/pdf'', ''text/%''], [''audio/%''].","default":["image/%"]},"task_identifier":{"type":"string","description":"Job task identifier for the worker. In direct mode this is the embedding worker; in extract mode this is the extraction worker.","default":"process_file_embedding"},"events":{"type":"array","items":{"type":"string","enum":["INSERT","UPDATE"]},"description":"Trigger events that fire the job","default":["INSERT"]},"payload_custom":{"type":"object","additionalProperties":{"type":"string","format":"column-ref"},"description":"Custom payload key-to-column mapping for the job trigger","default":{"file_id":"id","key":"key","mime_type":"mime_type","bucket_id":"bucket_id"}},"trigger_conditions":{"description":"Additional compound conditions beyond auto-generated filtering. Merged with the auto-generated conditions via AND.","x-codegen-type":"TriggerCondition | TriggerCondition[]","oneOf":[{"$ref":"#/$defs/triggerCondition"},{"type":"array","items":{"$ref":"#/$defs/triggerCondition"}}]},"entity_field":{"type":"string","format":"column-ref","description":"Column on the trigger table that holds (or references) the entity_id for billing scope. Forwarded to the composed JobTrigger."},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Forwarded to the composed JobTrigger.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from"},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, optional)"},"obj_field":{"type":"string","format":"column-ref","description":"Column on the related table that holds the entity_id"}},"required":["obj_table","obj_field"]},"extraction":{"type":"object","description":"Text extraction configuration. When present, the generator creates extraction output fields on the table and configures SearchVector with source_fields + stale tracking. When absent, the node operates in direct mode (single vector per file, no text extraction).","properties":{"text_field":{"type":"string","format":"column-ref","description":"Field to store extracted text/markdown","default":"extracted_text"},"metadata_field":{"type":"string","format":"column-ref","description":"JSONB field for extraction metadata (page count, language, etc.)","default":"extracted_metadata"}}},"include_chunks":{"type":"boolean","description":"Whether to create a chunks table via ProcessChunks. Defaults to true when extraction is provided, false in direct mode. Set explicitly to override."},"chunks":{"type":"object","description":"Chunking configuration passed through to ProcessChunks. When include_chunks is true (or defaults to true in extract mode), these params configure the chunks table, embedding dimensions, strategy, etc.","default":{},"properties":{"content_field_name":{"type":"string","format":"column-ref","description":"Name of the text content column in the chunks table","default":"content"},"chunk_size":{"type":"integer","description":"Maximum number of characters per chunk","default":1000},"chunk_overlap":{"type":"integer","description":"Number of overlapping characters between consecutive chunks","default":200},"chunk_strategy":{"type":"string","enum":["fixed","sentence","paragraph","semantic"],"description":"Strategy for splitting text into chunks","default":"paragraph"},"metadata_fields":{"type":"array","items":{"type":"string"},"description":"Field names from parent to copy into chunk metadata"},"search_indexes":{"type":"array","items":{"type":"string","enum":["fulltext","bm25","trigram"]},"description":"Text search indexes to create on the chunks content column. Omit to mirror the parent table''s text search indexes. Set explicitly to override."},"enqueue_chunking_job":{"type":"boolean","description":"Whether to auto-enqueue a chunking job on insert/update","default":true},"chunking_task_name":{"type":"string","description":"Task identifier for the chunking job queue","default":"generate_chunks"}}}}}' AS jsonb), CAST('{"embedding","vector","ai","composition","jobs","multimodal","files"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('ProcessFileEmbedding', 'data_file_embedding', 'process', 'File Embedding', 'Generic, MIME-scoped embedding node for file tables. Supports two modes: direct (whole-file to single vector, e.g. CLIP for images) when extraction is omitted, or extract (file to text to chunks to per-chunk vectors) when extraction config is provided. Composes SearchVector + JobTrigger + ProcessChunks (enabled by default in extract mode) internally. Multiple instances can coexist on the same table with different MIME scopes, field names, and embedding strategies.', CAST(E'{"type":"object","$defs":{"triggerCondition":{"type":"object","description":"A leaf condition ({field, op, value?, row?, ref?}) or a combinator ({AND, OR, NOT}).","properties":{"field":{"type":"string","format":"column-ref","description":"Column name (validated against the table)."},"op":{"type":"string","enum":["=","!=",">","<",">=","<=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS DISTINCT FROM"],"description":"Comparison operator."},"value":{"description":"Comparison value. Type is resolved from the column definition. Omit for IS NULL, IS NOT NULL, IS DISTINCT FROM."},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW","description":"Row reference (default: NEW)."},"ref":{"type":"object","description":"Column reference for field-to-field comparison (alternative to value).","properties":{"field":{"type":"string","format":"column-ref"},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW"}}},"AND":{"type":"array","description":"Array of conditions combined with AND.","items":{"$ref":"#/$defs/triggerCondition"}},"OR":{"type":"array","description":"Array of conditions combined with OR.","items":{"$ref":"#/$defs/triggerCondition"}},"NOT":{"$ref":"#/$defs/triggerCondition","description":"Negated condition."}}}},"properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of the vector embedding column","default":"embedding"},"dimensions":{"type":"integer","description":"Vector dimensions (e.g. 512 for CLIP, 768 for nomic, 1536 for ada-002)","default":768},"index_method":{"type":"string","enum":["hnsw","ivfflat"],"description":"Index type for similarity search","default":"hnsw"},"metric":{"type":"string","enum":["cosine","l2","ip"],"description":"Distance metric","default":"cosine"},"index_options":{"type":"object","description":"Index-specific options. HNSW: {m, ef_construction}. IVFFlat: {lists}.","default":{}},"embedding_model":{"type":"string","description":"Embedding model identifier (e.g. \\"nomic-embed-text\\", \\"text-embedding-3-small\\", \\"clip-vit-base-patch32\\"). Included in the job payload so the worker knows which model to use. When null, the worker falls back to runtime config (llm_module / env vars)."},"embedding_provider":{"type":"string","description":"Embedding provider name (e.g. \\"ollama\\", \\"openai\\"). When null, the worker falls back to runtime config."},"mime_patterns":{"type":"array","items":{"type":"string"},"description":"MIME type LIKE patterns to match. Multiple patterns are OR''d together. Examples: [''image/%''], [''application/pdf'', ''text/%''], [''audio/%''].","default":["image/%"]},"task_identifier":{"type":"string","description":"Job task identifier for the worker. In direct mode this is the embedding worker; in extract mode this is the extraction worker.","default":"process_file_embedding"},"events":{"type":"array","items":{"type":"string","enum":["INSERT","UPDATE"]},"description":"Trigger events that fire the job","default":["INSERT"]},"payload_custom":{"type":"object","additionalProperties":{"type":"string","format":"column-ref"},"description":"Custom payload key-to-column mapping for the job trigger","default":{"file_id":"id","key":"key","mime_type":"mime_type","bucket_id":"bucket_id"}},"trigger_conditions":{"description":"Additional compound conditions beyond auto-generated filtering. Merged with the auto-generated conditions via AND.","x-codegen-type":"TriggerCondition | TriggerCondition[]","oneOf":[{"$ref":"#/$defs/triggerCondition"},{"type":"array","items":{"$ref":"#/$defs/triggerCondition"}}]},"entity_field":{"type":"string","format":"column-ref","description":"Column on the trigger table that holds (or references) the entity_id for billing scope. Forwarded to the composed JobTrigger."},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Forwarded to the composed JobTrigger.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from"},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, optional)"},"obj_field":{"type":"string","format":"column-ref","description":"Column on the related table that holds the entity_id"}},"required":["obj_table","obj_field"]},"extraction":{"type":"object","description":"Text extraction configuration. When present, the generator creates extraction output fields on the table and configures SearchVector with source_fields + stale tracking. When absent, the node operates in direct mode (single vector per file, no text extraction).","properties":{"text_field":{"type":"string","format":"column-ref","description":"Field to store extracted text/markdown","default":"extracted_text"},"metadata_field":{"type":"string","format":"column-ref","description":"JSONB field for extraction metadata (page count, language, etc.)","default":"extracted_metadata"}}},"include_chunks":{"type":"boolean","description":"Whether to create a chunks table via ProcessChunks. Defaults to true when extraction is provided, false in direct mode. Set explicitly to override."},"chunks":{"type":"object","description":"Chunking configuration passed through to ProcessChunks. When include_chunks is true (or defaults to true in extract mode), these params configure the chunks table, embedding dimensions, strategy, etc.","default":{},"properties":{"content_field_name":{"type":"string","format":"column-ref","description":"Name of the text content column in the chunks table","default":"content"},"chunk_size":{"type":"integer","description":"Maximum number of characters per chunk","default":1000},"chunk_overlap":{"type":"integer","description":"Number of overlapping characters between consecutive chunks","default":200},"chunk_strategy":{"type":"string","enum":["fixed","sentence","paragraph","semantic"],"description":"Strategy for splitting text into chunks","default":"paragraph"},"metadata_fields":{"type":"array","items":{"type":"string"},"description":"Field names from parent to copy into chunk metadata"},"search_indexes":{"type":"array","items":{"type":"string","enum":["fulltext","bm25","trigram"]},"description":"Text search indexes to create on the chunks content column. Omit to mirror the parent table''s text search indexes. Set explicitly to override."},"enqueue_chunking_job":{"type":"boolean","description":"Whether to auto-enqueue a chunking job on insert/update","default":true},"chunking_task_name":{"type":"string","description":"Task identifier for the chunking job queue","default":"generate_chunks"}}}}}' AS jsonb), CAST('{"embedding","vector","ai","composition","jobs","multimodal","files"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1816,13 +1452,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('ProcessImageEmbedding', 'data_image_embedding', 'process', 'Image Embedding', 'Image-specific preset of ProcessFileEmbedding. Delegates to ProcessFileEmbedding with image-oriented defaults: dimensions=512 (CLIP), mime_patterns=[''image/%''], task_identifier=''process_image_embedding'', direct mode (no extraction). Accepts all ProcessFileEmbedding parameters — any overrides are forwarded through.', CAST(E'{"type":"object","$defs":{"triggerCondition":{"type":"object","description":"A leaf condition ({field, op, value?, row?, ref?}) or a combinator ({AND, OR, NOT}).","properties":{"field":{"type":"string","format":"column-ref","description":"Column name (validated against the table)."},"op":{"type":"string","enum":["=","!=",">","<",">=","<=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS DISTINCT FROM"],"description":"Comparison operator."},"value":{"description":"Comparison value. Type is resolved from the column definition. Omit for IS NULL, IS NOT NULL, IS DISTINCT FROM."},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW","description":"Row reference (default: NEW)."},"ref":{"type":"object","description":"Column reference for field-to-field comparison (alternative to value).","properties":{"field":{"type":"string","format":"column-ref"},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW"}}},"AND":{"type":"array","description":"Array of conditions combined with AND.","items":{"$ref":"#/$defs/triggerCondition"}},"OR":{"type":"array","description":"Array of conditions combined with OR.","items":{"$ref":"#/$defs/triggerCondition"}},"NOT":{"$ref":"#/$defs/triggerCondition","description":"Negated condition."}}}},"properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of the vector embedding column","default":"embedding"},"dimensions":{"type":"integer","description":"Vector dimensions (default 512 for CLIP-style image embeddings)","default":512},"index_method":{"type":"string","enum":["hnsw","ivfflat"],"description":"Index type for similarity search","default":"hnsw"},"metric":{"type":"string","enum":["cosine","l2","ip"],"description":"Distance metric","default":"cosine"},"index_options":{"type":"object","description":"Index-specific options. HNSW: {m, ef_construction}. IVFFlat: {lists}.","default":{}},"embedding_model":{"type":"string","description":"Embedding model identifier (e.g. \\"clip-vit-base-patch32\\"). Included in the job payload so the worker knows which model to use. When null, the worker falls back to runtime config (llm_module / env vars)."},"embedding_provider":{"type":"string","description":"Embedding provider name (e.g. \\"ollama\\", \\"openai\\"). When null, the worker falls back to runtime config."},"mime_patterns":{"type":"array","items":{"type":"string"},"description":"MIME type LIKE patterns to match. Multiple patterns are OR''d together.","default":["image/%"]},"task_identifier":{"type":"string","description":"Job task identifier for the image embedding worker","default":"process_image_embedding"},"events":{"type":"array","items":{"type":"string","enum":["INSERT","UPDATE"]},"description":"Trigger events that fire the job","default":["INSERT"]},"payload_custom":{"type":"object","additionalProperties":{"type":"string","format":"column-ref"},"description":"Custom payload key-to-column mapping for the job trigger","default":{"file_id":"id","key":"key","mime_type":"mime_type","bucket_id":"bucket_id"}},"trigger_conditions":{"description":"Additional compound conditions beyond auto-generated filtering. Merged with the auto-generated conditions via AND.","x-codegen-type":"TriggerCondition | TriggerCondition[]","oneOf":[{"$ref":"#/$defs/triggerCondition"},{"type":"array","items":{"$ref":"#/$defs/triggerCondition"}}]},"entity_field":{"type":"string","format":"column-ref","description":"Column on the trigger table that holds (or references) the entity_id for billing scope. Forwarded to the composed JobTrigger."},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Forwarded to the composed JobTrigger.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from"},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, optional)"},"obj_field":{"type":"string","format":"column-ref","description":"Column on the related table that holds the entity_id"}},"required":["obj_table","obj_field"]},"extraction":{"type":"object","description":"Text extraction configuration. Forwarded to ProcessFileEmbedding. When present, enables extract mode (e.g., OCR for images).","properties":{"text_field":{"type":"string","format":"column-ref","description":"Field to store extracted text","default":"extracted_text"},"metadata_field":{"type":"string","format":"column-ref","description":"JSONB field for extraction metadata","default":"extracted_metadata"}}},"chunks":{"type":"object","description":"Chunking configuration. Forwarded to ProcessFileEmbedding. Only meaningful when extraction is also provided.","properties":{"content_field_name":{"type":"string","format":"column-ref","default":"content"},"chunk_size":{"type":"integer","default":1000},"chunk_overlap":{"type":"integer","default":200},"chunk_strategy":{"type":"string","enum":["fixed","sentence","paragraph","semantic"],"default":"paragraph"},"metadata_fields":{"type":"object"},"enqueue_chunking_job":{"type":"boolean","default":true},"chunking_task_name":{"type":"string","default":"generate_chunks"}}}}}' AS jsonb), CAST('{"embedding","image","vector","ai","composition","jobs"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('ProcessImageEmbedding', 'data_image_embedding', 'process', 'Image Embedding', 'Image-specific preset of ProcessFileEmbedding. Delegates to ProcessFileEmbedding with image-oriented defaults: dimensions=512 (CLIP), mime_patterns=[''image/%''], task_identifier=''process_image_embedding'', direct mode (no extraction). Accepts all ProcessFileEmbedding parameters — any overrides are forwarded through.', CAST(E'{"type":"object","$defs":{"triggerCondition":{"type":"object","description":"A leaf condition ({field, op, value?, row?, ref?}) or a combinator ({AND, OR, NOT}).","properties":{"field":{"type":"string","format":"column-ref","description":"Column name (validated against the table)."},"op":{"type":"string","enum":["=","!=",">","<",">=","<=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS DISTINCT FROM"],"description":"Comparison operator."},"value":{"description":"Comparison value. Type is resolved from the column definition. Omit for IS NULL, IS NOT NULL, IS DISTINCT FROM."},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW","description":"Row reference (default: NEW)."},"ref":{"type":"object","description":"Column reference for field-to-field comparison (alternative to value).","properties":{"field":{"type":"string","format":"column-ref"},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW"}}},"AND":{"type":"array","description":"Array of conditions combined with AND.","items":{"$ref":"#/$defs/triggerCondition"}},"OR":{"type":"array","description":"Array of conditions combined with OR.","items":{"$ref":"#/$defs/triggerCondition"}},"NOT":{"$ref":"#/$defs/triggerCondition","description":"Negated condition."}}}},"properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of the vector embedding column","default":"embedding"},"dimensions":{"type":"integer","description":"Vector dimensions (default 512 for CLIP-style image embeddings)","default":512},"index_method":{"type":"string","enum":["hnsw","ivfflat"],"description":"Index type for similarity search","default":"hnsw"},"metric":{"type":"string","enum":["cosine","l2","ip"],"description":"Distance metric","default":"cosine"},"index_options":{"type":"object","description":"Index-specific options. HNSW: {m, ef_construction}. IVFFlat: {lists}.","default":{}},"embedding_model":{"type":"string","description":"Embedding model identifier (e.g. \\"clip-vit-base-patch32\\"). Included in the job payload so the worker knows which model to use. When null, the worker falls back to runtime config (llm_module / env vars)."},"embedding_provider":{"type":"string","description":"Embedding provider name (e.g. \\"ollama\\", \\"openai\\"). When null, the worker falls back to runtime config."},"mime_patterns":{"type":"array","items":{"type":"string"},"description":"MIME type LIKE patterns to match. Multiple patterns are OR''d together.","default":["image/%"]},"task_identifier":{"type":"string","description":"Job task identifier for the image embedding worker","default":"process_image_embedding"},"events":{"type":"array","items":{"type":"string","enum":["INSERT","UPDATE"]},"description":"Trigger events that fire the job","default":["INSERT"]},"payload_custom":{"type":"object","additionalProperties":{"type":"string","format":"column-ref"},"description":"Custom payload key-to-column mapping for the job trigger","default":{"file_id":"id","key":"key","mime_type":"mime_type","bucket_id":"bucket_id"}},"trigger_conditions":{"description":"Additional compound conditions beyond auto-generated filtering. Merged with the auto-generated conditions via AND.","x-codegen-type":"TriggerCondition | TriggerCondition[]","oneOf":[{"$ref":"#/$defs/triggerCondition"},{"type":"array","items":{"$ref":"#/$defs/triggerCondition"}}]},"entity_field":{"type":"string","format":"column-ref","description":"Column on the trigger table that holds (or references) the entity_id for billing scope. Forwarded to the composed JobTrigger."},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Forwarded to the composed JobTrigger.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from"},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, optional)"},"obj_field":{"type":"string","format":"column-ref","description":"Column on the related table that holds the entity_id"}},"required":["obj_table","obj_field"]},"extraction":{"type":"object","description":"Text extraction configuration. Forwarded to ProcessFileEmbedding. When present, enables extract mode (e.g., OCR for images).","properties":{"text_field":{"type":"string","format":"column-ref","description":"Field to store extracted text","default":"extracted_text"},"metadata_field":{"type":"string","format":"column-ref","description":"JSONB field for extraction metadata","default":"extracted_metadata"}}},"chunks":{"type":"object","description":"Chunking configuration. Forwarded to ProcessFileEmbedding. Only meaningful when extraction is also provided.","properties":{"content_field_name":{"type":"string","format":"column-ref","default":"content"},"chunk_size":{"type":"integer","default":1000},"chunk_overlap":{"type":"integer","default":200},"chunk_strategy":{"type":"string","enum":["fixed","sentence","paragraph","semantic"],"default":"paragraph"},"metadata_fields":{"type":"object"},"enqueue_chunking_job":{"type":"boolean","default":true},"chunking_task_name":{"type":"string","default":"generate_chunks"}}}}}' AS jsonb), CAST('{"embedding","image","vector","ai","composition","jobs"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1833,13 +1463,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('ProcessImageVersions', 'process_image_versions', 'process', 'Image Versions', 'Creates a job trigger for image variant generation. Fires when an image file is uploaded (status = ''uploaded'') or on INSERT. The external worker generates resized, cropped, or reformatted versions (thumbnails, previews, WebP conversions, etc.) and stores them as new file records linked to the source image.', CAST(E'{"type":"object","$defs":{"triggerCondition":{"type":"object","description":"A leaf condition ({field, op, value?, row?, ref?}) or a combinator ({AND, OR, NOT}).","properties":{"field":{"type":"string","format":"column-ref","description":"Column name (validated against the table)."},"op":{"type":"string","enum":["=","!=",">","<",">=","<=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS DISTINCT FROM"],"description":"Comparison operator."},"value":{"description":"Comparison value. Type is resolved from the column definition. Omit for IS NULL, IS NOT NULL, IS DISTINCT FROM."},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW","description":"Row reference (default: NEW)."},"ref":{"type":"object","description":"Column reference for field-to-field comparison (alternative to value).","properties":{"field":{"type":"string","format":"column-ref"},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW"}}},"AND":{"type":"array","description":"Array of conditions combined with AND.","items":{"$ref":"#/$defs/triggerCondition"}},"OR":{"type":"array","description":"Array of conditions combined with OR.","items":{"$ref":"#/$defs/triggerCondition"}},"NOT":{"$ref":"#/$defs/triggerCondition","description":"Negated condition."}}}},"required":["versions"],"properties":{"versions":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Version identifier (e.g., \\"thumb\\", \\"preview\\", \\"hero\\")"},"width":{"type":"integer","description":"Target width in pixels"},"height":{"type":"integer","description":"Target height in pixels"},"fit":{"type":"string","enum":["cover","contain","fill","inside","outside"],"description":"Resize fitting strategy","default":"cover"},"format":{"type":"string","enum":["jpeg","png","webp","avif"],"description":"Output image format","default":"webp"},"quality":{"type":"integer","description":"Output quality (1-100)","default":80}},"required":["name"]},"description":"Array of version definitions. Each version specifies dimensions, format, and quality for a generated image variant. Required — the blueprint must explicitly define what variants to generate.","minItems":1},"mime_patterns":{"type":"array","items":{"type":"string"},"description":"MIME type LIKE patterns to match. Defaults to all image types.","default":["image/%"]},"task_identifier":{"type":"string","description":"Job task identifier for the image processing worker","default":"process_image_versions"},"events":{"type":"array","items":{"type":"string","enum":["INSERT","UPDATE"]},"description":"Trigger events that fire the job","default":["INSERT"]},"payload_custom":{"type":"object","additionalProperties":{"type":"string","format":"column-ref"},"description":"Custom payload key-to-column mapping for the job trigger","default":{"file_id":"id","key":"key","mime_type":"mime_type","bucket_id":"bucket_id"}},"trigger_conditions":{"description":"Additional compound conditions beyond auto-generated filtering. Merged with the auto-generated conditions via AND.","x-codegen-type":"TriggerCondition | TriggerCondition[]","oneOf":[{"$ref":"#/$defs/triggerCondition"},{"type":"array","items":{"$ref":"#/$defs/triggerCondition"}}]},"entity_field":{"type":"string","format":"column-ref","description":"Column on the trigger table that holds (or references) the entity_id for billing scope. Forwarded to the composed JobTrigger."},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Forwarded to the composed JobTrigger.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from"},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, optional)"},"obj_field":{"type":"string","format":"column-ref","description":"Column on the related table that holds the entity_id"}},"required":["obj_table","obj_field"]},"queue_name":{"type":"string","description":"Job queue name for image processing tasks","default":"image_processing"},"max_attempts":{"type":"integer","description":"Maximum number of retry attempts","default":5},"priority":{"type":"integer","description":"Job priority (lower = higher priority)","default":0}}}' AS jsonb), CAST('{"images","processing","jobs","resize","thumbnails","files"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('ProcessImageVersions', 'process_image_versions', 'process', 'Image Versions', 'Creates a job trigger for image variant generation. Fires when an image file is uploaded (status = ''uploaded'') or on INSERT. The external worker generates resized, cropped, or reformatted versions (thumbnails, previews, WebP conversions, etc.) and stores them as new file records linked to the source image.', CAST(E'{"type":"object","$defs":{"triggerCondition":{"type":"object","description":"A leaf condition ({field, op, value?, row?, ref?}) or a combinator ({AND, OR, NOT}).","properties":{"field":{"type":"string","format":"column-ref","description":"Column name (validated against the table)."},"op":{"type":"string","enum":["=","!=",">","<",">=","<=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS DISTINCT FROM"],"description":"Comparison operator."},"value":{"description":"Comparison value. Type is resolved from the column definition. Omit for IS NULL, IS NOT NULL, IS DISTINCT FROM."},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW","description":"Row reference (default: NEW)."},"ref":{"type":"object","description":"Column reference for field-to-field comparison (alternative to value).","properties":{"field":{"type":"string","format":"column-ref"},"row":{"type":"string","enum":["NEW","OLD"],"default":"NEW"}}},"AND":{"type":"array","description":"Array of conditions combined with AND.","items":{"$ref":"#/$defs/triggerCondition"}},"OR":{"type":"array","description":"Array of conditions combined with OR.","items":{"$ref":"#/$defs/triggerCondition"}},"NOT":{"$ref":"#/$defs/triggerCondition","description":"Negated condition."}}}},"required":["versions"],"properties":{"versions":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Version identifier (e.g., \\"thumb\\", \\"preview\\", \\"hero\\")"},"width":{"type":"integer","description":"Target width in pixels"},"height":{"type":"integer","description":"Target height in pixels"},"fit":{"type":"string","enum":["cover","contain","fill","inside","outside"],"description":"Resize fitting strategy","default":"cover"},"format":{"type":"string","enum":["jpeg","png","webp","avif"],"description":"Output image format","default":"webp"},"quality":{"type":"integer","description":"Output quality (1-100)","default":80}},"required":["name"]},"description":"Array of version definitions. Each version specifies dimensions, format, and quality for a generated image variant. Required — the blueprint must explicitly define what variants to generate.","minItems":1},"mime_patterns":{"type":"array","items":{"type":"string"},"description":"MIME type LIKE patterns to match. Defaults to all image types.","default":["image/%"]},"task_identifier":{"type":"string","description":"Job task identifier for the image processing worker","default":"process_image_versions"},"events":{"type":"array","items":{"type":"string","enum":["INSERT","UPDATE"]},"description":"Trigger events that fire the job","default":["INSERT"]},"payload_custom":{"type":"object","additionalProperties":{"type":"string","format":"column-ref"},"description":"Custom payload key-to-column mapping for the job trigger","default":{"file_id":"id","key":"key","mime_type":"mime_type","bucket_id":"bucket_id"}},"trigger_conditions":{"description":"Additional compound conditions beyond auto-generated filtering. Merged with the auto-generated conditions via AND.","x-codegen-type":"TriggerCondition | TriggerCondition[]","oneOf":[{"$ref":"#/$defs/triggerCondition"},{"type":"array","items":{"$ref":"#/$defs/triggerCondition"}}]},"entity_field":{"type":"string","format":"column-ref","description":"Column on the trigger table that holds (or references) the entity_id for billing scope. Forwarded to the composed JobTrigger."},"entity_lookup":{"type":"object","description":"FK lookup configuration for resolving entity_id through a related table. Forwarded to the composed JobTrigger.","properties":{"obj_table":{"type":"string","description":"Name of the related table to look up entity_id from"},"obj_schema":{"type":"string","description":"Schema of the related table (user-facing name, optional)"},"obj_field":{"type":"string","format":"column-ref","description":"Column on the related table that holds the entity_id"}},"required":["obj_table","obj_field"]},"queue_name":{"type":"string","description":"Job queue name for image processing tasks","default":"image_processing"},"max_attempts":{"type":"integer","description":"Maximum number of retry attempts","default":5},"priority":{"type":"integer","description":"Job priority (lower = higher priority)","default":0}}}' AS jsonb), CAST('{"images","processing","jobs","resize","thumbnails","files"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1850,13 +1474,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('RelationBelongsTo', 'relation_belongs_to', 'relation', 'Belongs To', 'Creates a foreign key field on the source table referencing the target table. Auto-derives the FK field name from the target table name using inflection (e.g., projects derives project_id). delete_action is required and must be explicitly provided by the caller.', CAST('{"type":"object","properties":{"source_table_id":{"type":"string","format":"uuid","description":"Table that will have the FK field added"},"target_table_id":{"type":"string","format":"uuid","description":"Table being referenced by the FK"},"field_name":{"type":"string","format":"column-ref","description":"FK field name on the source table. Auto-derived from target table name if omitted (e.g., projects → project_id)"},"delete_action":{"type":"string","enum":["c","r","n","d","a"],"description":"FK delete action: c=CASCADE, r=RESTRICT, n=SET NULL, d=SET DEFAULT, a=NO ACTION. Required."},"is_required":{"type":"boolean","description":"Whether the FK field is NOT NULL","default":true}},"required":["source_table_id","target_table_id","delete_action"]}' AS jsonb), CAST('{"relation","foreign_key","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('RelationBelongsTo', 'relation_belongs_to', 'relation', 'Belongs To', 'Creates a foreign key field on the source table referencing the target table. Auto-derives the FK field name from the target table name using inflection (e.g., projects derives project_id). delete_action is required and must be explicitly provided by the caller.', CAST('{"type":"object","properties":{"source_table_id":{"type":"string","format":"uuid","description":"Table that will have the FK field added"},"target_table_id":{"type":"string","format":"uuid","description":"Table being referenced by the FK"},"field_name":{"type":"string","format":"column-ref","description":"FK field name on the source table. Auto-derived from target table name if omitted (e.g., projects → project_id)"},"delete_action":{"type":"string","enum":["c","r","n","d","a"],"description":"FK delete action: c=CASCADE, r=RESTRICT, n=SET NULL, d=SET DEFAULT, a=NO ACTION. Required."},"is_required":{"type":"boolean","description":"Whether the FK field is NOT NULL","default":true}},"required":["source_table_id","target_table_id","delete_action"]}' AS jsonb), CAST('{"relation","foreign_key","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1867,13 +1485,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('RelationHasMany', 'relation_has_many', 'relation', 'Has Many', 'Creates a foreign key field on the target table referencing the source table. Inverse of RelationBelongsTo — same FK, different perspective. "projects has many tasks" creates tasks.project_id. Auto-derives the FK field name from the source table name using inflection. delete_action is required and must be explicitly provided by the caller.', CAST('{"type":"object","properties":{"source_table_id":{"type":"string","format":"uuid","description":"Parent table being referenced by the FK (e.g., projects in projects has many tasks)"},"target_table_id":{"type":"string","format":"uuid","description":"Child table that receives the FK field (e.g., tasks in projects has many tasks)"},"field_name":{"type":"string","format":"column-ref","description":"FK field name on the target table. Auto-derived from source table name if omitted (e.g., projects derives project_id)"},"delete_action":{"type":"string","enum":["c","r","n","d","a"],"description":"FK delete action: c=CASCADE, r=RESTRICT, n=SET NULL, d=SET DEFAULT, a=NO ACTION. Required."},"is_required":{"type":"boolean","description":"Whether the FK field is NOT NULL","default":true}},"required":["source_table_id","target_table_id","delete_action"]}' AS jsonb), CAST('{"relation","foreign_key","has_many","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('RelationHasMany', 'relation_has_many', 'relation', 'Has Many', 'Creates a foreign key field on the target table referencing the source table. Inverse of RelationBelongsTo — same FK, different perspective. "projects has many tasks" creates tasks.project_id. Auto-derives the FK field name from the source table name using inflection. delete_action is required and must be explicitly provided by the caller.', CAST('{"type":"object","properties":{"source_table_id":{"type":"string","format":"uuid","description":"Parent table being referenced by the FK (e.g., projects in projects has many tasks)"},"target_table_id":{"type":"string","format":"uuid","description":"Child table that receives the FK field (e.g., tasks in projects has many tasks)"},"field_name":{"type":"string","format":"column-ref","description":"FK field name on the target table. Auto-derived from source table name if omitted (e.g., projects derives project_id)"},"delete_action":{"type":"string","enum":["c","r","n","d","a"],"description":"FK delete action: c=CASCADE, r=RESTRICT, n=SET NULL, d=SET DEFAULT, a=NO ACTION. Required."},"is_required":{"type":"boolean","description":"Whether the FK field is NOT NULL","default":true}},"required":["source_table_id","target_table_id","delete_action"]}' AS jsonb), CAST('{"relation","foreign_key","has_many","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1884,13 +1496,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('RelationHasOne', 'relation_has_one', 'relation', 'Has One', 'Creates a foreign key field with a unique constraint on the source table referencing the target table. Enforces 1:1 cardinality. Auto-derives the FK field name from the target table name using inflection. delete_action is required and must be explicitly provided by the caller.', CAST('{"type":"object","properties":{"source_table_id":{"type":"string","format":"uuid","description":"Table that will have the FK field and unique constraint"},"target_table_id":{"type":"string","format":"uuid","description":"Table being referenced by the FK"},"field_name":{"type":"string","format":"column-ref","description":"FK field name on the source table. Auto-derived from target table name if omitted (e.g., users → user_id)"},"delete_action":{"type":"string","enum":["c","r","n","d","a"],"description":"FK delete action: c=CASCADE, r=RESTRICT, n=SET NULL, d=SET DEFAULT, a=NO ACTION. Required."},"is_required":{"type":"boolean","description":"Whether the FK field is NOT NULL","default":true}},"required":["source_table_id","target_table_id","delete_action"]}' AS jsonb), CAST('{"relation","foreign_key","unique","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('RelationHasOne', 'relation_has_one', 'relation', 'Has One', 'Creates a foreign key field with a unique constraint on the source table referencing the target table. Enforces 1:1 cardinality. Auto-derives the FK field name from the target table name using inflection. delete_action is required and must be explicitly provided by the caller.', CAST('{"type":"object","properties":{"source_table_id":{"type":"string","format":"uuid","description":"Table that will have the FK field and unique constraint"},"target_table_id":{"type":"string","format":"uuid","description":"Table being referenced by the FK"},"field_name":{"type":"string","format":"column-ref","description":"FK field name on the source table. Auto-derived from target table name if omitted (e.g., users → user_id)"},"delete_action":{"type":"string","enum":["c","r","n","d","a"],"description":"FK delete action: c=CASCADE, r=RESTRICT, n=SET NULL, d=SET DEFAULT, a=NO ACTION. Required."},"is_required":{"type":"boolean","description":"Whether the FK field is NOT NULL","default":true}},"required":["source_table_id","target_table_id","delete_action"]}' AS jsonb), CAST('{"relation","foreign_key","unique","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1901,13 +1507,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('RelationManyToMany', 'relation_many_to_many', 'relation', 'Many to Many', 'Creates a junction table between source and target tables with auto-derived naming and FK fields. The trigger creates a bare table (no implicit DataId), adds FK fields to both tables, optionally creates a composite PK (use_composite_key), then forwards all security config to secure_table_provision as-is. The trigger never injects values the caller did not provide. Junction table FKs always CASCADE on delete.', CAST('{"type":"object","properties":{"source_table_id":{"type":"string","format":"uuid","description":"First table in the M:N relationship"},"target_table_id":{"type":"string","format":"uuid","description":"Second table in the M:N relationship"},"junction_table_id":{"type":"string","format":"uuid","description":"Existing junction table to use. If uuid_nil(), a new bare table is created"},"junction_table_name":{"type":"string","description":"Junction table name. Auto-derived from both table names if omitted (e.g., projects + tags derives project_tags)"},"source_field_name":{"type":"string","format":"column-ref","description":"FK field name on junction for source table. Auto-derived if omitted (e.g., projects derives project_id)"},"target_field_name":{"type":"string","format":"column-ref","description":"FK field name on junction for target table. Auto-derived if omitted (e.g., tags derives tag_id)"},"use_composite_key":{"type":"boolean","description":"When true, creates a composite PK from the two FK fields. When false, no PK is created by the trigger (use nodes with DataId for UUID PK). Mutually exclusive with nodes containing DataId.","default":false},"nodes":{"type":"array","items":{"type":"object"},"description":"Array of node objects for field creation on junction table. Each object has a $type key (e.g. DataId, DataEntityMembership) and optional data keys. Forwarded to secure_table_provision as-is. Empty array means no additional fields."},"grants":{"type":"array","items":{"type":"object","properties":{"roles":{"type":"array","items":{"type":"string"}},"privileges":{"type":"array","items":{"type":"array","items":{"type":"string"}}}},"required":["roles","privileges"]},"description":"Unified grant objects for the junction table. Each entry is { roles: string[], privileges: string[][] }. Forwarded to secure_table_provision as-is. Default: []"},"policies":{"type":"array","items":{"type":"object","properties":{"$type":{"type":"string"},"data":{"type":"object"},"privileges":{"type":"array","items":{"type":"string"}},"policy_role":{"type":"string"},"permissive":{"type":"boolean"},"policy_name":{"type":"string"}},"required":["$type"]},"description":"RLS policy objects for the junction table. Each entry has $type (Authz* generator), optional data, privileges, policy_role, permissive, policy_name. Forwarded to secure_table_provision as-is. Default: []"}},"required":["source_table_id","target_table_id"]}' AS jsonb), CAST('{"relation","junction","many_to_many","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('RelationManyToMany', 'relation_many_to_many', 'relation', 'Many to Many', 'Creates a junction table between source and target tables with auto-derived naming and FK fields. The trigger creates a bare table (no implicit DataId), adds FK fields to both tables, optionally creates a composite PK (use_composite_key), then forwards all security config to secure_table_provision as-is. The trigger never injects values the caller did not provide. Junction table FKs always CASCADE on delete.', CAST('{"type":"object","properties":{"source_table_id":{"type":"string","format":"uuid","description":"First table in the M:N relationship"},"target_table_id":{"type":"string","format":"uuid","description":"Second table in the M:N relationship"},"junction_table_id":{"type":"string","format":"uuid","description":"Existing junction table to use. If uuid_nil(), a new bare table is created"},"junction_table_name":{"type":"string","description":"Junction table name. Auto-derived from both table names if omitted (e.g., projects + tags derives project_tags)"},"source_field_name":{"type":"string","format":"column-ref","description":"FK field name on junction for source table. Auto-derived if omitted (e.g., projects derives project_id)"},"target_field_name":{"type":"string","format":"column-ref","description":"FK field name on junction for target table. Auto-derived if omitted (e.g., tags derives tag_id)"},"use_composite_key":{"type":"boolean","description":"When true, creates a composite PK from the two FK fields. When false, no PK is created by the trigger (use nodes with DataId for UUID PK). Mutually exclusive with nodes containing DataId.","default":false},"nodes":{"type":"array","items":{"type":"object"},"description":"Array of node objects for field creation on junction table. Each object has a $type key (e.g. DataId, DataEntityMembership) and optional data keys. Forwarded to secure_table_provision as-is. Empty array means no additional fields."},"grants":{"type":"array","items":{"type":"object","properties":{"roles":{"type":"array","items":{"type":"string"}},"privileges":{"type":"array","items":{"type":"array","items":{"type":"string"}}}},"required":["roles","privileges"]},"description":"Unified grant objects for the junction table. Each entry is { roles: string[], privileges: string[][] }. Forwarded to secure_table_provision as-is. Default: []"},"policies":{"type":"array","items":{"type":"object","properties":{"$type":{"type":"string"},"data":{"type":"object"},"privileges":{"type":"array","items":{"type":"string"}},"policy_role":{"type":"string"},"permissive":{"type":"boolean"},"policy_name":{"type":"string"}},"required":["$type"]},"description":"RLS policy objects for the junction table. Each entry has $type (Authz* generator), optional data, privileges, policy_role, permissive, policy_name. Forwarded to secure_table_provision as-is. Default: []"}},"required":["source_table_id","target_table_id"]}' AS jsonb), CAST('{"relation","junction","many_to_many","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1918,13 +1518,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('RelationSpatial', 'relation_spatial', 'relation', 'Spatial Relation', 'Declares a spatial predicate between two existing geometry/geography columns. Inserts a metaschema_public.spatial_relation row; the sync_spatial_relation_tags trigger then projects a @spatialRelation smart tag onto the owner column so graphile-postgis'' PostgisSpatialRelationsPlugin can expose it as a cross-table filter in GraphQL. Metadata-only: both source_field and target_field must already exist on their tables. Idempotent on (source_table_id, name). One direction per tag — author two RelationSpatial entries if symmetry is desired.', CAST('{"type":"object","properties":{"source_table_id":{"type":"string","format":"uuid","description":"Table that owns the relation (the @spatialRelation tag is emitted on the owner column of this table)"},"source_field_id":{"type":"string","format":"uuid","description":"Geometry/geography column on source_table that carries the @spatialRelation smart tag"},"target_table_id":{"type":"string","format":"uuid","description":"Table being referenced by the spatial predicate"},"target_field_id":{"type":"string","format":"uuid","description":"Geometry/geography column on target_table that the predicate is evaluated against"},"name":{"type":"string","description":"Relation name (stable, snake_case). Becomes the generated filter field name in GraphQL (e.g. nearby_clinic). Unique per (source_table_id, name) — idempotency key."},"operator":{"type":"string","enum":["st_contains","st_within","st_intersects","st_covers","st_coveredby","st_overlaps","st_touches","st_dwithin"],"description":"PostGIS spatial predicate. One of the 8 whitelisted operators. st_dwithin requires param_name."},"param_name":{"type":"string","description":"Parameter name for parametric operators (currently only st_dwithin, which needs a distance argument). Must be NULL for all other operators. Enforced by table CHECK."}},"required":["source_table_id","source_field_id","target_table_id","target_field_id","name","operator"]}' AS jsonb), CAST('{"relation","spatial","postgis","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('RelationSpatial', 'relation_spatial', 'relation', 'Spatial Relation', 'Declares a spatial predicate between two existing geometry/geography columns. Inserts a metaschema_public.spatial_relation row; the sync_spatial_relation_tags trigger then projects a @spatialRelation smart tag onto the owner column so graphile-postgis'' PostgisSpatialRelationsPlugin can expose it as a cross-table filter in GraphQL. Metadata-only: both source_field and target_field must already exist on their tables. Idempotent on (source_table_id, name). One direction per tag — author two RelationSpatial entries if symmetry is desired.', CAST('{"type":"object","properties":{"source_table_id":{"type":"string","format":"uuid","description":"Table that owns the relation (the @spatialRelation tag is emitted on the owner column of this table)"},"source_field_id":{"type":"string","format":"uuid","description":"Geometry/geography column on source_table that carries the @spatialRelation smart tag"},"target_table_id":{"type":"string","format":"uuid","description":"Table being referenced by the spatial predicate"},"target_field_id":{"type":"string","format":"uuid","description":"Geometry/geography column on target_table that the predicate is evaluated against"},"name":{"type":"string","description":"Relation name (stable, snake_case). Becomes the generated filter field name in GraphQL (e.g. nearby_clinic). Unique per (source_table_id, name) — idempotency key."},"operator":{"type":"string","enum":["st_contains","st_within","st_intersects","st_covers","st_coveredby","st_overlaps","st_touches","st_dwithin"],"description":"PostGIS spatial predicate. One of the 8 whitelisted operators. st_dwithin requires param_name."},"param_name":{"type":"string","description":"Parameter name for parametric operators (currently only st_dwithin, which needs a distance argument). Must be NULL for all other operators. Enforced by table CHECK."}},"required":["source_table_id","source_field_id","target_table_id","target_field_id","name","operator"]}' AS jsonb), CAST('{"relation","spatial","postgis","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1935,13 +1529,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('SearchBm25', 'search_bm25', 'search', 'BM25 Search', 'Creates a BM25 index on an existing text column using pg_textsearch. Enables statistical relevance ranking with configurable k1 and b parameters. The BM25 index is auto-detected by graphile-search.', CAST('{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of existing text column to index with BM25"},"text_config":{"type":"string","description":"PostgreSQL text search configuration for BM25","default":"english"},"k1":{"type":"number","description":"BM25 k1 parameter: term frequency saturation (typical: 1.2-2.0)","default":null},"b":{"type":"number","description":"BM25 b parameter: document length normalization (0=none, 1=full, typical: 0.75)","default":null},"search_score_weight":{"type":"number","description":"Weight for this algorithm in composite searchScore","default":1}},"required":["field_name"]}' AS jsonb), CAST('{"search","bm25","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('SearchBm25', 'search_bm25', 'search', 'BM25 Search', 'Creates a BM25 index on an existing text column using pg_textsearch. Enables statistical relevance ranking with configurable k1 and b parameters. The BM25 index is auto-detected by graphile-search.', CAST('{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of existing text column to index with BM25"},"text_config":{"type":"string","description":"PostgreSQL text search configuration for BM25","default":"english"},"k1":{"type":"number","description":"BM25 k1 parameter: term frequency saturation (typical: 1.2-2.0)","default":null},"b":{"type":"number","description":"BM25 b parameter: document length normalization (0=none, 1=full, typical: 0.75)","default":null},"search_score_weight":{"type":"number","description":"Weight for this algorithm in composite searchScore","default":1}},"required":["field_name"]}' AS jsonb), CAST('{"search","bm25","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1952,13 +1540,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('SearchFullText', 'search_full_text', 'search', 'Full-Text Search', 'Adds a tsvector column with GIN index and automatic trigger population from source fields. Enables PostgreSQL full-text search with configurable weights and language support. Leverages the existing metaschema full_text_search infrastructure.', CAST('{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of the tsvector column","default":"search"},"source_fields":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","format":"column-ref","description":"Name of the source column"},"weight":{"type":"string","enum":["A","B","C","D"],"description":"tsvector weight class (A=highest, D=lowest)","default":"D"},"lang":{"type":"string","description":"PostgreSQL text search configuration","default":"english"}},"required":["field"]},"description":"Source columns that feed the tsvector. Each has a field name, weight (A-D), and language config."},"lang_column":{"type":"string","format":"column-ref","description":"Column name whose value determines the text search configuration per row. When set, the tsvector trigger uses NEW.::regconfig instead of a static language, enabling dynamic per-row language stemming. The per-field lang values in source_fields are used as fallback defaults for the langs array but the trigger reads from this column at runtime."},"search_score_weight":{"type":"number","description":"Weight for this algorithm in composite searchScore","default":1}},"required":["source_fields"]}' AS jsonb), CAST('{"search","fts","tsvector","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('SearchFullText', 'search_full_text', 'search', 'Full-Text Search', 'Adds a tsvector column with GIN index and automatic trigger population from source fields. Enables PostgreSQL full-text search with configurable weights and language support. Leverages the existing metaschema full_text_search infrastructure.', CAST('{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of the tsvector column","default":"search"},"source_fields":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","format":"column-ref","description":"Name of the source column"},"weight":{"type":"string","enum":["A","B","C","D"],"description":"tsvector weight class (A=highest, D=lowest)","default":"D"},"lang":{"type":"string","description":"PostgreSQL text search configuration","default":"english"}},"required":["field"]},"description":"Source columns that feed the tsvector. Each has a field name, weight (A-D), and language config."},"lang_column":{"type":"string","format":"column-ref","description":"Column name whose value determines the text search configuration per row. When set, the tsvector trigger uses NEW.::regconfig instead of a static language, enabling dynamic per-row language stemming. The per-field lang values in source_fields are used as fallback defaults for the langs array but the trigger reads from this column at runtime."},"search_score_weight":{"type":"number","description":"Weight for this algorithm in composite searchScore","default":1}},"required":["source_fields"]}' AS jsonb), CAST('{"search","fts","tsvector","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1969,13 +1551,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('SearchSpatial', 'search_spatial', 'search', 'Spatial Search', 'Adds a PostGIS geometry or geography column with a spatial index (GiST or SP-GiST). Supports configurable geometry types (Point, Polygon, etc.), SRID, and dimensionality. The graphile-postgis plugin auto-detects geometry/geography columns by codec type for spatial filtering (ST_Contains, ST_DWithin, bbox operators).', CAST('{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of the geometry/geography column","default":"geom"},"geometry_type":{"type":"string","enum":["Point","LineString","Polygon","MultiPoint","MultiLineString","MultiPolygon","GeometryCollection","Geometry"],"description":"PostGIS geometry type constraint","default":"Point"},"srid":{"type":"integer","description":"Spatial Reference System Identifier (e.g. 4326 for WGS84)","default":4326},"dimension":{"type":"integer","enum":[2,3,4],"description":"Coordinate dimension (2=XY, 3=XYZ, 4=XYZM)","default":2},"use_geography":{"type":"boolean","description":"Use geography type instead of geometry (for geodetic calculations on the sphere)","default":false},"index_method":{"type":"string","enum":["gist","spgist"],"description":"Spatial index method","default":"gist"}}}' AS jsonb), CAST('{"spatial","postgis","geometry","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('SearchSpatial', 'search_spatial', 'search', 'Spatial Search', 'Adds a PostGIS geometry or geography column with a spatial index (GiST or SP-GiST). Supports configurable geometry types (Point, Polygon, etc.), SRID, and dimensionality. The graphile-postgis plugin auto-detects geometry/geography columns by codec type for spatial filtering (ST_Contains, ST_DWithin, bbox operators).', CAST('{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of the geometry/geography column","default":"geom"},"geometry_type":{"type":"string","enum":["Point","LineString","Polygon","MultiPoint","MultiLineString","MultiPolygon","GeometryCollection","Geometry"],"description":"PostGIS geometry type constraint","default":"Point"},"srid":{"type":"integer","description":"Spatial Reference System Identifier (e.g. 4326 for WGS84)","default":4326},"dimension":{"type":"integer","enum":[2,3,4],"description":"Coordinate dimension (2=XY, 3=XYZ, 4=XYZM)","default":2},"use_geography":{"type":"boolean","description":"Use geography type instead of geometry (for geodetic calculations on the sphere)","default":false},"index_method":{"type":"string","enum":["gist","spgist"],"description":"Spatial index method","default":"gist"}}}' AS jsonb), CAST('{"spatial","postgis","geometry","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -1986,13 +1562,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('SearchSpatialAggregate', 'search_spatial_aggregate', 'search', 'Spatial Aggregate Search', 'Creates a derived/materialized geometry field on the parent table that automatically aggregates geometries from a source (child) table via triggers. When child rows are inserted/updated/deleted, the parent aggregate field is recalculated using the specified PostGIS aggregation function (ST_Union, ST_Collect, ST_ConvexHull, ST_ConcaveHull). Useful for materializing spatial boundaries from collections of points or polygons.', CAST('{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of the aggregate geometry column on the parent table","default":"geom_aggregate"},"source_table_id":{"type":"string","format":"uuid","description":"UUID of the source (child) table containing individual geometries"},"source_geom_field":{"type":"string","format":"column-ref","description":"Name of the geometry column on the source table","default":"geom"},"source_fk_field":{"type":"string","format":"column-ref","description":"Name of the foreign key column on the source table pointing to the parent"},"aggregate_function":{"type":"string","enum":["union","collect","convex_hull","concave_hull"],"description":"PostGIS aggregation function: union (ST_Union, merges overlapping), collect (ST_Collect, groups without merging), convex_hull (smallest convex polygon), concave_hull (tighter boundary)","default":"union"},"geometry_type":{"type":"string","enum":["Point","LineString","Polygon","MultiPoint","MultiLineString","MultiPolygon","GeometryCollection","Geometry"],"description":"Output geometry type constraint for the aggregate field","default":"MultiPolygon"},"srid":{"type":"integer","description":"Spatial Reference System Identifier (e.g. 4326 for WGS84)","default":4326},"dimension":{"type":"integer","enum":[2,3,4],"description":"Coordinate dimension (2=XY, 3=XYZ, 4=XYZM)","default":2},"use_geography":{"type":"boolean","description":"Use geography type instead of geometry","default":false},"index_method":{"type":"string","enum":["gist","spgist"],"description":"Spatial index method for the aggregate field","default":"gist"}},"required":["source_table_id","source_fk_field"]}' AS jsonb), CAST('{"spatial","postgis","geometry","aggregate","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('SearchSpatialAggregate', 'search_spatial_aggregate', 'search', 'Spatial Aggregate Search', 'Creates a derived/materialized geometry field on the parent table that automatically aggregates geometries from a source (child) table via triggers. When child rows are inserted/updated/deleted, the parent aggregate field is recalculated using the specified PostGIS aggregation function (ST_Union, ST_Collect, ST_ConvexHull, ST_ConcaveHull). Useful for materializing spatial boundaries from collections of points or polygons.', CAST('{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of the aggregate geometry column on the parent table","default":"geom_aggregate"},"source_table_id":{"type":"string","format":"uuid","description":"UUID of the source (child) table containing individual geometries"},"source_geom_field":{"type":"string","format":"column-ref","description":"Name of the geometry column on the source table","default":"geom"},"source_fk_field":{"type":"string","format":"column-ref","description":"Name of the foreign key column on the source table pointing to the parent"},"aggregate_function":{"type":"string","enum":["union","collect","convex_hull","concave_hull"],"description":"PostGIS aggregation function: union (ST_Union, merges overlapping), collect (ST_Collect, groups without merging), convex_hull (smallest convex polygon), concave_hull (tighter boundary)","default":"union"},"geometry_type":{"type":"string","enum":["Point","LineString","Polygon","MultiPoint","MultiLineString","MultiPolygon","GeometryCollection","Geometry"],"description":"Output geometry type constraint for the aggregate field","default":"MultiPolygon"},"srid":{"type":"integer","description":"Spatial Reference System Identifier (e.g. 4326 for WGS84)","default":4326},"dimension":{"type":"integer","enum":[2,3,4],"description":"Coordinate dimension (2=XY, 3=XYZ, 4=XYZM)","default":2},"use_geography":{"type":"boolean","description":"Use geography type instead of geometry","default":false},"index_method":{"type":"string","enum":["gist","spgist"],"description":"Spatial index method for the aggregate field","default":"gist"}},"required":["source_table_id","source_fk_field"]}' AS jsonb), CAST('{"spatial","postgis","geometry","aggregate","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -2003,13 +1573,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('SearchTrgm', 'search_trgm', 'search', 'Trigram Search', 'Creates GIN trigram indexes (gin_trgm_ops) on specified text/citext fields for fuzzy LIKE/ILIKE/similarity search. Adds @trgmSearch smart tag for PostGraphile integration. Fields must already exist on the table.', CAST('{"type":"object","properties":{"fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Field names to create trigram indexes on (fields must already exist on the table)"}},"required":["fields"]}' AS jsonb), CAST('{"search","trigram","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('SearchTrgm', 'search_trgm', 'search', 'Trigram Search', 'Creates GIN trigram indexes (gin_trgm_ops) on specified text/citext fields for fuzzy LIKE/ILIKE/similarity search. Adds @trgmSearch smart tag for PostGraphile integration. Fields must already exist on the table.', CAST('{"type":"object","properties":{"fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Field names to create trigram indexes on (fields must already exist on the table)"}},"required":["fields"]}' AS jsonb), CAST('{"search","trigram","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -2020,13 +1584,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('SearchUnified', 'search_unified', 'search', 'Unified Search', 'Composite node type that orchestrates multiple search modalities (full-text search, BM25, embeddings, trigram) on a single table. Configures per-table search score weights, normalization strategy, and recency boost via the @searchConfig smart tag.', CAST('{"type":"object","properties":{"full_text_search":{"type":"object","description":"SearchFullText parameters. Omit to skip FTS setup.","properties":{"field_name":{"type":"string","format":"column-ref","default":"search"},"source_fields":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","format":"column-ref"},"weight":{"type":"string","enum":["A","B","C","D"]},"lang":{"type":"string"}},"required":["field"]}},"search_score_weight":{"type":"number","default":1}}},"bm25":{"type":"object","description":"SearchBm25 parameters. Omit to skip BM25 setup.","properties":{"field_name":{"type":"string","format":"column-ref"},"text_config":{"type":"string","default":"english"},"k1":{"type":"number"},"b":{"type":"number"},"search_score_weight":{"type":"number","default":1}}},"embedding":{"type":"object","description":"SearchVector parameters. Omit to skip embedding setup.","properties":{"field_name":{"type":"string","format":"column-ref","default":"embedding"},"dimensions":{"type":"integer","default":768},"index_method":{"type":"string","enum":["hnsw","ivfflat"]},"metric":{"type":"string","enum":["cosine","l2","ip"]},"source_fields":{"type":"array","items":{"type":"string","format":"column-ref"}},"embedding_model":{"type":"string","description":"Embedding model identifier. When null, the worker falls back to runtime config."},"embedding_provider":{"type":"string","description":"Embedding provider name. When null, the worker falls back to runtime config."},"search_score_weight":{"type":"number","default":1},"chunks":{"type":"object","description":"Chunking configuration for long-text embedding. Creates an embedding_chunks record that drives automatic text splitting and per-chunk embedding. Omit to skip chunking.","properties":{"content_field_name":{"type":"string","format":"column-ref","description":"Name of the text content column in the chunks table","default":"content"},"chunk_size":{"type":"integer","description":"Maximum number of characters per chunk","default":1000},"chunk_overlap":{"type":"integer","description":"Number of overlapping characters between consecutive chunks","default":200},"chunk_strategy":{"type":"string","enum":["fixed","sentence","paragraph","semantic"],"description":"Strategy for splitting text into chunks","default":"fixed"},"metadata_fields":{"type":"object","description":"Metadata fields from parent to copy into chunks"},"enqueue_chunking_job":{"type":"boolean","description":"Whether to auto-enqueue a chunking job on insert/update","default":true},"chunking_task_name":{"type":"string","description":"Task identifier for the chunking job queue","default":"generate_chunks"}}}}},"embedding_text_field":{"type":"string","format":"column-ref","description":"Name of the composite text field created for embedding input","default":"embedding_text"},"composite_format":{"type":"string","enum":["labeled","plain"],"description":"Output format for the composite text field","default":"labeled"},"trgm_fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Field names to tag with @trgmSearch for fuzzy/typo-tolerant matching"},"search_config":{"type":"object","description":"Unified search score configuration written to @searchConfig smart tag","properties":{"weights":{"type":"object","description":"Per-algorithm weights: {tsv: 1.5, bm25: 1.0, pgvector: 0.8, trgm: 0.3}"},"normalization":{"type":"string","enum":["linear","sigmoid"],"description":"Score normalization strategy","default":"linear"},"boost_recent":{"type":"boolean","description":"Enable recency boost for search results","default":false},"boost_recency_field":{"type":"string","format":"column-ref","description":"Timestamp field for recency boost (e.g. created_at, updated_at)"},"boost_recency_decay":{"type":"number","description":"Decay rate for recency boost (0-1, lower = faster decay)","default":0.5}}}}}' AS jsonb), CAST('{"search","composite","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('SearchUnified', 'search_unified', 'search', 'Unified Search', 'Composite node type that orchestrates multiple search modalities (full-text search, BM25, embeddings, trigram) on a single table. Configures per-table search score weights, normalization strategy, and recency boost via the @searchConfig smart tag.', CAST('{"type":"object","properties":{"full_text_search":{"type":"object","description":"SearchFullText parameters. Omit to skip FTS setup.","properties":{"field_name":{"type":"string","format":"column-ref","default":"search"},"source_fields":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","format":"column-ref"},"weight":{"type":"string","enum":["A","B","C","D"]},"lang":{"type":"string"}},"required":["field"]}},"search_score_weight":{"type":"number","default":1}}},"bm25":{"type":"object","description":"SearchBm25 parameters. Omit to skip BM25 setup.","properties":{"field_name":{"type":"string","format":"column-ref"},"text_config":{"type":"string","default":"english"},"k1":{"type":"number"},"b":{"type":"number"},"search_score_weight":{"type":"number","default":1}}},"embedding":{"type":"object","description":"SearchVector parameters. Omit to skip embedding setup.","properties":{"field_name":{"type":"string","format":"column-ref","default":"embedding"},"dimensions":{"type":"integer","default":768},"index_method":{"type":"string","enum":["hnsw","ivfflat"]},"metric":{"type":"string","enum":["cosine","l2","ip"]},"source_fields":{"type":"array","items":{"type":"string","format":"column-ref"}},"embedding_model":{"type":"string","description":"Embedding model identifier. When null, the worker falls back to runtime config."},"embedding_provider":{"type":"string","description":"Embedding provider name. When null, the worker falls back to runtime config."},"search_score_weight":{"type":"number","default":1},"chunks":{"type":"object","description":"Chunking configuration for long-text embedding. Creates an embedding_chunks record that drives automatic text splitting and per-chunk embedding. Omit to skip chunking.","properties":{"content_field_name":{"type":"string","format":"column-ref","description":"Name of the text content column in the chunks table","default":"content"},"chunk_size":{"type":"integer","description":"Maximum number of characters per chunk","default":1000},"chunk_overlap":{"type":"integer","description":"Number of overlapping characters between consecutive chunks","default":200},"chunk_strategy":{"type":"string","enum":["fixed","sentence","paragraph","semantic"],"description":"Strategy for splitting text into chunks","default":"fixed"},"metadata_fields":{"type":"object","description":"Metadata fields from parent to copy into chunks"},"enqueue_chunking_job":{"type":"boolean","description":"Whether to auto-enqueue a chunking job on insert/update","default":true},"chunking_task_name":{"type":"string","description":"Task identifier for the chunking job queue","default":"generate_chunks"}}}}},"embedding_text_field":{"type":"string","format":"column-ref","description":"Name of the composite text field created for embedding input","default":"embedding_text"},"composite_format":{"type":"string","enum":["labeled","plain"],"description":"Output format for the composite text field","default":"labeled"},"trgm_fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Field names to tag with @trgmSearch for fuzzy/typo-tolerant matching"},"search_config":{"type":"object","description":"Unified search score configuration written to @searchConfig smart tag","properties":{"weights":{"type":"object","description":"Per-algorithm weights: {tsv: 1.5, bm25: 1.0, pgvector: 0.8, trgm: 0.3}"},"normalization":{"type":"string","enum":["linear","sigmoid"],"description":"Score normalization strategy","default":"linear"},"boost_recent":{"type":"boolean","description":"Enable recency boost for search results","default":false},"boost_recency_field":{"type":"string","format":"column-ref","description":"Timestamp field for recency boost (e.g. created_at, updated_at)"},"boost_recency_decay":{"type":"number","description":"Decay rate for recency boost (0-1, lower = faster decay)","default":0.5}}}}}' AS jsonb), CAST('{"search","composite","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -2037,13 +1595,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('SearchVector', 'search_vector', 'search', 'Vector Search', 'Adds a vector embedding column with HNSW or IVFFlat index for similarity search. Supports configurable dimensions, distance metrics (cosine, l2, ip), per-field {field_name}_updated_at timestamp tracking (read-only in GraphQL), and automatic job enqueue triggers for embedding generation.', CAST(E'{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of the vector column","default":"embedding"},"dimensions":{"type":"integer","description":"Vector dimensions (e.g. 384, 768, 1536, 3072)","default":768},"index_method":{"type":"string","enum":["hnsw","ivfflat"],"description":"Index type for similarity search","default":"hnsw"},"metric":{"type":"string","enum":["cosine","l2","ip"],"description":"Distance metric (cosine, l2, ip)","default":"cosine"},"index_options":{"type":"object","description":"Index-specific options. HNSW: {m, ef_construction}. IVFFlat: {lists}.","default":{}},"source_fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Column names that feed the embedding. Used by stale trigger to detect content changes."},"embedding_model":{"type":"string","description":"Embedding model identifier (e.g. \\"nomic-embed-text\\", \\"text-embedding-3-small\\"). Included in the job payload so the worker knows which model to use. When null, the worker falls back to runtime config (llm_module / env vars)."},"embedding_provider":{"type":"string","description":"Embedding provider name (e.g. \\"ollama\\", \\"openai\\"). When null, the worker falls back to runtime config."},"enqueue_job":{"type":"boolean","description":"Auto-create trigger that enqueues embedding generation jobs","default":true},"job_task_name":{"type":"string","format":"function-ref","description":"Task identifier for the job queue. Must match a registered function definition when function_module is installed.","default":"generate_embedding"},"chunks":{"type":"object","description":"Chunking configuration for long-text embedding. Creates an embedding_chunks record that drives automatic text splitting and per-chunk embedding. Omit to skip chunking.","properties":{"content_field_name":{"type":"string","format":"column-ref","description":"Name of the text content column in the chunks table","default":"content"},"chunk_size":{"type":"integer","description":"Maximum number of characters per chunk","default":1000},"chunk_overlap":{"type":"integer","description":"Number of overlapping characters between consecutive chunks","default":200},"chunk_strategy":{"type":"string","enum":["fixed","sentence","paragraph","semantic"],"description":"Strategy for splitting text into chunks","default":"fixed"},"metadata_fields":{"type":"object","description":"Metadata fields from parent to copy into chunks"},"enqueue_chunking_job":{"type":"boolean","description":"Whether to auto-enqueue a chunking job on insert/update","default":true},"chunking_task_name":{"type":"string","format":"function-ref","description":"Task identifier for the chunking job queue. Must match a registered function definition when function_module is installed.","default":"generate_chunks"}}}}}' AS jsonb), CAST('{"embedding","vector","ai","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('SearchVector', 'search_vector', 'search', 'Vector Search', 'Adds a vector embedding column with HNSW or IVFFlat index for similarity search. Supports configurable dimensions, distance metrics (cosine, l2, ip), per-field {field_name}_updated_at timestamp tracking (read-only in GraphQL), and automatic job enqueue triggers for embedding generation.', CAST(E'{"type":"object","properties":{"field_name":{"type":"string","format":"column-ref","description":"Name of the vector column","default":"embedding"},"dimensions":{"type":"integer","description":"Vector dimensions (e.g. 384, 768, 1536, 3072)","default":768},"index_method":{"type":"string","enum":["hnsw","ivfflat"],"description":"Index type for similarity search","default":"hnsw"},"metric":{"type":"string","enum":["cosine","l2","ip"],"description":"Distance metric (cosine, l2, ip)","default":"cosine"},"index_options":{"type":"object","description":"Index-specific options. HNSW: {m, ef_construction}. IVFFlat: {lists}.","default":{}},"source_fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Column names that feed the embedding. Used by stale trigger to detect content changes."},"embedding_model":{"type":"string","description":"Embedding model identifier (e.g. \\"nomic-embed-text\\", \\"text-embedding-3-small\\"). Included in the job payload so the worker knows which model to use. When null, the worker falls back to runtime config (llm_module / env vars)."},"embedding_provider":{"type":"string","description":"Embedding provider name (e.g. \\"ollama\\", \\"openai\\"). When null, the worker falls back to runtime config."},"enqueue_job":{"type":"boolean","description":"Auto-create trigger that enqueues embedding generation jobs","default":true},"job_task_name":{"type":"string","format":"function-ref","description":"Task identifier for the job queue. Must match a registered function definition when function_module is installed.","default":"generate_embedding"},"chunks":{"type":"object","description":"Chunking configuration for long-text embedding. Creates an embedding_chunks record that drives automatic text splitting and per-chunk embedding. Omit to skip chunking.","properties":{"content_field_name":{"type":"string","format":"column-ref","description":"Name of the text content column in the chunks table","default":"content"},"chunk_size":{"type":"integer","description":"Maximum number of characters per chunk","default":1000},"chunk_overlap":{"type":"integer","description":"Number of overlapping characters between consecutive chunks","default":200},"chunk_strategy":{"type":"string","enum":["fixed","sentence","paragraph","semantic"],"description":"Strategy for splitting text into chunks","default":"fixed"},"metadata_fields":{"type":"object","description":"Metadata fields from parent to copy into chunks"},"enqueue_chunking_job":{"type":"boolean","description":"Whether to auto-enqueue a chunking job on insert/update","default":true},"chunking_task_name":{"type":"string","format":"function-ref","description":"Task identifier for the chunking job queue. Must match a registered function definition when function_module is installed.","default":"generate_chunks"}}}}}' AS jsonb), CAST('{"embedding","vector","ai","schema"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -2054,13 +1606,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('ViewAggregated', 'view_aggregated', 'view', 'Aggregated View', 'View with GROUP BY and aggregate functions. Useful for summary/reporting views.', CAST('{"type":"object","properties":{"source_table_id":{"type":"string","format":"uuid","description":"UUID of the source table"},"group_by_fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Field names to group by"},"aggregates":{"type":"array","items":{"type":"object","properties":{"function":{"type":"string","enum":["COUNT","SUM","AVG","MIN","MAX"]},"field":{"type":"string","format":"column-ref","description":"Field to aggregate (or * for COUNT)"},"alias":{"type":"string","format":"column-ref","description":"Output column name"}},"required":["function","alias"]},"description":"Array of aggregate specifications"}},"required":["source_table_id","group_by_fields","aggregates"]}' AS jsonb), CAST('{"view","aggregate","reporting"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('ViewAggregated', 'view_aggregated', 'view', 'Aggregated View', 'View with GROUP BY and aggregate functions. Useful for summary/reporting views.', CAST('{"type":"object","properties":{"source_table_id":{"type":"string","format":"uuid","description":"UUID of the source table"},"group_by_fields":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Field names to group by"},"aggregates":{"type":"array","items":{"type":"object","properties":{"function":{"type":"string","enum":["COUNT","SUM","AVG","MIN","MAX"]},"field":{"type":"string","format":"column-ref","description":"Field to aggregate (or * for COUNT)"},"alias":{"type":"string","format":"column-ref","description":"Output column name"}},"required":["function","alias"]},"description":"Array of aggregate specifications"}},"required":["source_table_id","group_by_fields","aggregates"]}' AS jsonb), CAST('{"view","aggregate","reporting"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -2071,13 +1617,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('ViewComposite', 'view_composite', 'view', 'Composite View', 'Advanced view using composite AST for the query. Use when other node types are insufficient (CTEs, UNIONs, complex subqueries, etc.).', CAST('{"type":"object","properties":{"query_ast":{"type":"object","description":"Composite SELECT query AST (JSONB)"}},"required":["query_ast"]}' AS jsonb), CAST('{"view","advanced","composite","ast"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('ViewComposite', 'view_composite', 'view', 'Composite View', 'Advanced view using composite AST for the query. Use when other node types are insufficient (CTEs, UNIONs, complex subqueries, etc.).', CAST('{"type":"object","properties":{"query_ast":{"type":"object","description":"Composite SELECT query AST (JSONB)"}},"required":["query_ast"]}' AS jsonb), CAST('{"view","advanced","composite","ast"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -2088,13 +1628,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('ViewFilteredTable', 'view_filtered_table', 'view', 'Filtered Table', 'Table projection with an Authz* filter baked into the view definition. The view only returns records matching the filter.', CAST('{"type":"object","properties":{"source_table_id":{"type":"string","format":"uuid","description":"UUID of the source table"},"filter_type":{"type":"string","description":"Authz* node type name (e.g., AuthzDirectOwner, AuthzPublishable)"},"filter_data":{"type":"object","description":"Parameters for the Authz* filter type"},"field_ids":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Optional array of field UUIDs to include (alternative to field_names)"},"field_names":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Optional array of field names to include (alternative to field_ids)"}},"required":["source_table_id","filter_type"]}' AS jsonb), CAST('{"view","filter","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('ViewFilteredTable', 'view_filtered_table', 'view', 'Filtered Table', 'Table projection with an Authz* filter baked into the view definition. The view only returns records matching the filter.', CAST('{"type":"object","properties":{"source_table_id":{"type":"string","format":"uuid","description":"UUID of the source table"},"filter_type":{"type":"string","description":"Authz* node type name (e.g., AuthzDirectOwner, AuthzPublishable)"},"filter_data":{"type":"object","description":"Parameters for the Authz* filter type"},"field_ids":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Optional array of field UUIDs to include (alternative to field_names)"},"field_names":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Optional array of field names to include (alternative to field_ids)"}},"required":["source_table_id","filter_type"]}' AS jsonb), CAST('{"view","filter","authz"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -2105,13 +1639,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('ViewJoinedTables', 'view_joined_tables', 'view', 'Joined Tables', 'View that joins multiple tables together. Supports INNER, LEFT, RIGHT, and FULL joins.', CAST('{"type":"object","properties":{"primary_table_id":{"type":"string","format":"uuid","description":"UUID of the primary (left-most) table"},"primary_columns":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Optional array of column names to include from the primary table"},"joins":{"type":"array","items":{"type":"object","properties":{"table_id":{"type":"string","format":"uuid","description":"UUID of the joined table"},"join_type":{"type":"string","enum":["INNER","LEFT","RIGHT","FULL"]},"primary_field":{"type":"string","format":"column-ref","description":"Field on primary table"},"join_field":{"type":"string","format":"column-ref","description":"Field on joined table"},"columns":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Optional column names to include from this joined table"}},"required":["table_id","primary_field","join_field"]},"description":"Array of join specifications"},"field_ids":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Optional array of field UUIDs to include (alternative to per-table columns)"}},"required":["primary_table_id","joins"]}' AS jsonb), CAST('{"view","join"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('ViewJoinedTables', 'view_joined_tables', 'view', 'Joined Tables', 'View that joins multiple tables together. Supports INNER, LEFT, RIGHT, and FULL joins.', CAST('{"type":"object","properties":{"primary_table_id":{"type":"string","format":"uuid","description":"UUID of the primary (left-most) table"},"primary_columns":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Optional array of column names to include from the primary table"},"joins":{"type":"array","items":{"type":"object","properties":{"table_id":{"type":"string","format":"uuid","description":"UUID of the joined table"},"join_type":{"type":"string","enum":["INNER","LEFT","RIGHT","FULL"]},"primary_field":{"type":"string","format":"column-ref","description":"Field on primary table"},"join_field":{"type":"string","format":"column-ref","description":"Field on joined table"},"columns":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Optional column names to include from this joined table"}},"required":["table_id","primary_field","join_field"]},"description":"Array of join specifications"},"field_ids":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Optional array of field UUIDs to include (alternative to per-table columns)"}},"required":["primary_table_id","joins"]}' AS jsonb), CAST('{"view","join"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; INSERT INTO metaschema_public.node_type_registry ( name, @@ -2122,13 +1650,7 @@ INSERT INTO metaschema_public.node_type_registry ( parameter_schema, tags ) VALUES - ('ViewTableProjection', 'view_table_projection', 'view', 'Table Projection', 'Simple column selection from a single source table. Projects all or specific fields.', CAST('{"type":"object","properties":{"source_table_id":{"type":"string","format":"uuid","description":"UUID of the source table to project from"},"field_ids":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Optional array of field UUIDs to include (all fields if omitted)"},"field_names":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Optional array of field names to include (alternative to field_ids)"}},"required":["source_table_id"]}' AS jsonb), CAST('{"view","projection"}' AS text[])) ON CONFLICT (name) DO UPDATE SET - slug = excluded.slug, - category = excluded.category, - display_name = excluded.display_name, - description = excluded.description, - parameter_schema = excluded.parameter_schema, - tags = excluded.tags; + ('ViewTableProjection', 'view_table_projection', 'view', 'Table Projection', 'Simple column selection from a single source table. Projects all or specific fields.', CAST('{"type":"object","properties":{"source_table_id":{"type":"string","format":"uuid","description":"UUID of the source table to project from"},"field_ids":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Optional array of field UUIDs to include (all fields if omitted)"},"field_names":{"type":"array","items":{"type":"string","format":"column-ref"},"description":"Optional array of field names to include (alternative to field_ids)"}},"required":["source_table_id"]}' AS jsonb), CAST('{"view","projection"}' AS text[])) ON CONFLICT (name) DO UPDATE SET slug = excluded.slug, category = excluded.category, display_name = excluded.display_name, description = excluded.description, parameter_schema = excluded.parameter_schema, tags = excluded.tags; CREATE TABLE metaschema_public.function ( id uuid PRIMARY KEY DEFAULT uuidv7(), @@ -2156,7 +1678,7 @@ CREATE TABLE metaschema_public.partition ( table_id uuid NOT NULL, strategy text NOT NULL CHECK (strategy IN ('range', 'list', 'hash')), partition_key_id uuid NOT NULL, - "interval" text, + interval text, retention text, retention_keep_table boolean NOT NULL DEFAULT true, premake int NOT NULL DEFAULT 2, @@ -2170,7 +1692,7 @@ CREATE TABLE metaschema_public.partition ( ON DELETE CASCADE, CONSTRAINT partition_table_fkey FOREIGN KEY(table_id) - REFERENCES metaschema_public.table (id) + REFERENCES metaschema_public."table" (id) ON DELETE CASCADE, CONSTRAINT partition_key_field_fkey FOREIGN KEY(partition_key_id) diff --git a/packages/metaschema-schema/verify/schemas/metaschema_public/tables/view/table.sql b/packages/metaschema-schema/verify/schemas/metaschema_public/tables/view/table.sql index e7bb61dc3..b35e8ab28 100644 --- a/packages/metaschema-schema/verify/schemas/metaschema_public/tables/view/table.sql +++ b/packages/metaschema-schema/verify/schemas/metaschema_public/tables/view/table.sql @@ -3,7 +3,7 @@ BEGIN; SELECT id, database_id, schema_id, name, view_type, data, filter_type, filter_data, - security_invoker, is_read_only, smart_tags, category, scope, tags + security_invoker, is_read_only, smart_tags, category, module, scope, tags FROM metaschema_public.view WHERE FALSE; diff --git a/packages/object-store/README.md b/packages/object-store/README.md index 4216f73d7..1d882f624 100644 --- a/packages/object-store/README.md +++ b/packages/object-store/README.md @@ -183,28 +183,8 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. -* [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. -* [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. -* [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. - -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): PostgreSQL Package Manager for modular Postgres development. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): Isolated testing environments with per-test transaction rollbacks. ## Disclaimer diff --git a/packages/object-store/package.json b/packages/object-store/package.json index 9568d6194..6a03839a5 100644 --- a/packages/object-store/package.json +++ b/packages/object-store/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/object-store", - "version": "0.28.3", + "version": "0.15.5", "description": "Immutable versioned object storage with content-addressable IDs", "author": "Dan Lynch ", "contributors": [ @@ -26,7 +26,7 @@ "@pgpm/verify": "workspace:*" }, "devDependencies": { - "pgpm": "^4.24.3" + "pgpm": "^4.28.7" }, "repository": { "type": "git", diff --git a/packages/object-tree/Makefile b/packages/object-tree/Makefile index 6c1e3f114..b3a61ccda 100644 --- a/packages/object-tree/Makefile +++ b/packages/object-tree/Makefile @@ -1,5 +1,5 @@ EXTENSION = object-tree -DATA = sql/object-tree--0.26.2.sql +DATA = sql/object-tree--0.15.5.sql PG_CONFIG = pg_config PGXS := $(shell $(PG_CONFIG) --pgxs) diff --git a/packages/object-tree/README.md b/packages/object-tree/README.md index 26d11416b..ad0608d65 100644 --- a/packages/object-tree/README.md +++ b/packages/object-tree/README.md @@ -180,28 +180,8 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. -* [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. -* [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. -* [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. - -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): PostgreSQL Package Manager for modular Postgres development. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): Isolated testing environments with per-test transaction rollbacks. ## Disclaimer diff --git a/packages/object-tree/object-tree.control b/packages/object-tree/object-tree.control index 116883bd4..400b10528 100644 --- a/packages/object-tree/object-tree.control +++ b/packages/object-tree/object-tree.control @@ -1,6 +1,6 @@ # object-tree extension comment = 'object-tree extension - git-like version control for database objects' -default_version = '0.26.2' +default_version = '0.15.5' module_pathname = '$libdir/object-tree' requires = 'plpgsql,pgcrypto,object-store,pgpm-verify' relocatable = false diff --git a/packages/object-tree/package.json b/packages/object-tree/package.json index 73609f1f2..7a7fc42c6 100644 --- a/packages/object-tree/package.json +++ b/packages/object-tree/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/object-tree", - "version": "0.28.3", + "version": "0.15.5", "description": "Git-like version control for database objects with commits and refs", "author": "Dan Lynch ", "contributors": [ @@ -28,7 +28,7 @@ "@pgpm/verify": "workspace:*" }, "devDependencies": { - "pgpm": "^4.24.3" + "pgpm": "^4.28.7" }, "repository": { "type": "git", diff --git a/packages/object-tree/revert/schemas/object_tree_public/procedures/set_and_commit.sql b/packages/object-tree/revert/schemas/object_tree_public/procedures/set_and_commit.sql index c3f1724b2..f8447ee3a 100644 --- a/packages/object-tree/revert/schemas/object_tree_public/procedures/set_and_commit.sql +++ b/packages/object-tree/revert/schemas/object_tree_public/procedures/set_and_commit.sql @@ -2,7 +2,6 @@ BEGIN; -DROP FUNCTION object_tree_public.set_props_and_commit; DROP FUNCTION object_tree_public.set_and_commit; COMMIT; diff --git a/packages/object-tree/sql/object-tree--0.26.2.sql b/packages/object-tree/sql/object-tree--0.15.5.sql similarity index 83% rename from packages/object-tree/sql/object-tree--0.26.2.sql rename to packages/object-tree/sql/object-tree--0.15.5.sql index 3270a1258..f6c857417 100644 --- a/packages/object-tree/sql/object-tree--0.26.2.sql +++ b/packages/object-tree/sql/object-tree--0.15.5.sql @@ -69,7 +69,11 @@ COMMENT ON COLUMN object_tree_public.ref.id IS 'The primary unique identifier fo COMMENT ON COLUMN object_tree_public.ref.name IS 'The name of the ref or branch'; -CREATE FUNCTION object_tree_public.rev_parse(s_id uuid, store_id uuid, refname text DEFAULT 'main') RETURNS uuid AS $EOFCODE$ +CREATE FUNCTION object_tree_public.rev_parse( + s_id uuid, + store_id uuid, + refname text DEFAULT 'main' +) RETURNS uuid AS $EOFCODE$ DECLARE tree_id uuid; commit_id uuid; @@ -102,19 +106,27 @@ BEGIN END; $EOFCODE$ LANGUAGE plpgsql STABLE; -CREATE FUNCTION object_tree_public.get_object_at_path(s_id uuid, store_id uuid, path text[], refname text DEFAULT 'main') RETURNS object_store_public.object AS $EOFCODE$ +CREATE FUNCTION object_tree_public.get_object_at_path( + s_id uuid, + store_id uuid, + path text[], + refname text DEFAULT 'main' +) RETURNS object_store_public.object AS $EOFCODE$ DECLARE tree_id uuid; obj object_store_public.object; BEGIN - tree_id = object_tree_public.rev_parse(s_id, store_id, refname); - SELECT * FROM object_store_public.get_node_at_path(s_id, tree_id, path) + tree_id = object_tree_public.rev_parse(s_id, store_id, refname); + SELECT * FROM object_store_public.get_node_at_path(s_id, tree_id, path) INTO obj; RETURN obj; END; $EOFCODE$ LANGUAGE plpgsql STABLE; -CREATE FUNCTION object_tree_public.init_empty_repo(s_id uuid, store_id uuid) RETURNS void AS $EOFCODE$ +CREATE FUNCTION object_tree_public.init_empty_repo( + s_id uuid, + store_id uuid +) RETURNS void AS $EOFCODE$ DECLARE vtree_id uuid; vcommit_id uuid; @@ -126,16 +138,16 @@ BEGIN RAISE EXCEPTION 'REPO_EXISTS'; END IF; - INSERT INTO object_store_public.object (scope_id) + INSERT INTO object_store_public.object (scope_id) VALUES (s_id) - RETURNING id INTO vtree_id; + RETURNING id INTO vtree_id; - INSERT INTO object_tree_public.ref (scope_id, store_id, name) - VALUES (s_id, init_empty_repo.store_id, 'main') + INSERT INTO object_tree_public.ref (scope_id, store_id, name) + VALUES (s_id, init_empty_repo.store_id, 'main') RETURNING id INTO vref_id; - INSERT INTO object_tree_public.commit (scope_id, store_id, message, tree_id) - VALUES (s_id, init_empty_repo.store_id, 'first commit', vtree_id) + INSERT INTO object_tree_public.commit (scope_id, store_id, message, tree_id) + VALUES (s_id, init_empty_repo.store_id, 'first commit', vtree_id) RETURNING id into vcommit_id; UPDATE object_tree_public.ref SET commit_id = vcommit_id @@ -144,7 +156,15 @@ BEGIN END; $EOFCODE$ LANGUAGE plpgsql VOLATILE; -CREATE FUNCTION object_tree_public.set_and_commit(s_id uuid, store_id uuid, refname text, path text[], data jsonb, kids uuid[], ktree text[]) RETURNS uuid AS $EOFCODE$ +CREATE FUNCTION object_tree_public.set_and_commit( + s_id uuid, + store_id uuid, + refname text, + path text[], + data jsonb, + kids uuid[], + ktree text[] +) RETURNS uuid AS $EOFCODE$ DECLARE hash uuid; @@ -204,7 +224,13 @@ RETURN hash; END; $EOFCODE$ LANGUAGE plpgsql VOLATILE; -CREATE FUNCTION object_tree_public.set_props_and_commit(s_id uuid, store_id uuid, refname text, path text[], data jsonb) RETURNS uuid AS $EOFCODE$ +CREATE FUNCTION object_tree_public.set_props_and_commit( + s_id uuid, + store_id uuid, + refname text, + path text[], + data jsonb +) RETURNS uuid AS $EOFCODE$ DECLARE hash uuid; @@ -278,4 +304,4 @@ COMMENT ON COLUMN object_tree_public.store.scope_id IS 'The scope this store bel COMMENT ON COLUMN object_tree_public.store.hash IS 'The current head tree_id for this store.'; -CREATE UNIQUE INDEX idx_unique_store_name ON object_tree_public.store (scope_id, (decode(md5(lower(name)), 'hex'))); \ No newline at end of file +CREATE UNIQUE INDEX idx_unique_store_name ON object_tree_public.store (scope_id, (decode(md5(lower(name)), 'hex'))); diff --git a/packages/partman/Makefile b/packages/partman/Makefile index 9ce7a6d86..b65cde024 100644 --- a/packages/partman/Makefile +++ b/packages/partman/Makefile @@ -1,5 +1,5 @@ EXTENSION = pgpm-partman -DATA = sql/pgpm-partman--0.26.1.sql +DATA = sql/pgpm-partman--0.0.1.sql PG_CONFIG = pg_config PGXS := $(shell $(PG_CONFIG) --pgxs) diff --git a/packages/partman/README.md b/packages/partman/README.md index cfcd2a666..c22ea2f14 100644 --- a/packages/partman/README.md +++ b/packages/partman/README.md @@ -125,28 +125,9 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. -* [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. -* [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. -* [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. - -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): PostgreSQL Package Manager for modular Postgres development +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): Isolated testing environments with per-test transaction rollbacks +* [pg_partman](https://github.com/pgpartman/pg_partman): PostgreSQL Partition Manager ## Disclaimer diff --git a/packages/partman/package.json b/packages/partman/package.json index 3134ee226..def0c6b3f 100644 --- a/packages/partman/package.json +++ b/packages/partman/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/partman", - "version": "0.28.3", + "version": "0.0.1", "description": "pg_partman wrapper - installs pg_partman into partman schema", "author": "Dan Lynch ", "contributors": [ @@ -22,7 +22,7 @@ "test:watch": "jest --watch" }, "devDependencies": { - "pgpm": "^4.24.3" + "pgpm": "^4.28.7" }, "repository": { "type": "git", @@ -32,4 +32,4 @@ "bugs": { "url": "https://github.com/constructive-io/pgpm-modules/issues" } -} +} \ No newline at end of file diff --git a/packages/partman/pgpm-partman.control b/packages/partman/pgpm-partman.control index 64a9c1513..39a461564 100644 --- a/packages/partman/pgpm-partman.control +++ b/packages/partman/pgpm-partman.control @@ -1,6 +1,6 @@ # pgpm-partman extension comment = 'pg_partman wrapper - installs pg_partman into partman schema' -default_version = '0.26.1' +default_version = '0.0.1' module_pathname = '$libdir/pgpm-partman' requires = 'plpgsql,metaschema-schema' relocatable = false diff --git a/packages/partman/sql/pgpm-partman--0.26.1.sql b/packages/partman/sql/pgpm-partman--0.0.1.sql similarity index 79% rename from packages/partman/sql/pgpm-partman--0.26.1.sql rename to packages/partman/sql/pgpm-partman--0.0.1.sql index 90bda43ab..ba827506d 100644 --- a/packages/partman/sql/pgpm-partman--0.26.1.sql +++ b/packages/partman/sql/pgpm-partman--0.0.1.sql @@ -18,7 +18,15 @@ ALTER DEFAULT PRIVILEGES IN SCHEMA partman ALTER DEFAULT PRIVILEGES IN SCHEMA partman GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO authenticated; -CREATE FUNCTION partman.create_parent_with_retention(v_parent_table text, v_control text, v_type text DEFAULT 'range', partition_interval text DEFAULT '1 day', v_premake int DEFAULT 2, v_retention text DEFAULT NULL, v_retention_keep_table boolean DEFAULT true) RETURNS void AS $EOFCODE$ +CREATE FUNCTION partman.create_parent_with_retention( + v_parent_table text, + v_control text, + v_type text DEFAULT 'range', + partition_interval text DEFAULT '1 day', + v_premake int DEFAULT 2, + v_retention text DEFAULT NULL, + v_retention_keep_table boolean DEFAULT true +) RETURNS void AS $EOFCODE$ BEGIN PERFORM partman.create_parent( p_parent_table := v_parent_table, @@ -37,7 +45,15 @@ BEGIN END; $EOFCODE$ LANGUAGE plpgsql VOLATILE SECURITY DEFINER; -CREATE FUNCTION partman.create_parent_by_id(v_table_id uuid, v_control text, v_type text DEFAULT 'range', partition_interval text DEFAULT '1 day', v_premake int DEFAULT 2, v_retention text DEFAULT NULL, v_retention_keep_table boolean DEFAULT true) RETURNS void AS $EOFCODE$ +CREATE FUNCTION partman.create_parent_by_id( + v_table_id uuid, + v_control text, + v_type text DEFAULT 'range', + partition_interval text DEFAULT '1 day', + v_premake int DEFAULT 2, + v_retention text DEFAULT NULL, + v_retention_keep_table boolean DEFAULT true +) RETURNS void AS $EOFCODE$ DECLARE v_parent_table text; BEGIN @@ -63,7 +79,9 @@ BEGIN END; $EOFCODE$ LANGUAGE plpgsql VOLATILE; -CREATE FUNCTION partman.remove_parent_by_id(v_table_id uuid) RETURNS void AS $EOFCODE$ +CREATE FUNCTION partman.remove_parent_by_id( + v_table_id uuid +) RETURNS void AS $EOFCODE$ DECLARE v_parent_table text; BEGIN @@ -82,7 +100,9 @@ BEGIN END; $EOFCODE$ LANGUAGE plpgsql VOLATILE; -CREATE FUNCTION partman.verify_parent_by_id(v_table_id uuid) RETURNS boolean AS $EOFCODE$ +CREATE FUNCTION partman.verify_parent_by_id( + v_table_id uuid +) RETURNS boolean AS $EOFCODE$ DECLARE v_parent_table text; v_found boolean; @@ -106,7 +126,10 @@ BEGIN END; $EOFCODE$ LANGUAGE plpgsql STABLE; -CREATE FUNCTION partman.run_maintenance_by_id(v_table_id uuid DEFAULT NULL, v_analyze boolean DEFAULT true) RETURNS void AS $EOFCODE$ +CREATE FUNCTION partman.run_maintenance_by_id( + v_table_id uuid DEFAULT NULL, + v_analyze boolean DEFAULT true +) RETURNS void AS $EOFCODE$ DECLARE v_parent_table text; BEGIN diff --git a/packages/services/Makefile b/packages/services/Makefile index d5cd6eeb9..a5dc7aa78 100644 --- a/packages/services/Makefile +++ b/packages/services/Makefile @@ -1,5 +1,5 @@ EXTENSION = services -DATA = sql/services--0.26.3.sql +DATA = sql/services--0.1.0.sql PG_CONFIG = pg_config PGXS := $(shell $(PG_CONFIG) --pgxs) diff --git a/packages/services/__tests__/__snapshots__/services.test.ts.snap b/packages/services/__tests__/__snapshots__/services.test.ts.snap deleted file mode 100644 index 892a7a901..000000000 --- a/packages/services/__tests__/__snapshots__/services.test.ts.snap +++ /dev/null @@ -1,147 +0,0 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`services functionality should handle complete meta workflow with services 1`] = ` -{ - "created_at": "[DATE]", - "hash": null, - "id": "[ID]", - "label": null, - "name": "my-meta-db", - "owner_id": "[ID]", - "schema_hash": null, - "updated_at": "[DATE]", -} -`; - -exports[`services functionality should handle complete meta workflow with services 2`] = ` -{ - "anon_role": "anonymous", - "database_id": "[ID]", - "dbname": "test-database", - "id": "[ID]", - "is_public": true, - "name": "public", - "role_name": "authenticated", -} -`; - -exports[`services functionality should handle complete meta workflow with services 3`] = ` -{ - "anon_role": "administrator", - "database_id": "[ID]", - "dbname": "test-database", - "id": "[ID]", - "is_public": true, - "name": "admin", - "role_name": "administrator", -} -`; - -exports[`services functionality should handle complete meta workflow with services 4`] = ` -{ - "apple_touch_icon": null, - "database_id": "[ID]", - "dbname": "test-database", - "description": "Website Description", - "favicon": null, - "id": "[ID]", - "logo": null, - "og_image": null, - "title": "Website Title", -} -`; - -exports[`services functionality should handle complete meta workflow with services 5`] = ` -{ - "api_id": "[ID]", - "database_id": "[ID]", - "domain": "pgpm.io", - "id": "[ID]", - "site_id": null, - "subdomain": "api", -} -`; - -exports[`services functionality should handle complete meta workflow with services 6`] = ` -{ - "api_id": null, - "database_id": "[ID]", - "domain": "pgpm.io", - "id": "[ID]", - "site_id": "[ID]", - "subdomain": "app", -} -`; - -exports[`services functionality should handle complete meta workflow with services 7`] = ` -{ - "api_id": "[ID]", - "database_id": "[ID]", - "domain": "pgpm.io", - "id": "[ID]", - "site_id": null, - "subdomain": "admin", -} -`; - -exports[`services functionality should handle complete meta workflow with services 8`] = ` -{ - "data": { - "supportEmail": "support@interweb.co", - }, - "database_id": "[ID]", - "id": "[ID]", - "name": "legal-emails", - "site_id": "[ID]", -} -`; - -exports[`services functionality should handle complete meta workflow with services 9`] = ` -{ - "api_id": "[ID]", - "data": { - "authenticate": "authenticate", - "authenticate_schema": "services_private", - }, - "database_id": "[ID]", - "id": "[ID]", - "name": "rls_module", -} -`; - -exports[`services functionality should handle complete meta workflow with services 10`] = ` -{ - "data": { - "auth_schema": "services_public", - "forgot_password": "forgot_password", - "reset_password": "reset_password", - "send_verification_email": "send_verification_email", - "set_password": "set_password", - "sign_in": "login", - "sign_up": "register", - "verify_email": "verify_email", - }, - "database_id": "[ID]", - "id": "[ID]", - "name": "user_auth_module", - "site_id": "[ID]", -} -`; - -exports[`services functionality should handle complete meta workflow with services 11`] = ` -{ - "api_id": "[ID]", - "database_id": "[ID]", - "id": "[ID]", - "schema_id": "[ID]", -} -`; - -exports[`services functionality should handle complete meta workflow with services 12`] = ` -{ - "api_id": "[ID]", - "database_id": "[ID]", - "id": "[ID]", - "schema_id": "[ID]", -} -`; diff --git a/packages/services/__tests__/services.test.ts b/packages/services/__tests__/services.test.ts deleted file mode 100644 index f722a512a..000000000 --- a/packages/services/__tests__/services.test.ts +++ /dev/null @@ -1,210 +0,0 @@ -import { getConnections, PgTestClient, snapshot } from 'pgsql-test'; - -let pg: PgTestClient; -let teardown: () => Promise; - -describe('services functionality', () => { - beforeAll(async () => { - ({ pg, teardown } = await getConnections()); - }); - - afterAll(async () => { - await teardown(); - }); - - beforeEach(async () => { - await pg.beforeEach(); - await pg.any(`GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO public`); - }); - - afterEach(async () => { - await pg.afterEach(); - }); - - it('should handle complete meta workflow with services', async () => { - const objs: Record = { - tables: {}, - domains: {}, - apis: {}, - sites: {} - }; - - const owner_id = '07281002-1699-4762-57e3-ab1b92243120'; - - const snap = (obj: any) => { - expect(snapshot(obj)).toMatchSnapshot(); - }; - - const snapWithNormalizedDbname = (obj: any) => { - const normalized = { - ...obj, - dbname: 'test-database' - }; - expect(snapshot(normalized)).toMatchSnapshot(); - }; - - // Step 1: Create database - const [database] = await pg.any( - `INSERT INTO metaschema_public.database (owner_id, name) - VALUES ($1, $2) - RETURNING *`, - [owner_id, 'my-meta-db'] - ); - objs.db = database; - const database_id = database.id; - expect(snapshot(database)).toMatchSnapshot(); - - // Step 2: Create APIs first (since domains reference them) - const [publicApi] = await pg.any( - `INSERT INTO services_public.apis (database_id, name, role_name, anon_role) - VALUES ($1, $2, $3, $4) - RETURNING *`, - [database_id, 'public', 'authenticated', 'anonymous'] - ); - objs.apis.public = publicApi; - snapWithNormalizedDbname(publicApi); - - const [adminApi] = await pg.any( - `INSERT INTO services_public.apis (database_id, name, role_name, anon_role) - VALUES ($1, $2, $3, $4) - RETURNING *`, - [database_id, 'admin', 'administrator', 'administrator'] - ); - objs.apis.admin = adminApi; - snapWithNormalizedDbname(adminApi); - - // Step 3: Create sites - const [appSite] = await pg.any( - `INSERT INTO services_public.sites (database_id, title, description) - VALUES ($1, $2, $3) - RETURNING *`, - [database_id, 'Website Title', 'Website Description'] - ); - objs.sites.app = appSite; - snapWithNormalizedDbname(appSite); - - // Step 4: Register domains (linking to APIs and sites) - const [apiDomain] = await pg.any( - `INSERT INTO services_public.domains (database_id, api_id, domain, subdomain) - VALUES ($1, $2, $3, $4) - RETURNING *`, - [database_id, objs.apis.public.id, 'pgpm.io', 'api'] - ); - objs.domains.api = apiDomain; - expect(snapshot(apiDomain)).toMatchSnapshot(); - - const [appDomain] = await pg.any( - `INSERT INTO services_public.domains (database_id, site_id, domain, subdomain) - VALUES ($1, $2, $3, $4) - RETURNING *`, - [database_id, objs.sites.app.id, 'pgpm.io', 'app'] - ); - objs.domains.app = appDomain; - expect(snapshot(appDomain)).toMatchSnapshot(); - - const [adminDomain] = await pg.any( - `INSERT INTO services_public.domains (database_id, api_id, domain, subdomain) - VALUES ($1, $2, $3, $4) - RETURNING *`, - [database_id, objs.apis.admin.id, 'pgpm.io', 'admin'] - ); - objs.domains.admin = adminDomain; - expect(snapshot(adminDomain)).toMatchSnapshot(); - - const [baseDomain] = await pg.any( - `INSERT INTO services_public.domains (database_id, domain) - VALUES ($1, $2) - RETURNING *`, - [database_id, 'pgpm.io'] - ); - objs.domains.base = baseDomain; - - // Step 5: Register modules - const [siteModule1] = await pg.any( - `INSERT INTO services_public.site_modules (database_id, site_id, name, data) - VALUES ($1, $2, $3, $4::jsonb) - RETURNING *`, - [database_id, objs.sites.app.id, 'legal-emails', JSON.stringify({ - supportEmail: 'support@interweb.co' - })] - ); - expect(snapshot(siteModule1)).toMatchSnapshot(); - - const [apiModule] = await pg.any( - `INSERT INTO services_public.api_modules (database_id, api_id, name, data) - VALUES ($1, $2, $3, $4::jsonb) - RETURNING *`, - [database_id, objs.apis.public.id, 'rls_module', JSON.stringify({ - authenticate_schema: 'services_private', - authenticate: 'authenticate' - })] - ); - expect(snapshot(apiModule)).toMatchSnapshot(); - - const [siteModule2] = await pg.any( - `INSERT INTO services_public.site_modules (database_id, site_id, name, data) - VALUES ($1, $2, $3, $4::jsonb) - RETURNING *`, - [database_id, objs.sites.app.id, 'user_auth_module', JSON.stringify({ - auth_schema: 'services_public', - sign_in: 'login', - sign_up: 'register', - set_password: 'set_password', - reset_password: 'reset_password', - forgot_password: 'forgot_password', - send_verification_email: 'send_verification_email', - verify_email: 'verify_email' - })] - ); - expect(snapshot(siteModule2)).toMatchSnapshot(); - - // Step 6: Schema associations - const [schema] = await pg.any( - `INSERT INTO metaschema_public.schema (database_id, schema_name, name) - VALUES ($1, $2, $3) - RETURNING *`, - [database_id, 'brand-public', 'public'] - ); - - const [publicAssoc] = await pg.any( - `INSERT INTO services_public.api_schemas (database_id, schema_id, api_id) - VALUES ($1, $2, $3) - RETURNING *`, - [database_id, schema.id, objs.apis.public.id] - ); - - const [adminAssoc] = await pg.any( - `INSERT INTO services_public.api_schemas (database_id, schema_id, api_id) - VALUES ($1, $2, $3) - RETURNING *`, - [database_id, schema.id, objs.apis.admin.id] - ); - - snap(publicAssoc); - snap(adminAssoc); - }); - - it('should register domain independently', async () => { - const owner_id = '07281002-1699-4762-57e3-ab1b92243120'; - - // Create database first - const [database] = await pg.any( - `INSERT INTO metaschema_public.database (owner_id, name) - VALUES ($1, $2) - RETURNING *`, - [owner_id, 'test-db-for-domain'] - ); - - // Then create domain - const [domain] = await pg.any( - `INSERT INTO services_public.domains (database_id, domain, subdomain) - VALUES ($1, $2, $3) - RETURNING *`, - [database.id, 'example.com', 'api'] - ); - - expect(domain.database_id).toBe(database.id); - expect(domain.domain).toBe('example.com'); - expect(domain.subdomain).toBe('api'); - }); -}); diff --git a/packages/services/deploy/schemas/services_private/triggers/enforce_api_exposure.sql b/packages/services/deploy/schemas/services_private/triggers/enforce_api_exposure.sql new file mode 100644 index 000000000..5f29b344a --- /dev/null +++ b/packages/services/deploy/schemas/services_private/triggers/enforce_api_exposure.sql @@ -0,0 +1,55 @@ +-- Deploy schemas/services_private/triggers/enforce_api_exposure to pg + +-- requires: schemas/services_private/schema +-- requires: schemas/services_public/tables/api_schemas/table +-- requires: metaschema-schema:schemas/metaschema_public/tables/schema/table + +BEGIN; + +-- Block schemas marked 'never_expose' or 'internal_only' from being linked to a public API. +-- Private APIs (is_public=false) are internal server-side and may contain sensitive schemas. +CREATE FUNCTION services_private.tg_enforce_api_exposure() +RETURNS TRIGGER AS $$ +DECLARE + schema_name text; + exposure metaschema_public.api_exposure_level; + api_is_public boolean; +BEGIN + -- Check if the target API is public + SELECT a.is_public INTO api_is_public + FROM services_public.apis AS a + WHERE a.id = NEW.api_id; + + -- Private APIs can contain any schema — skip enforcement + IF api_is_public IS NOT TRUE THEN + RETURN NEW; + END IF; + + SELECT s.name, s.api_exposure + INTO schema_name, exposure + FROM metaschema_public.schema AS s + WHERE s.id = NEW.schema_id; + + IF exposure = 'never_expose' THEN + RAISE EXCEPTION 'Cannot add schema "%" to a public API: schema is marked never_expose and can never be exposed through a public API.', + schema_name + USING ERRCODE = 'check_violation'; + END IF; + + IF exposure = 'internal_only' THEN + RAISE EXCEPTION 'Cannot add schema "%" to a public API: schema is marked internal_only. A platform administrator must change the api_exposure level before this schema can be exposed.', + schema_name + USING ERRCODE = 'check_violation'; + END IF; + + RETURN NEW; +END; +$$ +LANGUAGE plpgsql STABLE; + +CREATE TRIGGER _000002_enforce_api_exposure +BEFORE INSERT ON services_public.api_schemas +FOR EACH ROW +EXECUTE FUNCTION services_private.tg_enforce_api_exposure(); + +COMMIT; diff --git a/packages/services/jest.config.js b/packages/services/jest.config.js deleted file mode 100644 index e20e7efb5..000000000 --- a/packages/services/jest.config.js +++ /dev/null @@ -1,15 +0,0 @@ -/** @type {import('ts-jest').JestConfigWithTsJest} */ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - - // Match both __tests__ and colocated test files - testMatch: ['**/?(*.)+(test|spec).{ts,tsx,js,jsx}'], - - // Ignore build artifacts and type declarations - testPathIgnorePatterns: ['/dist/', '\\.d\\.ts$'], - modulePathIgnorePatterns: ['/dist/'], - watchPathIgnorePatterns: ['/dist/'], - - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], -}; diff --git a/packages/services/package.json b/packages/services/package.json index 658cf87df..533fa1607 100644 --- a/packages/services/package.json +++ b/packages/services/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/services", - "version": "0.28.3", + "version": "0.1.0", "description": "Services schemas for module registration and service configuration", "author": "Dan Lynch ", "contributors": [ @@ -25,7 +25,7 @@ "@pgpm/verify": "workspace:*" }, "devDependencies": { - "pgpm": "^4.23.2" + "pgpm": "^4.28.7" }, "repository": { "type": "git", diff --git a/packages/services/pgpm.plan b/packages/services/pgpm.plan index 8b75429b9..2e3d147a2 100644 --- a/packages/services/pgpm.plan +++ b/packages/services/pgpm.plan @@ -21,3 +21,4 @@ schemas/services_public/tables/rls_settings/table [schemas/services_public/schem schemas/services_public/tables/cors_settings/table [schemas/services_public/schema schemas/services_public/tables/apis/table metaschema-schema:schemas/metaschema_public/tables/database/table] 2026-05-09T00:00:00Z devin # add typed CORS origin settings schemas/services_public/tables/pubkey_settings/table [schemas/services_public/schema metaschema-schema:schemas/metaschema_public/tables/database/table metaschema-schema:schemas/metaschema_public/tables/schema/table metaschema-schema:schemas/metaschema_public/tables/function/table] 2026-05-09T00:00:00Z devin # add typed pubkey crypto auth settings with UUID FKs schemas/services_public/tables/webauthn_settings/table [schemas/services_public/schema metaschema-schema:schemas/metaschema_public/tables/database/table metaschema-schema:schemas/metaschema_public/tables/schema/table metaschema-schema:schemas/metaschema_public/tables/table/table metaschema-schema:schemas/metaschema_public/tables/field/table] 2026-05-09T00:00:00Z devin # add typed WebAuthn/passkey settings with UUID FKs +schemas/services_private/triggers/enforce_api_exposure [schemas/services_private/schema schemas/services_public/tables/api_schemas/table metaschema-schema:schemas/metaschema_public/tables/schema/table] 2026-06-18T00:00:00Z devin # block never_expose and internal_only schemas from being added to APIs diff --git a/packages/services/revert/schemas/services_private/schema.sql b/packages/services/revert/schemas/services_private/schema.sql deleted file mode 100644 index 710f99c94..000000000 --- a/packages/services/revert/schemas/services_private/schema.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/services_private/schema from pg - -BEGIN; - -DROP SCHEMA services_private; - -COMMIT; diff --git a/packages/services/revert/schemas/services_private/triggers/enforce_api_exposure.sql b/packages/services/revert/schemas/services_private/triggers/enforce_api_exposure.sql new file mode 100644 index 000000000..31014ceb1 --- /dev/null +++ b/packages/services/revert/schemas/services_private/triggers/enforce_api_exposure.sql @@ -0,0 +1,8 @@ +-- Revert schemas/services_private/triggers/enforce_api_exposure + +BEGIN; + +DROP TRIGGER IF EXISTS _000002_enforce_api_exposure ON services_public.api_schemas; +DROP FUNCTION IF EXISTS services_private.tg_enforce_api_exposure(); + +COMMIT; diff --git a/packages/services/revert/schemas/services_public/schema.sql b/packages/services/revert/schemas/services_public/schema.sql deleted file mode 100644 index 3fd696ac3..000000000 --- a/packages/services/revert/schemas/services_public/schema.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/services_public/schema from pg - -BEGIN; - -DROP SCHEMA services_public; - -COMMIT; diff --git a/packages/services/revert/schemas/services_public/tables/api_modules/table.sql b/packages/services/revert/schemas/services_public/tables/api_modules/table.sql deleted file mode 100644 index 65543be14..000000000 --- a/packages/services/revert/schemas/services_public/tables/api_modules/table.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/services_public/tables/api_modules/table from pg - -BEGIN; - -DROP TABLE services_public.api_modules; - -COMMIT; diff --git a/packages/services/revert/schemas/services_public/tables/api_schemas/table.sql b/packages/services/revert/schemas/services_public/tables/api_schemas/table.sql deleted file mode 100644 index 8a310db7c..000000000 --- a/packages/services/revert/schemas/services_public/tables/api_schemas/table.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/services_public/tables/api_schemas/table from pg - -BEGIN; - -DROP TABLE services_public.api_schemas; - -COMMIT; diff --git a/packages/services/revert/schemas/services_public/tables/apis/table.sql b/packages/services/revert/schemas/services_public/tables/apis/table.sql deleted file mode 100644 index 2feff0a6e..000000000 --- a/packages/services/revert/schemas/services_public/tables/apis/table.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/services_public/tables/apis/table from pg - -BEGIN; - -DROP TABLE services_public.apis; - -COMMIT; diff --git a/packages/services/revert/schemas/services_public/tables/apps/table.sql b/packages/services/revert/schemas/services_public/tables/apps/table.sql deleted file mode 100644 index 816bf6d3b..000000000 --- a/packages/services/revert/schemas/services_public/tables/apps/table.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/services_public/tables/apps/table from pg - -BEGIN; - -DROP TABLE services_public.apps; - -COMMIT; diff --git a/packages/services/revert/schemas/services_public/tables/domains/table.sql b/packages/services/revert/schemas/services_public/tables/domains/table.sql deleted file mode 100644 index 44b47a3e7..000000000 --- a/packages/services/revert/schemas/services_public/tables/domains/table.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/services_public/tables/domains/table from pg - -BEGIN; - -DROP TABLE services_public.domains; - -COMMIT; diff --git a/packages/services/revert/schemas/services_public/tables/site_metadata/table.sql b/packages/services/revert/schemas/services_public/tables/site_metadata/table.sql deleted file mode 100644 index cef080d5a..000000000 --- a/packages/services/revert/schemas/services_public/tables/site_metadata/table.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/services_public/tables/site_metadata/table from pg - -BEGIN; - -DROP TABLE services_public.site_metadata; - -COMMIT; diff --git a/packages/services/revert/schemas/services_public/tables/site_modules/table.sql b/packages/services/revert/schemas/services_public/tables/site_modules/table.sql deleted file mode 100644 index a63f20426..000000000 --- a/packages/services/revert/schemas/services_public/tables/site_modules/table.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/services_public/tables/site_modules/table from pg - -BEGIN; - -DROP TABLE services_public.site_modules; - -COMMIT; diff --git a/packages/services/revert/schemas/services_public/tables/site_themes/table.sql b/packages/services/revert/schemas/services_public/tables/site_themes/table.sql deleted file mode 100644 index 21f2965cd..000000000 --- a/packages/services/revert/schemas/services_public/tables/site_themes/table.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/services_public/tables/site_themes/table from pg - -BEGIN; - -DROP TABLE services_public.site_themes; - -COMMIT; diff --git a/packages/services/revert/schemas/services_public/tables/sites/table.sql b/packages/services/revert/schemas/services_public/tables/sites/table.sql deleted file mode 100644 index 913178bb1..000000000 --- a/packages/services/revert/schemas/services_public/tables/sites/table.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/services_public/tables/sites/table from pg - -BEGIN; - -DROP TABLE services_public.sites; - -COMMIT; diff --git a/packages/services/services.control b/packages/services/services.control index 8f6e433de..d08f57ab1 100644 --- a/packages/services/services.control +++ b/packages/services/services.control @@ -1,6 +1,6 @@ # services extension comment = 'services extension - schemas for module registration and service configuration' -default_version = '0.26.3' +default_version = '0.1.0' module_pathname = '$libdir/services' requires = 'plpgsql,metaschema-schema,pgpm-verify' relocatable = false diff --git a/packages/services/sql/services--0.26.3.sql b/packages/services/sql/services--0.1.0.sql similarity index 96% rename from packages/services/sql/services--0.26.3.sql rename to packages/services/sql/services--0.1.0.sql index b1d54b023..42c419227 100644 --- a/packages/services/sql/services--0.26.3.sql +++ b/packages/services/sql/services--0.1.0.sql @@ -835,4 +835,47 @@ COMMENT ON COLUMN services_public.webauthn_settings.resident_key IS 'Resident ke COMMENT ON COLUMN services_public.webauthn_settings.challenge_expiry_seconds IS 'Challenge TTL in seconds (default 300 = 5 minutes)'; -CREATE INDEX webauthn_settings_database_id_idx ON services_public.webauthn_settings (database_id); \ No newline at end of file +CREATE INDEX webauthn_settings_database_id_idx ON services_public.webauthn_settings (database_id); + +CREATE FUNCTION services_private.tg_enforce_api_exposure() RETURNS trigger AS $EOFCODE$ +DECLARE + schema_name text; + exposure metaschema_public.api_exposure_level; + api_is_public boolean; +BEGIN + -- Check if the target API is public + SELECT a.is_public INTO api_is_public + FROM services_public.apis AS a + WHERE a.id = NEW.api_id; + + -- Private APIs can contain any schema — skip enforcement + IF api_is_public IS NOT TRUE THEN + RETURN NEW; + END IF; + + SELECT s.name, s.api_exposure + INTO schema_name, exposure + FROM metaschema_public.schema AS s + WHERE s.id = NEW.schema_id; + + IF exposure = 'never_expose' THEN + RAISE EXCEPTION 'Cannot add schema "%" to a public API: schema is marked never_expose and can never be exposed through a public API.', + schema_name + USING ERRCODE = 'check_violation'; + END IF; + + IF exposure = 'internal_only' THEN + RAISE EXCEPTION 'Cannot add schema "%" to a public API: schema is marked internal_only. A platform administrator must change the api_exposure level before this schema can be exposed.', + schema_name + USING ERRCODE = 'check_violation'; + END IF; + + RETURN NEW; +END; +$EOFCODE$ LANGUAGE plpgsql STABLE; + +CREATE TRIGGER _000002_enforce_api_exposure + BEFORE INSERT + ON services_public.api_schemas + FOR EACH ROW + EXECUTE PROCEDURE services_private.tg_enforce_api_exposure(); \ No newline at end of file diff --git a/packages/services/verify/schemas/services_private/triggers/enforce_api_exposure.sql b/packages/services/verify/schemas/services_private/triggers/enforce_api_exposure.sql new file mode 100644 index 000000000..0c1149a67 --- /dev/null +++ b/packages/services/verify/schemas/services_private/triggers/enforce_api_exposure.sql @@ -0,0 +1,10 @@ +-- Verify schemas/services_private/triggers/enforce_api_exposure + +BEGIN; + +SELECT has_function_privilege( + 'services_private.tg_enforce_api_exposure()', + 'execute' +); + +ROLLBACK; diff --git a/packages/stamps/README.md b/packages/stamps/README.md index f4e234906..1b8b626ca 100644 --- a/packages/stamps/README.md +++ b/packages/stamps/README.md @@ -203,29 +203,14 @@ The test suite validates: ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - ## Disclaimer AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. diff --git a/packages/stamps/package.json b/packages/stamps/package.json index 9788146ad..68d71f175 100644 --- a/packages/stamps/package.json +++ b/packages/stamps/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/stamps", - "version": "0.28.3", + "version": "0.15.5", "description": "Timestamp utilities and audit trail functions for PostgreSQL", "author": "Dan Lynch ", "contributors": [ @@ -25,7 +25,7 @@ "@pgpm/verify": "workspace:*" }, "devDependencies": { - "pgpm": "^4.23.2" + "pgpm": "^4.28.7" }, "repository": { "type": "git", @@ -35,4 +35,4 @@ "bugs": { "url": "https://github.com/constructive-io/pgpm-modules/issues" } -} +} \ No newline at end of file diff --git a/packages/stamps/sql/pgpm-stamps--0.15.3.sql b/packages/stamps/sql/pgpm-stamps--0.15.3.sql deleted file mode 100644 index 49fe22992..000000000 --- a/packages/stamps/sql/pgpm-stamps--0.15.3.sql +++ /dev/null @@ -1,33 +0,0 @@ -\echo Use "CREATE EXTENSION pgpm-stamps" to load this file. \quit -CREATE SCHEMA stamps; - -GRANT USAGE ON SCHEMA stamps TO authenticated, anonymous; - -ALTER DEFAULT PRIVILEGES IN SCHEMA stamps - GRANT EXECUTE ON FUNCTIONS TO authenticated; - -CREATE FUNCTION stamps.peoplestamps() RETURNS trigger AS $EOFCODE$ -BEGIN - IF TG_OP = 'INSERT' THEN - NEW.created_by = jwt_public.current_user_id(); - NEW.updated_by = jwt_public.current_user_id(); - ELSIF TG_OP = 'UPDATE' THEN - NEW.created_by = OLD.created_by; - NEW.updated_by = jwt_public.current_user_id(); - END IF; - RETURN NEW; -END; -$EOFCODE$ LANGUAGE plpgsql; - -CREATE FUNCTION stamps.timestamps() RETURNS trigger AS $EOFCODE$ -BEGIN - IF TG_OP = 'INSERT' THEN - NEW.created_at = NOW(); - NEW.updated_at = NOW(); - ELSIF TG_OP = 'UPDATE' THEN - NEW.created_at = OLD.created_at; - NEW.updated_at = NOW(); - END IF; - RETURN NEW; -END; -$EOFCODE$ LANGUAGE plpgsql; \ No newline at end of file diff --git a/packages/totp/README.md b/packages/totp/README.md index b12562002..1e4655a98 100644 --- a/packages/totp/README.md +++ b/packages/totp/README.md @@ -257,29 +257,14 @@ https://gist.github.com/bwbroersma/676d0de32263ed554584ab132434ebd9 ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - ## Disclaimer AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. diff --git a/packages/totp/package.json b/packages/totp/package.json index 59585be96..d898ce0bf 100644 --- a/packages/totp/package.json +++ b/packages/totp/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/totp", - "version": "0.28.3", + "version": "0.15.5", "description": "Time-based One-Time Password (TOTP) authentication", "author": "Dan Lynch ", "contributors": [ @@ -25,7 +25,7 @@ "@pgpm/verify": "workspace:*" }, "devDependencies": { - "pgpm": "^4.23.2" + "pgpm": "^4.28.7" }, "repository": { "type": "git", @@ -35,4 +35,4 @@ "bugs": { "url": "https://github.com/constructive-io/pgpm-modules/issues" } -} +} \ No newline at end of file diff --git a/packages/totp/sql/pgpm-totp--0.15.3.sql b/packages/totp/sql/pgpm-totp--0.15.3.sql deleted file mode 100644 index 3629a8aa7..000000000 --- a/packages/totp/sql/pgpm-totp--0.15.3.sql +++ /dev/null @@ -1,173 +0,0 @@ -\echo Use "CREATE EXTENSION pgpm-totp" to load this file. \quit -CREATE SCHEMA totp; - -CREATE FUNCTION totp.urlencode(in_str text) RETURNS text AS $EOFCODE$ -DECLARE - _i int4; - _temp varchar; - _ascii int4; - _result text := ''; -BEGIN - FOR _i IN 1..length(in_str) - LOOP - _temp := substr(in_str, _i, 1); - IF _temp ~ '[0-9a-zA-Z:/@._?#-]+' THEN - _result := _result || _temp; - ELSE - _ascii := ascii(_temp); - IF _ascii > x'07ff'::int4 THEN - RAISE exception 'won''t deal with 3 (or more) byte sequences.'; - END IF; - IF _ascii <= x'07f'::int4 THEN - _temp := '%' || to_hex(_ascii); - ELSE - _temp := '%' || to_hex((_ascii & x'03f'::int4) + x'80'::int4); - _ascii := _ascii >> 6; - _temp := '%' || to_hex((_ascii & x'01f'::int4) + x'c0'::int4) || _temp; - END IF; - _result := _result || upper(_temp); - END IF; - END LOOP; - RETURN _result; -END; -$EOFCODE$ LANGUAGE plpgsql STRICT IMMUTABLE; - -CREATE FUNCTION totp.pad_secret(input bytea, len int) RETURNS bytea AS $EOFCODE$ -DECLARE - output bytea; - orig_length int = octet_length(input); -BEGIN - IF (orig_length = len) THEN - RETURN input; - END IF; - - -- create blank bytea size of new length - output = lpad('', len, 'x')::bytea; - - FOR i IN 0 .. len-1 LOOP - output = set_byte(output, i, get_byte(input, i % orig_length)); - END LOOP; - - RETURN output; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION totp.base32_to_hex(input text) RETURNS text AS $EOFCODE$ -DECLARE - output text[]; - decoded text = base32.decode(input); - len int = character_length(decoded); - hx text; -BEGIN - - FOR i IN 1 .. len LOOP - hx = to_hex(ascii(substring(decoded from i for 1)))::text; - IF (character_length(hx) = 1) THEN - -- if it is odd number of digits, pad a 0 so it can later - hx = '0' || hx; - END IF; - output = array_append(output, hx); - END LOOP; - - RETURN array_to_string(output, ''); -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION totp.hotp(key bytea, c int, digits int DEFAULT 6, hash text DEFAULT 'sha1') RETURNS text AS $EOFCODE$ -DECLARE - c BYTEA := '\x' || LPAD(TO_HEX(c), 16, '0'); - mac BYTEA := HMAC(c, key, hash); - trunc_offset INT := GET_BYTE(mac, length(mac) - 1) % 16; - result TEXT := SUBSTRING(SET_BIT(SUBSTRING(mac FROM 1 + trunc_offset FOR 4), 7, 0)::TEXT, 2)::BIT(32)::INT % (10 ^ digits)::INT; -BEGIN - RETURN LPAD(result, digits, '0'); -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION totp.generate(secret text, period int DEFAULT 30, digits int DEFAULT 6, time_from timestamptz DEFAULT now(), hash text DEFAULT 'sha1', encoding text DEFAULT 'base32', clock_offset int DEFAULT 0) RETURNS text AS $EOFCODE$ -DECLARE - c int := FLOOR(EXTRACT(EPOCH FROM time_from) / period)::int + clock_offset; - key bytea; -BEGIN - - IF (encoding = 'base32') THEN - key = ( '\x' || totp.base32_to_hex(secret) )::bytea; - ELSE - key = secret::bytea; - END IF; - - RETURN totp.hotp(key, c, digits, hash); -END; -$EOFCODE$ LANGUAGE plpgsql STABLE; - -CREATE FUNCTION totp.timing_safe_equals(a bytea, b bytea) RETURNS boolean AS $EOFCODE$ -DECLARE - la int := length(a); - lb int := length(b); - maxlen int := GREATEST(la, lb); - i int; - diff int := la # lb; - ca int; - cb int; -BEGIN - FOR i IN 0..(maxlen - 1) LOOP - ca := CASE WHEN i < la THEN get_byte(a, i) ELSE 0 END; - cb := CASE WHEN i < lb THEN get_byte(b, i) ELSE 0 END; - diff := diff | (ca # cb); - END LOOP; - RETURN diff = 0; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE STRICT; - -CREATE FUNCTION totp.timing_safe_equals(a text, b text) RETURNS boolean AS $EOFCODE$ --- Verify uses timing-safe equality to avoid leaking mismatch position via timing; do not use direct '=' here. --- See HN discussion for background: https://news.ycombinator.com/item?id=26260667 - - SELECT totp.timing_safe_equals(convert_to(a, 'UTF8'), convert_to(b, 'UTF8')); -$EOFCODE$ LANGUAGE sql IMMUTABLE STRICT; - -CREATE FUNCTION totp.verify(secret text, check_totp text, period int DEFAULT 30, digits int DEFAULT 6, time_from timestamptz DEFAULT now(), hash text DEFAULT 'sha1', encoding text DEFAULT 'base32', clock_offset int DEFAULT 0) RETURNS boolean AS $EOFCODE$ - SELECT totp.timing_safe_equals( - totp.generate( - secret, - period, - digits, - time_from, - hash, - encoding, - clock_offset - ), - check_totp - ); -$EOFCODE$ LANGUAGE sql; - -CREATE FUNCTION totp.url(email text, totp_secret text, totp_interval int, totp_issuer text) RETURNS text AS $EOFCODE$ - SELECT - concat('otpauth://totp/', totp.urlencode (email), '?secret=', totp.urlencode (totp_secret), '&period=', totp.urlencode (totp_interval::text), '&issuer=', totp.urlencode (totp_issuer)); -$EOFCODE$ LANGUAGE sql STRICT IMMUTABLE; - -CREATE FUNCTION totp.random_base32(_length int DEFAULT 20) RETURNS text LANGUAGE sql AS $EOFCODE$ - SELECT - string_agg( - ('{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,2,3,4,5,6,7}'::text[]) - [ (get_byte(b, i) % 32) + 1 ], - '' - ) - FROM (SELECT gen_random_bytes(_length) AS b) t, - LATERAL generate_series(0, _length - 1) g(i); -$EOFCODE$; - -CREATE FUNCTION totp.generate_secret(hash text DEFAULT 'sha1') RETURNS bytea AS $EOFCODE$ -BEGIN - -- See https://tools.ietf.org/html/rfc4868#section-2.1.2 - -- The optimal key length for HMAC is the block size of the algorithm - CASE - WHEN hash = 'sha1' THEN RETURN totp.random_base32(20); -- = 160 bits - WHEN hash = 'sha256' THEN RETURN totp.random_base32(32); -- = 256 bits - WHEN hash = 'sha512' THEN RETURN totp.random_base32(64); -- = 512 bits - ELSE - RAISE EXCEPTION 'Unsupported hash algorithm for OTP (see RFC6238/4226).'; - RETURN NULL; - END CASE; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; \ No newline at end of file diff --git a/packages/types/README.md b/packages/types/README.md index 07bd538dc..b48dbed1c 100644 --- a/packages/types/README.md +++ b/packages/types/README.md @@ -217,29 +217,14 @@ The test suite validates: ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - ## Disclaimer AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. diff --git a/packages/types/package.json b/packages/types/package.json index 3978a6801..9e128fc41 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/types", - "version": "0.28.3", + "version": "0.15.5", "description": "Core PostgreSQL data types with deploy/verify/revert SQL scripts", "author": "Dan Lynch ", "contributors": [ @@ -24,7 +24,7 @@ "@pgpm/verify": "workspace:*" }, "devDependencies": { - "pgpm": "^4.23.2" + "pgpm": "^4.28.7" }, "repository": { "type": "git", @@ -34,4 +34,4 @@ "bugs": { "url": "https://github.com/constructive-io/pgpm-modules/issues" } -} +} \ No newline at end of file diff --git a/packages/utils/README.md b/packages/utils/README.md index 3071194c6..7f6568c2f 100644 --- a/packages/utils/README.md +++ b/packages/utils/README.md @@ -397,29 +397,14 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - ## Disclaimer AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. diff --git a/packages/utils/package.json b/packages/utils/package.json index ac8751cb9..9e8ca632c 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/utils", - "version": "0.28.3", + "version": "0.15.5", "description": "General utility functions for PostgreSQL extensions", "author": "Dan Lynch ", "contributors": [ @@ -24,7 +24,7 @@ "@pgpm/verify": "workspace:*" }, "devDependencies": { - "pgpm": "^4.23.2" + "pgpm": "^4.28.7" }, "repository": { "type": "git", @@ -34,4 +34,4 @@ "bugs": { "url": "https://github.com/constructive-io/pgpm-modules/issues" } -} +} \ No newline at end of file diff --git a/packages/utils/sql/pgpm-utils--0.15.3.sql b/packages/utils/sql/pgpm-utils--0.15.3.sql deleted file mode 100644 index 6cd70b603..000000000 --- a/packages/utils/sql/pgpm-utils--0.15.3.sql +++ /dev/null @@ -1,64 +0,0 @@ -\echo Use "CREATE EXTENSION pgpm-utils" to load this file. \quit -CREATE SCHEMA utils; - -GRANT USAGE ON SCHEMA utils TO PUBLIC; - -ALTER DEFAULT PRIVILEGES IN SCHEMA utils - GRANT EXECUTE ON FUNCTIONS TO PUBLIC; - -CREATE FUNCTION utils.mask_pad(bitstr text, bitlen int, pad text DEFAULT '0') RETURNS text AS $EOFCODE$ - SELECT - ( - CASE WHEN length(bitstr) > bitlen THEN - substring(bitstr FROM (length(bitstr) - (bitlen - 1)) - FOR bitlen) - ELSE - lpad(bitstr, bitlen, pad) - END) -$EOFCODE$ LANGUAGE sql; - -CREATE FUNCTION utils.bitmask_pad(bitstr pg_catalog.varbit, bitlen int, pad text DEFAULT '0') RETURNS pg_catalog.varbit AS $EOFCODE$ - SELECT - ( - CASE WHEN length(bitstr) > bitlen THEN - substring(bitstr::text FROM (length(bitstr) - (bitlen - 1)) - FOR bitlen) - ELSE - lpad(bitstr::text, bitlen, pad) - END)::varbit; -$EOFCODE$ LANGUAGE sql; - -CREATE FUNCTION utils.throw() RETURNS trigger AS $EOFCODE$ -BEGIN - - IF (TG_NARGS = 1) THEN - RAISE EXCEPTION '% (%)', TG_ARGV[0], TG_TABLE_NAME; - END IF; - - IF (TG_NARGS > 1) THEN - RAISE EXCEPTION '% (%, %)', TG_ARGV[0], TG_TABLE_NAME, TG_ARGV[1]; - END IF; - - RAISE EXCEPTION 'THROWN_ERROR (%)', TG_TABLE_NAME; - -END; -$EOFCODE$ LANGUAGE plpgsql; - -CREATE FUNCTION utils.ensure_singleton() RETURNS trigger AS $EOFCODE$ -DECLARE - sql text; - num int; -BEGIN - - sql = format('SELECT count(1) FROM %1I.%2I;', TG_TABLE_SCHEMA, TG_TABLE_NAME); - - EXECUTE sql - INTO num; - - IF (num > 0) THEN - RAISE EXCEPTION 'SINGLETON_TABLE'; - END IF; - - RETURN NEW; -END; -$EOFCODE$ LANGUAGE plpgsql; \ No newline at end of file diff --git a/packages/uuid/.npmignore b/packages/uuid/.npmignore deleted file mode 100644 index cf8a45548..000000000 --- a/packages/uuid/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -__tests__ -jest.config.js diff --git a/packages/uuid/LICENSE b/packages/uuid/LICENSE deleted file mode 100644 index 7b18c9183..000000000 --- a/packages/uuid/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2025 Dan Lynch -Copyright (c) 2025 Constructive - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/packages/uuid/Makefile b/packages/uuid/Makefile deleted file mode 100644 index e41ffbd87..000000000 --- a/packages/uuid/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -EXTENSION = pgpm-uuid -DATA = sql/pgpm-uuid--0.15.3.sql - -PG_CONFIG = pg_config -PGXS := $(shell $(PG_CONFIG) --pgxs) -include $(PGXS) diff --git a/packages/uuid/README.md b/packages/uuid/README.md deleted file mode 100644 index e9f8714ae..000000000 --- a/packages/uuid/README.md +++ /dev/null @@ -1,303 +0,0 @@ -# @pgpm/uuid - -

- -

- -

- - - - - -

- -UUID utilities and extensions for PostgreSQL. - -## Overview - -`@pgpm/uuid` provides PostgreSQL functions for generating pseudo-ordered UUIDs that maintain some temporal ordering while preserving UUID randomness. This package is particularly useful for multi-tenant applications where you want UUIDs that cluster by tenant or time period for better database performance. - -## Features - -- **pseudo_order_uuid()**: Generates time-influenced UUIDs for better index performance -- **pseudo_order_seed_uuid(seed)**: Generates UUIDs with a seed prefix for multi-tenant scenarios -- **trigger_set_uuid_seed**: Trigger function to automatically set UUID from a seed column -- **trigger_set_uuid_related_field**: Trigger function to set UUID based on another column value -- Version 4 UUID format compliance - -## Installation - -If you have `pgpm` installed: - -```bash -pgpm install @pgpm/uuid -pgpm deploy -``` - -This is a quick way to get started. The sections below provide more detailed installation options. - -### Prerequisites - -```bash -# Install pgpm CLI -npm install -g pgpm - -# Start local Postgres (via Docker) and export env vars -pgpm docker start -eval "$(pgpm env)" -``` - -> **Tip:** Already running Postgres? Skip the Docker step and just export your `PG*` environment variables. - -### **Add to an Existing Package** - -```bash -# 1. Install the package -pgpm install @pgpm/uuid - -# 2. Deploy locally -pgpm deploy -``` - -### **Add to a New Project** - -```bash -# 1. Create a workspace -pgpm init workspace - -# 2. Create your first module -cd my-workspace -pgpm init - -# 3. Install a package -cd packages/my-module -pgpm install @pgpm/uuid - -# 4. Deploy everything -pgpm deploy --createdb --database mydb1 -``` - -## Usage - -### Basic UUID Generation - -```sql --- Generate a pseudo-ordered UUID -SELECT uuids.pseudo_order_uuid(); --- Returns: e.g., '3a7f-8b2c-4d1e-9f3a-1b2c3d4e5f6a' - --- Use as default value in a table -CREATE TABLE items ( - id UUID DEFAULT uuids.pseudo_order_uuid() PRIMARY KEY, - name TEXT -); -``` - -### Seeded UUID Generation (Multi-Tenant) - -```sql --- Generate UUID with tenant seed -SELECT uuids.pseudo_order_seed_uuid('tenant-123'); --- UUIDs for the same tenant will share a common prefix - --- Useful for multi-tenant applications -CREATE TABLE tenant_data ( - id UUID DEFAULT uuids.pseudo_order_seed_uuid('default-tenant'), - tenant_id TEXT, - data JSONB -); -``` - -### Automatic UUID Setting with Triggers - -#### Set UUID from Seed Column - -```sql -CREATE TABLE items ( - id UUID, - name TEXT, - tenant_id TEXT, - custom_uuid UUID -); - --- Automatically set custom_uuid based on tenant_id -CREATE TRIGGER set_custom_uuid -BEFORE INSERT ON items -FOR EACH ROW -EXECUTE FUNCTION uuids.trigger_set_uuid_seed('custom_uuid', 'tenant_id'); - --- Insert will automatically generate custom_uuid from tenant_id -INSERT INTO items (name, tenant_id) VALUES ('Item 1', 'tenant-abc'); -``` - -#### Set UUID from Related Field - -```sql -CREATE TABLE tenant_records ( - id UUID, - tenant TEXT -); - --- Automatically set id based on tenant column -CREATE TRIGGER set_id_from_tenant -BEFORE INSERT ON tenant_records -FOR EACH ROW -EXECUTE FUNCTION uuids.trigger_set_uuid_related_field('id', 'tenant'); - --- Insert will automatically generate id from tenant value -INSERT INTO tenant_records (tenant) VALUES ('tenant-xyz'); -``` - -## Functions - -### uuids.pseudo_order_uuid() - -Generates a pseudo-ordered UUID that incorporates temporal information for better index performance. - -**Returns**: `uuid` - -**Algorithm**: -- First 4 characters: MD5 hash of current year + week number (provides weekly clustering) -- Remaining characters: Random values with timestamp influence -- Format: Version 4 UUID compliant - -**Benefits**: -- Better B-tree index performance compared to random UUIDs -- Reduces index fragmentation -- Maintains UUID uniqueness guarantees - -### uuids.pseudo_order_seed_uuid(seed text) - -Generates a pseudo-ordered UUID with a seed prefix for multi-tenant scenarios. - -**Parameters**: -- `seed` (text): Seed value (typically tenant ID or organization ID) - -**Returns**: `uuid` - -**Algorithm**: -- First 2 characters: MD5 hash of seed (provides tenant clustering) -- Next 2 characters: MD5 hash of year + week -- Remaining characters: Random values with timestamp influence -- Format: Version 4 UUID compliant - -**Benefits**: -- UUIDs for same tenant cluster together in indexes -- Improves query performance for tenant-specific queries -- Maintains uniqueness across tenants - -### uuids.trigger_set_uuid_seed(uuid_column, seed_column) - -Trigger function that automatically sets a UUID column based on a seed column value. - -**Parameters**: -- `uuid_column` (text): Name of the UUID column to set -- `seed_column` (text): Name of the column containing the seed value - -**Usage**: -```sql -CREATE TRIGGER trigger_name -BEFORE INSERT ON table_name -FOR EACH ROW -EXECUTE FUNCTION uuids.trigger_set_uuid_seed('id_column', 'seed_column'); -``` - -### uuids.trigger_set_uuid_related_field(uuid_column, related_column) - -Trigger function that automatically sets a UUID column based on another column's value. - -**Parameters**: -- `uuid_column` (text): Name of the UUID column to set -- `related_column` (text): Name of the column to use as seed - -**Usage**: -```sql -CREATE TRIGGER trigger_name -BEFORE INSERT ON table_name -FOR EACH ROW -EXECUTE FUNCTION uuids.trigger_set_uuid_related_field('id_column', 'related_column'); -``` - -## Use Cases - -### Multi-Tenant Applications - -```sql -CREATE TABLE tenant_users ( - id UUID, - tenant_id TEXT NOT NULL, - email TEXT NOT NULL, - created_at TIMESTAMPTZ DEFAULT NOW() -); - -CREATE TRIGGER set_user_id -BEFORE INSERT ON tenant_users -FOR EACH ROW -EXECUTE FUNCTION uuids.trigger_set_uuid_seed('id', 'tenant_id'); - --- All users for tenant 'acme' will have UUIDs with same prefix -INSERT INTO tenant_users (tenant_id, email) VALUES - ('acme', 'user1@acme.com'), - ('acme', 'user2@acme.com'); -``` - -### Time-Series Data with Better Index Performance - -```sql -CREATE TABLE events ( - id UUID DEFAULT uuids.pseudo_order_uuid() PRIMARY KEY, - event_type TEXT, - payload JSONB, - created_at TIMESTAMPTZ DEFAULT NOW() -); - --- UUIDs will cluster by week, improving range query performance -``` - -## Dependencies - -- `@pgpm/verify`: Verification utilities for database objects - -## Testing - -```bash -pnpm test -``` - -The test suite validates: -- UUID format compliance (version 4) -- Pseudo-ordered UUID generation -- Seeded UUID generation with consistent prefixes -- Trigger functions for automatic UUID setting - -## Related Tooling - -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. -* [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. -* [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. -* [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. - -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - -## Disclaimer - -AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. - -No developer or entity involved in creating this software will be liable for any claims or damages whatsoever associated with your use, inability to use, or your interaction with other users of the code, including any direct, indirect, incidental, special, exemplary, punitive or consequential damages, or loss of profits, cryptocurrencies, tokens, or anything else of value. diff --git a/packages/uuid/__tests__/uuid.test.ts b/packages/uuid/__tests__/uuid.test.ts deleted file mode 100644 index 801087811..000000000 --- a/packages/uuid/__tests__/uuid.test.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { getConnections, PgTestClient } from 'pgsql-test'; - -let pg: PgTestClient; -let teardown: () => Promise; - -beforeAll(async () => { - ({ pg, teardown } = await getConnections()); - - await pg.any(` - CREATE TABLE public.items ( - id UUID DEFAULT uuids.pseudo_order_uuid(), - name TEXT, - seed TEXT, - custom_id UUID - ); - - CREATE TABLE public.items_seeded ( - id UUID, - tenant TEXT - ); - - CREATE TRIGGER set_custom_id - BEFORE INSERT ON public.items - FOR EACH ROW - EXECUTE FUNCTION uuids.trigger_set_uuid_seed('custom_id', 'seed'); - - CREATE TRIGGER set_id_from_tenant - BEFORE INSERT ON public.items_seeded - FOR EACH ROW - EXECUTE FUNCTION uuids.trigger_set_uuid_related_field('id', 'tenant'); - `); -}); - -afterAll(async () => { - try { - await teardown(); - } catch (e) { - console.error('Teardown failed:', e); - } -}); - -beforeEach(() => pg.beforeEach()); -afterEach(() => pg.afterEach()); - -describe('uuids.pseudo_order_uuid()', () => { - it('generates a valid UUID', async () => { - const { pseudo_order_uuid } = await pg.one(` - SELECT uuids.pseudo_order_uuid() AS pseudo_order_uuid - `); - expect(pseudo_order_uuid).toMatch( - /^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}$/ - ); - }); -}); - -describe('uuids.pseudo_order_seed_uuid(seed)', () => { - it('generates a valid UUID from a seed', async () => { - const { pseudo_order_seed_uuid } = await pg.one( - `SELECT uuids.pseudo_order_seed_uuid($1) AS pseudo_order_seed_uuid`, - ['tenant123'] - ); - expect(pseudo_order_seed_uuid).toMatch( - /^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}$/ - ); - }); -}); - -describe('uuids.trigger_set_uuid_seed', () => { - it('sets custom_id based on static seed', async () => { - const { custom_id } = await pg.one( - `INSERT INTO public.items (name, seed) VALUES ($1, $2) RETURNING custom_id`, - ['Item A', 'my-seed'] - ); - expect(custom_id).toMatch( - /^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}$/ - ); - }); -}); - -describe('uuids.trigger_set_uuid_related_field', () => { - it('sets id based on tenant column', async () => { - const { id } = await pg.one( - `INSERT INTO public.items_seeded (tenant) VALUES ($1) RETURNING id`, - ['tenant-42'] - ); - expect(id).toMatch( - /^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}$/ - ); - }); -}); \ No newline at end of file diff --git a/packages/uuid/deploy/extension/defaults.sql b/packages/uuid/deploy/extension/defaults.sql deleted file mode 100644 index 342d0fae5..000000000 --- a/packages/uuid/deploy/extension/defaults.sql +++ /dev/null @@ -1,8 +0,0 @@ --- Deploy extension/defaults to pg - -BEGIN; - --- hstore -GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public to public; - -COMMIT; diff --git a/packages/uuid/deploy/schemas/uuids/procedures/pseudo_order_seed_uuid.sql b/packages/uuid/deploy/schemas/uuids/procedures/pseudo_order_seed_uuid.sql deleted file mode 100644 index 2d8be89fc..000000000 --- a/packages/uuid/deploy/schemas/uuids/procedures/pseudo_order_seed_uuid.sql +++ /dev/null @@ -1,50 +0,0 @@ --- Deploy schemas/uuids/procedures/pseudo_order_seed_uuid to pg - --- requires: schemas/uuids/schema - --- The first 2 characters of the UUID value comes from --- the MD5 hash of the uuid_seed. The next --- 2 characters are the MD5 hash of the concatenation --- of the current year and week number. This value is, --- of course, static over a week. The remaining of the --- UUID value comes from the MD5 of a random value and --- the current time at a precision of 1us. The third field --- is prefixed with a “4” to indicate it is a version 4 UUID type. - -BEGIN; - -CREATE FUNCTION uuids.pseudo_order_seed_uuid( - seed text -) - RETURNS uuid -AS $$ -DECLARE - new_uuid char(36); - md5_str char(32); - md5_str2 char(32); - uid text; -BEGIN - md5_str := md5(concat(random(), now())); - md5_str2 := md5(concat(random(), now())); - - new_uuid := concat( - LEFT (md5(seed), 2), - LEFT (md5(concat(extract(year FROM now()), extract(week FROM now()))), 2), - substring(md5_str, 1, 4), - '-', - substring(md5_str, 5, 4), - '-4', - substring(md5_str2, 9, 3), - '-', - substring(md5_str, 13, 4), - '-', - substring(md5_str2, 17, 12) - ); - RETURN new_uuid; -END; -$$ -LANGUAGE plpgsql VOLATILE; - -COMMENT ON FUNCTION uuids.pseudo_order_seed_uuid IS 'Pseudo Ordered UUID with a seed. Good for multi-tenant scenarios, other wise use non-seed.'; - -COMMIT; diff --git a/packages/uuid/deploy/schemas/uuids/procedures/pseudo_order_uuid.sql b/packages/uuid/deploy/schemas/uuids/procedures/pseudo_order_uuid.sql deleted file mode 100644 index 920711f21..000000000 --- a/packages/uuid/deploy/schemas/uuids/procedures/pseudo_order_uuid.sql +++ /dev/null @@ -1,27 +0,0 @@ --- Deploy schemas/uuids/procedures/pseudo_order_uuid to pg - --- requires: schemas/uuids/schema - -BEGIN; - -CREATE FUNCTION uuids.pseudo_order_uuid() - RETURNS uuid -AS $$ -DECLARE - new_uuid char(36); - md5_str char(32); - md5_str2 char(32); -BEGIN - md5_str := md5(concat(random(), now())); - md5_str2 := md5(concat(random(), now())); - new_uuid := concat( - LEFT (md5(concat(extract(year FROM now()), extract(week FROM now()))), 4), - LEFT (md5_str, 4), '-', substring(md5_str, 5, 4), '-4', substring(md5_str2, 9, 3), '-', substring(md5_str, 13, 4), '-', substring(md5_str2, 17, 12)); - RETURN new_uuid; -END; -$$ -LANGUAGE plpgsql VOLATILE; - -COMMENT ON FUNCTION uuids.pseudo_order_seed_uuid IS 'Pseudo Ordered UUID'; - -COMMIT; diff --git a/packages/uuid/deploy/schemas/uuids/procedures/trigger_set_uuid_related_field.sql b/packages/uuid/deploy/schemas/uuids/procedures/trigger_set_uuid_related_field.sql deleted file mode 100644 index f49e335e4..000000000 --- a/packages/uuid/deploy/schemas/uuids/procedures/trigger_set_uuid_related_field.sql +++ /dev/null @@ -1,29 +0,0 @@ --- Deploy schemas/uuids/procedures/trigger_set_uuid_related_field to pg - --- requires: schemas/uuids/schema --- requires: schemas/uuids/procedures/pseudo_order_seed_uuid - -BEGIN; - --- https://dba.stackexchange.com/questions/61271/how-to-access-new-or-old-field-given-only-the-fields-name --- https://dba.stackexchange.com/questions/82039/assign-to-new-by-key-in-a-postgres-trigger/82044#82044 --- https://stackoverflow.com/questions/7711432/how-to-set-value-of-composite-variable-field-using-dynamic-sql - --- usage CREATE TRIGGER ... --- EXECUTE PROCEDURE uuids.trigger_set_uuid_seed ('id', 'database_id'); - -CREATE FUNCTION uuids.trigger_set_uuid_related_field() -RETURNS TRIGGER AS $$ -DECLARE - _seed_column text := to_json(NEW) ->> TG_ARGV[1]; -BEGIN - IF _seed_column IS NULL THEN - RAISE EXCEPTION 'UUID seed is NULL on table %', TG_TABLE_NAME; - END IF; - NEW := NEW #= (TG_ARGV[0] || '=>' || uuids.pseudo_order_seed_uuid(_seed_column))::hstore; - RETURN NEW; -END; -$$ -LANGUAGE 'plpgsql' VOLATILE; - -COMMIT; diff --git a/packages/uuid/deploy/schemas/uuids/procedures/trigger_set_uuid_seed.sql b/packages/uuid/deploy/schemas/uuids/procedures/trigger_set_uuid_seed.sql deleted file mode 100644 index 85b5741d3..000000000 --- a/packages/uuid/deploy/schemas/uuids/procedures/trigger_set_uuid_seed.sql +++ /dev/null @@ -1,24 +0,0 @@ --- Deploy schemas/uuids/procedures/trigger_set_uuid_seed to pg - --- requires: schemas/uuids/schema --- requires: schemas/uuids/procedures/pseudo_order_seed_uuid - -BEGIN; - --- https://dba.stackexchange.com/questions/61271/how-to-access-new-or-old-field-given-only-the-fields-name --- https://dba.stackexchange.com/questions/82039/assign-to-new-by-key-in-a-postgres-trigger/82044#82044 --- https://stackoverflow.com/questions/7711432/how-to-set-value-of-composite-variable-field-using-dynamic-sql - --- usage CREATE TRIGGER ... --- EXECUTE PROCEDURE uuids.trigger_set_uuid_seed ('id', '41c33217-a5e5-46d1-c8db-62a563cba3af'); - -CREATE FUNCTION uuids.trigger_set_uuid_seed() -RETURNS TRIGGER AS $$ -BEGIN - NEW := NEW #= (TG_ARGV[0] || '=>' || uuids.pseudo_order_seed_uuid(TG_ARGV[1]))::hstore; - RETURN NEW; -END; -$$ -LANGUAGE 'plpgsql' VOLATILE; - -COMMIT; diff --git a/packages/uuid/deploy/schemas/uuids/schema.sql b/packages/uuid/deploy/schemas/uuids/schema.sql deleted file mode 100644 index 992cc782d..000000000 --- a/packages/uuid/deploy/schemas/uuids/schema.sql +++ /dev/null @@ -1,16 +0,0 @@ --- Deploy schemas/uuids/schema to pg - - -BEGIN; - -CREATE SCHEMA uuids; - -GRANT USAGE ON SCHEMA uuids -TO public; - -ALTER DEFAULT PRIVILEGES -IN SCHEMA uuids -GRANT EXECUTE ON FUNCTIONS -TO public; - -COMMIT; diff --git a/packages/uuid/jest.config.js b/packages/uuid/jest.config.js deleted file mode 100644 index e20e7efb5..000000000 --- a/packages/uuid/jest.config.js +++ /dev/null @@ -1,15 +0,0 @@ -/** @type {import('ts-jest').JestConfigWithTsJest} */ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - - // Match both __tests__ and colocated test files - testMatch: ['**/?(*.)+(test|spec).{ts,tsx,js,jsx}'], - - // Ignore build artifacts and type declarations - testPathIgnorePatterns: ['/dist/', '\\.d\\.ts$'], - modulePathIgnorePatterns: ['/dist/'], - watchPathIgnorePatterns: ['/dist/'], - - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], -}; diff --git a/packages/uuid/package.json b/packages/uuid/package.json deleted file mode 100644 index f939bccf4..000000000 --- a/packages/uuid/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "@pgpm/uuid", - "version": "0.28.3", - "description": "UUID utilities and extensions for PostgreSQL", - "author": "Dan Lynch ", - "contributors": [ - "Constructive " - ], - "keywords": [ - "postgresql", - "pgpm", - "uuid", - "identifiers" - ], - "publishConfig": { - "access": "public" - }, - "scripts": { - "bundle": "pgpm package", - "test": "jest", - "test:watch": "jest --watch" - }, - "dependencies": { - "@pgpm/verify": "workspace:*" - }, - "devDependencies": { - "pgpm": "^4.16.6" - }, - "repository": { - "type": "git", - "url": "https://github.com/constructive-io/pgpm-modules" - }, - "homepage": "https://github.com/constructive-io/pgpm-modules", - "bugs": { - "url": "https://github.com/constructive-io/pgpm-modules/issues" - } -} diff --git a/packages/uuid/pgpm-uuid.control b/packages/uuid/pgpm-uuid.control deleted file mode 100644 index 588e0a199..000000000 --- a/packages/uuid/pgpm-uuid.control +++ /dev/null @@ -1,8 +0,0 @@ -# pgpm-uuid extension -comment = 'pgpm-uuid extension' -default_version = '0.15.3' -module_pathname = '$libdir/pgpm-uuid' -requires = 'pgcrypto,plpgsql,uuid-ossp,hstore,pgpm-verify' -relocatable = false -superuser = false - \ No newline at end of file diff --git a/packages/uuid/pgpm.plan b/packages/uuid/pgpm.plan deleted file mode 100644 index 398203767..000000000 --- a/packages/uuid/pgpm.plan +++ /dev/null @@ -1,9 +0,0 @@ -%syntax-version=1.0.0 -%project=pgpm-uuid -%uri=pgpm-uuid - -schemas/uuids/schema 2017-08-11T08:11:51Z skitch # add schemas/uuids/schema -schemas/uuids/procedures/pseudo_order_seed_uuid [schemas/uuids/schema] 2017-08-11T08:11:51Z skitch # add schemas/uuids/procedures/pseudo_order_seed_uuid -schemas/uuids/procedures/pseudo_order_uuid [schemas/uuids/schema] 2017-08-11T08:11:51Z skitch # add schemas/uuids/procedures/pseudo_order_uuid -schemas/uuids/procedures/trigger_set_uuid_related_field [schemas/uuids/schema schemas/uuids/procedures/pseudo_order_seed_uuid] 2017-08-11T08:11:51Z skitch # add schemas/uuids/procedures/trigger_set_uuid_related_field -schemas/uuids/procedures/trigger_set_uuid_seed [schemas/uuids/schema schemas/uuids/procedures/pseudo_order_seed_uuid] 2017-08-11T08:11:51Z skitch # add schemas/uuids/procedures/trigger_set_uuid_seed \ No newline at end of file diff --git a/packages/uuid/revert/extension/defaults.sql b/packages/uuid/revert/extension/defaults.sql deleted file mode 100644 index a5f303fe8..000000000 --- a/packages/uuid/revert/extension/defaults.sql +++ /dev/null @@ -1,5 +0,0 @@ --- Revert extension/defaults from pg - -BEGIN; - -COMMIT; diff --git a/packages/uuid/revert/schemas/uuids/procedures/pseudo_order_seed_uuid.sql b/packages/uuid/revert/schemas/uuids/procedures/pseudo_order_seed_uuid.sql deleted file mode 100644 index dfb77b5c7..000000000 --- a/packages/uuid/revert/schemas/uuids/procedures/pseudo_order_seed_uuid.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/uuids/procedures/pseudo_order_seed_uuid from pg - -BEGIN; - -DROP FUNCTION uuids.pseudo_order_seed_uuid; - -COMMIT; diff --git a/packages/uuid/revert/schemas/uuids/procedures/pseudo_order_uuid.sql b/packages/uuid/revert/schemas/uuids/procedures/pseudo_order_uuid.sql deleted file mode 100644 index 79d1c887f..000000000 --- a/packages/uuid/revert/schemas/uuids/procedures/pseudo_order_uuid.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/uuids/procedures/pseudo_order_uuid from pg - -BEGIN; - -DROP FUNCTION uuids.pseudo_order_uuid; - -COMMIT; diff --git a/packages/uuid/revert/schemas/uuids/procedures/trigger_set_uuid_related_field.sql b/packages/uuid/revert/schemas/uuids/procedures/trigger_set_uuid_related_field.sql deleted file mode 100644 index 40b46093b..000000000 --- a/packages/uuid/revert/schemas/uuids/procedures/trigger_set_uuid_related_field.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/uuids/procedures/trigger_set_uuid_related_field from pg - -BEGIN; - -DROP FUNCTION uuids.trigger_set_uuid_related_field; - -COMMIT; diff --git a/packages/uuid/revert/schemas/uuids/procedures/trigger_set_uuid_seed.sql b/packages/uuid/revert/schemas/uuids/procedures/trigger_set_uuid_seed.sql deleted file mode 100644 index 4d3b956d9..000000000 --- a/packages/uuid/revert/schemas/uuids/procedures/trigger_set_uuid_seed.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/uuids/procedures/trigger_set_uuid_seed from pg - -BEGIN; - -DROP FUNCTION uuids.trigger_set_uuid_seed; - -COMMIT; diff --git a/packages/uuid/revert/schemas/uuids/schema.sql b/packages/uuid/revert/schemas/uuids/schema.sql deleted file mode 100644 index 2dee222e3..000000000 --- a/packages/uuid/revert/schemas/uuids/schema.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Revert schemas/uuids/schema from pg - -BEGIN; - -DROP SCHEMA uuids; - -COMMIT; diff --git a/packages/uuid/sql/pgpm-uuid--0.15.3.sql b/packages/uuid/sql/pgpm-uuid--0.15.3.sql deleted file mode 100644 index 996b4227e..000000000 --- a/packages/uuid/sql/pgpm-uuid--0.15.3.sql +++ /dev/null @@ -1,72 +0,0 @@ -\echo Use "CREATE EXTENSION pgpm-uuid" to load this file. \quit -CREATE SCHEMA uuids; - -GRANT USAGE ON SCHEMA uuids TO PUBLIC; - -ALTER DEFAULT PRIVILEGES IN SCHEMA uuids - GRANT EXECUTE ON FUNCTIONS TO PUBLIC; - -CREATE FUNCTION uuids.pseudo_order_seed_uuid(seed text) RETURNS uuid AS $EOFCODE$ -DECLARE - new_uuid char(36); - md5_str char(32); - md5_str2 char(32); - uid text; -BEGIN - md5_str := md5(concat(random(), now())); - md5_str2 := md5(concat(random(), now())); - - new_uuid := concat( - LEFT (md5(seed), 2), - LEFT (md5(concat(extract(year FROM now()), extract(week FROM now()))), 2), - substring(md5_str, 1, 4), - '-', - substring(md5_str, 5, 4), - '-4', - substring(md5_str2, 9, 3), - '-', - substring(md5_str, 13, 4), - '-', - substring(md5_str2, 17, 12) - ); - RETURN new_uuid; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -COMMENT ON FUNCTION uuids.pseudo_order_seed_uuid IS 'Pseudo Ordered UUID with a seed. Good for multi-tenant scenarios, other wise use non-seed.'; - -CREATE FUNCTION uuids.pseudo_order_uuid() RETURNS uuid AS $EOFCODE$ -DECLARE - new_uuid char(36); - md5_str char(32); - md5_str2 char(32); -BEGIN - md5_str := md5(concat(random(), now())); - md5_str2 := md5(concat(random(), now())); - new_uuid := concat( - LEFT (md5(concat(extract(year FROM now()), extract(week FROM now()))), 4), - LEFT (md5_str, 4), '-', substring(md5_str, 5, 4), '-4', substring(md5_str2, 9, 3), '-', substring(md5_str, 13, 4), '-', substring(md5_str2, 17, 12)); - RETURN new_uuid; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -COMMENT ON FUNCTION uuids.pseudo_order_seed_uuid IS 'Pseudo Ordered UUID'; - -CREATE FUNCTION uuids.trigger_set_uuid_related_field() RETURNS trigger AS $EOFCODE$ -DECLARE - _seed_column text := to_json(NEW) ->> TG_ARGV[1]; -BEGIN - IF _seed_column IS NULL THEN - RAISE EXCEPTION 'UUID seed is NULL on table %', TG_TABLE_NAME; - END IF; - NEW := NEW #= (TG_ARGV[0] || '=>' || uuids.pseudo_order_seed_uuid(_seed_column))::hstore; - RETURN NEW; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; - -CREATE FUNCTION uuids.trigger_set_uuid_seed() RETURNS trigger AS $EOFCODE$ -BEGIN - NEW := NEW #= (TG_ARGV[0] || '=>' || uuids.pseudo_order_seed_uuid(TG_ARGV[1]))::hstore; - RETURN NEW; -END; -$EOFCODE$ LANGUAGE plpgsql VOLATILE; \ No newline at end of file diff --git a/packages/uuid/verify/extension/defaults.sql b/packages/uuid/verify/extension/defaults.sql deleted file mode 100644 index 87245abb4..000000000 --- a/packages/uuid/verify/extension/defaults.sql +++ /dev/null @@ -1,5 +0,0 @@ --- Verify extension/defaults on pg - -BEGIN; - -ROLLBACK; diff --git a/packages/uuid/verify/schemas/uuids/procedures/pseudo_order_seed_uuid.sql b/packages/uuid/verify/schemas/uuids/procedures/pseudo_order_seed_uuid.sql deleted file mode 100644 index 10d5635fe..000000000 --- a/packages/uuid/verify/schemas/uuids/procedures/pseudo_order_seed_uuid.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Verify schemas/uuids/procedures/pseudo_order_seed_uuid on pg - -BEGIN; - -SELECT verify_function ('uuids.pseudo_order_seed_uuid'); - -ROLLBACK; diff --git a/packages/uuid/verify/schemas/uuids/procedures/pseudo_order_uuid.sql b/packages/uuid/verify/schemas/uuids/procedures/pseudo_order_uuid.sql deleted file mode 100644 index 4bf9e5512..000000000 --- a/packages/uuid/verify/schemas/uuids/procedures/pseudo_order_uuid.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Verify schemas/uuids/procedures/pseudo_order_uuid on pg - -BEGIN; - -SELECT verify_function ('uuids.pseudo_order_uuid'); - -ROLLBACK; diff --git a/packages/uuid/verify/schemas/uuids/procedures/trigger_set_uuid_related_field.sql b/packages/uuid/verify/schemas/uuids/procedures/trigger_set_uuid_related_field.sql deleted file mode 100644 index 0b4b02c42..000000000 --- a/packages/uuid/verify/schemas/uuids/procedures/trigger_set_uuid_related_field.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Verify schemas/uuids/procedures/trigger_set_uuid_related_field on pg - -BEGIN; - -SELECT verify_function ('uuids.trigger_set_uuid_related_field'); - -ROLLBACK; diff --git a/packages/uuid/verify/schemas/uuids/procedures/trigger_set_uuid_seed.sql b/packages/uuid/verify/schemas/uuids/procedures/trigger_set_uuid_seed.sql deleted file mode 100644 index 72342b832..000000000 --- a/packages/uuid/verify/schemas/uuids/procedures/trigger_set_uuid_seed.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Verify schemas/uuids/procedures/trigger_set_uuid_seed on pg - -BEGIN; - -SELECT verify_function ('uuids.trigger_set_uuid_seed'); - -ROLLBACK; diff --git a/packages/uuid/verify/schemas/uuids/schema.sql b/packages/uuid/verify/schemas/uuids/schema.sql deleted file mode 100644 index 62f1e2f9f..000000000 --- a/packages/uuid/verify/schemas/uuids/schema.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Verify schemas/uuids/schema on pg - -BEGIN; - -SELECT verify_schema ('uuids'); - -ROLLBACK; diff --git a/packages/verify/README.md b/packages/verify/README.md index 1a617d340..58ce1edca 100644 --- a/packages/verify/README.md +++ b/packages/verify/README.md @@ -438,31 +438,16 @@ None - this is the foundational package that all other packages depend on. ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. -### 📚 Documentation & Skills - -* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides, and deployment guides. - -Install skills for AI coding agents: - -```bash -# All platform skills (security, blueprints, codegen, billing, etc.) -npx skills add constructive-io/constructive-skills - -# Individual repo skills (pgpm, testing, CLI, search, etc.) -npx skills add https://github.com/constructive-io/constructive --skill pgpm -npx skills add https://github.com/constructive-io/constructive --skill constructive-testing -``` - ## Disclaimer AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED "AS IS", AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND. -No developer or entity involved in creating this software will be liable for any claims or damages whatsoever associated with your use, inability to use, or your interaction with other users of the code, including any direct, indirect, incidental, special, exemplary, punitive or consequential damages, or loss of profits, cryptocurrencies, tokens, or anything else of value. +No developer or entity involved in creating this software will be liable for any claims or damages whatsoever associated with your use, inability to use, or your interaction with other users of the code, including any direct, indirect, incidental, special, exemplary, punitive or consequential damages, or loss of profits, cryptocurrencies, tokens, or anything else of value. \ No newline at end of file diff --git a/packages/verify/package.json b/packages/verify/package.json index df49a9ae5..8938e27ef 100644 --- a/packages/verify/package.json +++ b/packages/verify/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/verify", - "version": "0.28.3", + "version": "0.15.5", "description": "Verification utilities for PGPM deploy/verify/revert workflow", "author": "Dan Lynch ", "contributors": [ @@ -21,7 +21,7 @@ "test:watch": "jest --watch" }, "devDependencies": { - "pgpm": "^4.23.2" + "pgpm": "^4.28.7" }, "repository": { "type": "git", @@ -31,4 +31,4 @@ "bugs": { "url": "https://github.com/constructive-io/pgpm-modules/issues" } -} +} \ No newline at end of file diff --git a/packages/verify/sql/pgpm-verify--0.15.3.sql b/packages/verify/sql/pgpm-verify--0.15.3.sql deleted file mode 100644 index 515c71795..000000000 --- a/packages/verify/sql/pgpm-verify--0.15.3.sql +++ /dev/null @@ -1,372 +0,0 @@ -\echo Use "CREATE EXTENSION pgpm-verify" to load this file. \quit -CREATE FUNCTION get_entity_from_str(qualified_name text) RETURNS text AS $EOFCODE$ -DECLARE - parts text[]; -BEGIN - SELECT - parse_ident(qualified_name) INTO parts; - IF cardinality(parts) > 1 THEN - RETURN parts[2]; - ELSE - RETURN parts[1]; - END IF; -END; -$EOFCODE$ LANGUAGE plpgsql STRICT; - -CREATE FUNCTION get_schema_from_str(qualified_name text) RETURNS text AS $EOFCODE$ -DECLARE - parts text[]; -BEGIN - SELECT - parse_ident(qualified_name) INTO parts; - IF cardinality(parts) > 1 THEN - RETURN parts[1]; - ELSE - RETURN 'public'; - END IF; -END; -$EOFCODE$ LANGUAGE plpgsql STRICT; - -CREATE FUNCTION list_indexes(_table text, _index text) RETURNS TABLE ( schema_name text, table_name text, index_name text ) AS $EOFCODE$ -SELECT - n.nspname::text AS schema_name, - t.relname::text AS table_name, - i.relname::text AS index_name -FROM - pg_class t, - pg_class i, - pg_index ix, - pg_catalog.pg_namespace n -WHERE - t.oid = ix.indrelid - AND i.oid = ix.indexrelid - AND n.oid = i.relnamespace - AND n.nspname = get_schema_from_str(_table) - AND i.relname = _index - AND t.relname = get_entity_from_str(_table); -$EOFCODE$ LANGUAGE sql IMMUTABLE; - -CREATE FUNCTION list_memberships(_user text) RETURNS TABLE ( rolname text ) AS $EOFCODE$ WITH RECURSIVE cte AS ( - SELECT - oid - FROM - pg_roles - WHERE - rolname = _user - UNION ALL - SELECT - m.roleid - FROM - cte - JOIN pg_auth_members m ON m.member = cte.oid -) -SELECT - pg_roles.rolname::text AS rolname -FROM - cte c, - pg_roles -WHERE - pg_roles.oid = c.oid; -$EOFCODE$ LANGUAGE sql IMMUTABLE; - -CREATE FUNCTION verify_constraint(_table text, _name text) RETURNS boolean AS $EOFCODE$ -BEGIN - IF EXISTS ( - SELECT - c.conname, - pg_get_constraintdef(c.oid) - FROM - pg_constraint c - WHERE - conname = _name - AND c.conrelid = _table::regclass) THEN - RETURN TRUE; -ELSE - RAISE EXCEPTION 'Nonexistent constraint --> %', _name - USING HINT = 'Please check'; -END IF; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION verify_domain(_type text) RETURNS boolean AS $EOFCODE$ -BEGIN - IF EXISTS ( - SELECT - pg_type.typname, - n.nspname - FROM - pg_type, - pg_catalog.pg_namespace n - WHERE - typtype = 'd' - AND typname = get_entity_from_str (_type) - AND nspname = get_schema_from_str (_type)) THEN - RETURN TRUE; -ELSE - RAISE EXCEPTION 'Nonexistent type --> %', _type - USING HINT = 'Please check'; -END IF; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION verify_extension(_extname text) RETURNS boolean AS $EOFCODE$ -BEGIN - IF EXISTS ( - SELECT - 1 - FROM - pg_available_extensions - WHERE - name = _extname) THEN - RETURN TRUE; -ELSE - RAISE EXCEPTION 'Nonexistent extension --> %', _extname - USING HINT = 'Please check'; -END IF; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION verify_function(_name text, _user text DEFAULT NULL) RETURNS boolean AS $EOFCODE$ -DECLARE - check_user text; - func_oid oid; -BEGIN - IF (_user IS NOT NULL) THEN - check_user = _user; - ELSE - check_user = CURRENT_USER; - END IF; - IF position('(' IN _name) > 0 THEN - func_oid = to_regprocedure(_name); - IF func_oid IS NULL THEN - RAISE EXCEPTION 'Nonexistent function --> %', _name - USING HINT = 'Please check'; - END IF; - IF has_function_privilege(check_user, func_oid, 'execute') THEN - RETURN TRUE; - ELSE - RAISE EXCEPTION 'Nonexistent function --> %', _name - USING HINT = 'Please check'; - END IF; - END IF; - IF EXISTS ( - SELECT - has_function_privilege(check_user, p.oid, 'execute') - FROM - pg_catalog.pg_proc p - JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace - WHERE - n.nspname = get_schema_from_str (_name) - AND p.proname = get_entity_from_str (_name)) THEN - RETURN TRUE; -ELSE - RAISE EXCEPTION 'Nonexistent function --> %', _name - USING HINT = 'Please check'; -END IF; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION verify_index(_table text, _index text) RETURNS boolean AS $EOFCODE$ -BEGIN - IF EXISTS ( - SELECT - list_indexes (_table, _index)) THEN - RETURN TRUE; -ELSE - RAISE EXCEPTION 'Nonexistent index --> %', _index - USING HINT = 'Please check'; -END IF; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION verify_membership(_user text, _role text) RETURNS boolean AS $EOFCODE$ -BEGIN - IF EXISTS ( - SELECT - 1 - FROM - list_memberships (_user) - WHERE - rolname = _role) THEN - RETURN TRUE; -ELSE - RAISE EXCEPTION 'Nonexistent member --> %', _user - USING HINT = 'Please check'; -END IF; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION verify_policy(_policy text, _table text) RETURNS boolean AS $EOFCODE$ -BEGIN - IF EXISTS ( - SELECT - 1 - FROM - pg_class p - JOIN pg_catalog.pg_namespace n ON n.oid = p.relnamespace - JOIN pg_policy pol ON pol.polrelid = p.relfilenode - WHERE - pol.polname = _policy - AND relrowsecurity = 'true' - AND relname = get_entity_from_str (_table) - AND nspname = get_schema_from_str (_table)) THEN - RETURN TRUE; -ELSE - RAISE EXCEPTION 'Nonexistent policy or missing relrowsecurity --> %', _policy - USING HINT = 'Please check'; -END IF; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION verify_role(_user text) RETURNS boolean AS $EOFCODE$ -BEGIN - IF EXISTS ( - SELECT - 1 - FROM - pg_roles - WHERE - rolname = _user) THEN - RETURN TRUE; -ELSE - RAISE EXCEPTION 'Nonexistent user --> %', _user - USING HINT = 'Please check'; -END IF; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION verify_schema(_schema text) RETURNS boolean AS $EOFCODE$ -BEGIN - IF EXISTS ( - SELECT - * - FROM - pg_catalog.pg_namespace - WHERE - nspname = _schema) THEN - RETURN TRUE; -ELSE - RAISE EXCEPTION 'Nonexistent schema --> %', _schema - USING HINT = 'Please check'; -END IF; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION verify_security(_table text) RETURNS boolean AS $EOFCODE$ -BEGIN - IF EXISTS ( - SELECT - n.oid, - relname, - n.nspname - FROM - pg_class p - JOIN pg_catalog.pg_namespace n ON n.oid = p.relnamespace - WHERE - relrowsecurity = 'true' - AND relname = get_entity_from_str (_table) - AND nspname = get_schema_from_str (_table)) THEN - RETURN TRUE; -ELSE - RAISE EXCEPTION 'Nonexistent security --> %', _name - USING HINT = 'Please check'; -END IF; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION verify_table_grant(_table text, _privilege text, _role text) RETURNS boolean AS $EOFCODE$ -BEGIN - IF EXISTS ( - SELECT - grantee, - privilege_type - FROM - information_schema.role_table_grants - WHERE - table_schema = get_schema_from_str (_table) - AND table_name = get_entity_from_str (_table) - AND privilege_type = _privilege - AND grantee = _role) THEN - RETURN TRUE; -ELSE - RAISE EXCEPTION 'Nonexistent table grant --> %', _privilege - USING HINT = 'Please check'; -END IF; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION verify_table(_table text) RETURNS boolean AS $EOFCODE$ -BEGIN - IF EXISTS ( - SELECT - * - FROM - information_schema.tables - WHERE - table_schema = get_schema_from_str (_table) - AND table_name = get_entity_from_str (_table)) THEN - RETURN TRUE; -ELSE - RAISE EXCEPTION 'Nonexistent table --> %', _table - USING HINT = 'Please check'; -END IF; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION verify_trigger(_trigger text) RETURNS boolean AS $EOFCODE$ -BEGIN - IF EXISTS ( - SELECT - pg_trigger.tgname, - n.nspname - FROM - pg_trigger, - pg_catalog.pg_namespace n - WHERE - tgname = get_entity_from_str (_trigger) - AND nspname = get_schema_from_str (_trigger)) THEN - RETURN TRUE; -ELSE - RAISE EXCEPTION 'Nonexistent trigger --> %', _trigger - USING HINT = 'Please check'; -END IF; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION verify_type(_type text) RETURNS boolean AS $EOFCODE$ -BEGIN - IF EXISTS ( - SELECT - pg_type.typname, - n.nspname - FROM - pg_type, - pg_catalog.pg_namespace n - WHERE - typname = get_entity_from_str (_type) - AND nspname = get_schema_from_str (_type)) THEN - RETURN TRUE; -ELSE - RAISE EXCEPTION 'Nonexistent type --> %', _type - USING HINT = 'Please check'; -END IF; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; - -CREATE FUNCTION verify_view(_view text) RETURNS boolean AS $EOFCODE$ -BEGIN - IF EXISTS ( - SELECT - * - FROM - information_schema.views - WHERE - table_schema = get_schema_from_str (_view) - AND table_name = get_entity_from_str (_view)) THEN - RETURN TRUE; -ELSE - RAISE EXCEPTION 'Nonexistent view --> %', _view - USING HINT = 'Please check'; -END IF; -END; -$EOFCODE$ LANGUAGE plpgsql IMMUTABLE; \ No newline at end of file From 6609ba54de67398ecbb83b0038b6812c8c927744 Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Fri, 26 Jun 2026 04:21:58 +0000 Subject: [PATCH 02/12] fix: remove uuid from CI matrix and update lockfile --- .github/workflows/ci.yml | 1 - pnpm-lock.yaml | 14515 ++++++++++++------------------------- 2 files changed, 4491 insertions(+), 10025 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b9eb5b167..ea2c5916b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,6 @@ jobs: - services - jobs - database-jobs - - uuid - types - stamps - geotypes diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d3107a972..f95b3b12c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,25 +1,26 @@ -lockfileVersion: "9.0" +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false importers: + .: devDependencies: - "@types/jest": + '@types/jest': specifier: ^30.0.0 version: 30.0.0 - "@types/jest-in-case": + '@types/jest-in-case': specifier: ^1.0.3 version: 1.0.9 - "@types/node": + '@types/node': specifier: ^22.10.4 version: 22.19.3 - "@typescript-eslint/eslint-plugin": + '@typescript-eslint/eslint-plugin': specifier: ^8.50.1 version: 8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) - "@typescript-eslint/parser": + '@typescript-eslint/parser': specifier: ^8.50.1 version: 8.50.1(eslint@9.39.2)(typescript@5.9.3) eslint: @@ -64,4321 +65,2415 @@ importers: packages/achievements: dependencies: - "@pgpm/jwt-claims": + '@pgpm/jwt-claims': specifier: workspace:* version: link:../jwt-claims - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.23.2 - version: 4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/base32: dependencies: - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.23.2 - version: 4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/database-jobs: dependencies: - "@pgpm/jwt-claims": + '@pgpm/jwt-claims': specifier: workspace:* version: link:../jwt-claims - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.23.2 - version: 4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/defaults: dependencies: - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.23.2 - version: 4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/encrypted-secrets: dependencies: - "@pgpm/encrypted-secrets-table": + '@pgpm/encrypted-secrets-table': specifier: workspace:* version: link:../encrypted-secrets-table - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.23.2 - version: 4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/encrypted-secrets-table: dependencies: - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.23.2 - version: 4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/faker: dependencies: - "@pgpm/types": + '@pgpm/types': specifier: workspace:* version: link:../types - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.23.2 - version: 4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/geotypes: dependencies: - "@pgpm/types": + '@pgpm/types': specifier: workspace:* version: link:../types - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.23.2 - version: 4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/inflection: dependencies: - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.23.2 - version: 4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/inflection-db: dependencies: - "@pgpm/inflection": + '@pgpm/inflection': specifier: workspace:* version: link:../inflection - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.23.2 - version: 4.24.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/jobs: dependencies: - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.23.2 - version: 4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/jwt-claims: dependencies: - "@pgpm/types": + '@pgpm/types': specifier: workspace:* version: link:../types - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.23.2 - version: 4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/ltree-helpers: dependencies: - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.23.2 - version: 4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/measurements: dependencies: - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.23.2 - version: 4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/metaschema-modules: dependencies: - "@pgpm/metaschema-schema": + '@pgpm/metaschema-schema': specifier: workspace:* version: link:../metaschema-schema - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.23.2 - version: 4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/metaschema-schema: dependencies: - "@pgpm/database-jobs": + '@pgpm/database-jobs': specifier: workspace:* version: link:../database-jobs - "@pgpm/inflection": + '@pgpm/inflection': specifier: workspace:* version: link:../inflection - "@pgpm/types": + '@pgpm/types': specifier: workspace:* version: link:../types - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.23.2 - version: 4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/object-store: dependencies: - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.24.3 - version: 4.24.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/object-tree: dependencies: - "@pgpm/object-store": + '@pgpm/object-store': specifier: workspace:* version: link:../object-store - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.24.3 - version: 4.24.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/partman: devDependencies: pgpm: - specifier: ^4.24.3 - version: 4.24.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/services: dependencies: - "@pgpm/metaschema-schema": + '@pgpm/metaschema-schema': specifier: workspace:* version: link:../metaschema-schema - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.23.2 - version: 4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/stamps: dependencies: - "@pgpm/jwt-claims": + '@pgpm/jwt-claims': specifier: workspace:* version: link:../jwt-claims - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.23.2 - version: 4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/totp: dependencies: - "@pgpm/base32": + '@pgpm/base32': specifier: workspace:* version: link:../base32 - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.23.2 - version: 4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/types: dependencies: - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.23.2 - version: 4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/utils: dependencies: - "@pgpm/verify": - specifier: workspace:* - version: link:../verify - devDependencies: - pgpm: - specifier: ^4.23.2 - version: 4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) - - packages/uuid: - dependencies: - "@pgpm/verify": + '@pgpm/verify': specifier: workspace:* version: link:../verify devDependencies: pgpm: - specifier: ^4.16.6 - version: 4.16.6(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages/verify: devDependencies: pgpm: - specifier: ^4.23.2 - version: 4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + specifier: ^4.28.7 + version: 4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) packages: - "@0no-co/graphql.web@1.2.0": - resolution: - { - integrity: sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==, - } + + '@0no-co/graphql.web@1.2.0': + resolution: {integrity: sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 peerDependenciesMeta: graphql: optional: true - "@aws-crypto/crc32@5.2.0": - resolution: - { - integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==, - } - engines: { node: ">=16.0.0" } - - "@aws-crypto/crc32c@5.2.0": - resolution: - { - integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==, - } - - "@aws-crypto/sha1-browser@5.2.0": - resolution: - { - integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==, - } - - "@aws-crypto/sha256-browser@5.2.0": - 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" } - - "@aws-crypto/supports-web-crypto@5.2.0": - resolution: - { - integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==, - } - - "@aws-crypto/util@5.2.0": - resolution: - { - integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==, - } - - "@aws-sdk/client-s3@3.1038.0": - resolution: - { - integrity: sha512-k60qm50bWkaqNfCJe1z28WaqgpztE0wbWVMZw6ZJcTOGfrWFhsJeLCEqtkH8w00iEozKx9GQwdQXz4G0sMGdKA==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/core@3.974.6": - resolution: - { - integrity: sha512-8Vu7zGxu+39ChR/s5J7nXBw3a2kMHAi0OfKT8ohgTVjX0qYed/8mIfdBb638oBmKrWCwwKjYAM5J/4gMJ8nAJA==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/crc64-nvme@3.972.7": - resolution: - { - integrity: sha512-QUagVVBbC8gODCF6e1aV0mE2TXWB9Opz4k8EJFdNrujUVQm5R4AjJa1mpOqzwOuROBzqJU9zawzig7M96L8Ejg==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/credential-provider-env@3.972.32": - resolution: - { - integrity: sha512-7vA4GHg8NSmQxquJHSBcSM3RgB4ZaaRi6u4+zGFKOmOH6aqlgr2Sda46clkZDYzlirgfY96w15Zj0jh6PT48ng==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/credential-provider-http@3.972.34": - resolution: - { - integrity: sha512-vBrhWujFCLp1u8ptJRWYlipMutzPptb8pDQ00rKVH9q67T7rGd3VTWIj63aKrlLuY6qSsw1Rt5F/D/7wnNgryA==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/credential-provider-ini@3.972.36": - resolution: - { - integrity: sha512-FBHyCmV8EB0gUvh1d+CZm87zt2PrdC7OyWexLRoH3I5zWSOUGa+9t58Y5jbxRfwUp3AWpHAFvKY6YzgR845sVA==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/credential-provider-login@3.972.36": - resolution: - { - integrity: sha512-IFap01lJKxQc0C/OHmZwZQr/cKq0DhrcmKedRrdnnl42D+P0SImnnnWQjv07uIPqpEdtqmkPXb9TiPYTU+prxQ==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/credential-provider-node@3.972.37": - resolution: - { - integrity: sha512-/WFixFAAiw8WpmjZcI0l4t3DerXLmVinOIfuotmRZnu2qmsFPoqqmstASz0z8bi1pGdFXzeLzf6bwucM3mZcUQ==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/credential-provider-process@3.972.32": - resolution: - { - integrity: sha512-uZp4tlGbpczV8QxmtIwOpSkcyGtBRR8/T4BAumRKfAt1nwCig3FSCZvrKl6ARDIDVRYn5p2oRcAsfFR01EgMGA==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/credential-provider-sso@3.972.36": - resolution: - { - integrity: sha512-DsLr0UHMyKzRJKe2bjlwU8q1cfoXg8TIJKV/xwvnalAemiZLOZunFzj/whGnFDZIBVLdnbLiwv5SvRf1+CSwkg==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/credential-provider-web-identity@3.972.36": - resolution: - { - integrity: sha512-uzrURO7frJhHQVVNR5zBJcCYeMYflmXcWBK1+MiBym2Dfjh6nXATrMixrmGZi+97Q7ETZ+y/4lUwAy0Nfnznjw==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/lib-storage@3.1038.0": - resolution: - { - integrity: sha512-FEGuFSUL9gNfyWf4KcOgzhLiqQgSSvpML3YPnJbj8k2nSKdgyRznXxg8zd4W+NKoVehtNqXwFBvMXeHyOYlOrg==, - } - engines: { node: ">=20.0.0" } - peerDependencies: - "@aws-sdk/client-s3": ^3.1038.0 - - "@aws-sdk/middleware-bucket-endpoint@3.972.10": - resolution: - { - integrity: sha512-Vbc2frZH7wXlMNd+ZZSXUEs/l1Sv8Jj4zUnIfwrYF5lwaLdXHZ9xx4U3rjUcaye3HRhFVc+E5DbBxpRAbB16BA==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/middleware-expect-continue@3.972.10": - resolution: - { - integrity: sha512-2Yn0f1Qiq/DjxYR3wfI3LokXnjOhFM7Ssn4LTdFDIxRMCE6I32MAsVnhPX1cUZsuVA9tiZtwwhlSLAtFGxAZlQ==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/middleware-flexible-checksums@3.974.14": - resolution: - { - integrity: sha512-mhTO3amGzYv/DQNbbqZo6UkHquBHlEEVRZwXmjeRqLmy1l9z3xCiFzglPL7n9JpVc2DZc9kjaraAn3JQrueZbw==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/middleware-host-header@3.972.10": - resolution: - { - integrity: sha512-IJSsIMeVQ8MMCPbuh1AbltkFhLBLXn7aejzfX5YKT/VLDHn++Dcz8886tXckE+wQssyPUhaXrJhdakO2VilRhg==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/middleware-location-constraint@3.972.10": - resolution: - { - integrity: sha512-rI3NZvJcEvjoD0+0PI0iUAwlPw2IlSlhyvgBK/3WkKJQE/YiKFedd9dMN2lVacdNxPNhxL/jzQaKQdrGtQagjQ==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/middleware-logger@3.972.10": - resolution: - { - integrity: sha512-OOuGvvz1Dm20SjZo5oEBePFqxt5nf8AwkNDSyUHvD9/bfNASmstcYxFAHUowy4n6Io7mWUZ04JURZwSBvyQanQ==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/middleware-recursion-detection@3.972.11": - resolution: - { - integrity: sha512-+zz6f79Kj9V5qFK2P+D8Ehjnw4AhphAlCAsPjUqEcInA9umtSSKMrHbSagEeOIsDNuvVrH98bjRHcyQukTrhaQ==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/middleware-sdk-s3@3.972.35": - resolution: - { - integrity: sha512-lLppaNTAz+wNgLdi4FtHzrlwrGF0ODTnBWHBaFg85SKs0eJ+M+tP5ifrA8f/0lNd+Ak3MC1NGC6RavV3ny4HTg==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/middleware-ssec@3.972.10": - resolution: - { - integrity: sha512-Gli9A0u8EVVb+5bFDGS/QbSVg28w/wpEidg1ggVcSj65BDTdGR6punsOcVjqdiu1i42WHWo51MCvARPIIz9juw==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/middleware-user-agent@3.972.36": - resolution: - { - integrity: sha512-O2beToxguBvrZFFZ+fFgPbbae8MvyIBjQ6lImee4APHEXXNAD5ZJ2ayLF1mb7rsKw86TM81y5czg82bZncjSjg==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/nested-clients@3.997.4": - resolution: - { - integrity: sha512-4Sf+WY1lMJzXlw5MiyCMe/UzdILCwvuaHThbqMXS6dfh9gZy3No360I42RXquOI/ULUOhWy2HCyU0Fp20fQGPQ==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/region-config-resolver@3.972.13": - resolution: - { - integrity: sha512-CvJ2ZIjK/jVD/lbOpowBVElJyC1YxLTIJ13yM0AEo0t2v7swOzGjSA6lJGH+DwZXQhcjUjoYwc8bVYCX5MDr1A==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/s3-request-presigner@3.1038.0": - resolution: - { - integrity: sha512-2PNCm+2Mx8v2GKRREKMS3PavahzRhmMMJjuJxUpLneQV4w3oMs2bpme62oU6l+hip1pyeyPimWHeabjhaURocw==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/signature-v4-multi-region@3.996.23": - resolution: - { - integrity: sha512-wBbys3Y53Ikly556vyADurKpYQHXS7Jjaskbz+Ga9PZCz7PB/9f3VdKbDlz7dqIzn+xwz7L/a6TR4iXcOi8IRw==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/token-providers@3.1038.0": - resolution: - { - integrity: sha512-Qniru+9oGGb/HNK/gGZWbV3jsD0k71ngE7qMQ/x6gYNYLd2EOwHCS6E2E6jfkaqO4i0d+nNKmfRy8bNcshKdGQ==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/types@3.973.8": - resolution: - { - integrity: sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/util-arn-parser@3.972.3": - resolution: - { - integrity: sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/util-endpoints@3.996.8": - resolution: - { - integrity: sha512-oOZHcRDihk5iEe5V25NVWg45b3qEA8OpHWVdU/XQh8Zj4heVPAJqWvMphQnU7LkufmUo10EpvFPZuQMiFLJK3g==, - } - engines: { node: ">=20.0.0" } - - "@aws-sdk/util-format-url@3.972.10": - resolution: - { - integrity: sha512-DEKiHNJVtNxdyTeQspzY+15Po/kHm6sF0Cs4HV9Q2+lplB63+DrvdeiSoOSdWEWAoO2RcY1veoXVDz2tWxWCgQ==, - } - 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" } - - "@aws-sdk/util-user-agent-browser@3.972.10": - resolution: - { - integrity: sha512-FAzqXvfEssGdSIz8ejatan0bOdx1qefBWKF/gWmVBXIP1HkS7v/wjjaqrAGGKvyihrXTXW00/2/1nTJtxpXz7g==, - } - - "@aws-sdk/util-user-agent-node@3.973.22": - resolution: - { - integrity: sha512-YTYqTmOUrwbm1h99Ee4y/mVYpFRl0oSO/amtP5cc1BZZWdaAVWs9zj3TkyRHWvR9aI/ZS8m3mS6awXtYUlWyaw==, - } - engines: { node: ">=20.0.0" } + '@agentic-kit/ollama@2.1.0': + resolution: {integrity: sha512-efVpUKClvIl4POsvty57VoZPEnEK0kMjy2o2hlaOgh4YKb6yCq6ZTSEoRvQ+IHcFHPIXmdt7b7ciUkaBbTW02A==} + + '@agentic-kit/protocol@1.2.0': + resolution: {integrity: sha512-oPP/N0ZbyjetqlY6cxErVX7nKYQCTbveqmOAfwEB4zaSQsdOlPABUX87Ll4yKvTfbmABLzqEN2sz5jxVIFGPyA==} + + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/crc32c@5.2.0': + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + + '@aws-crypto/sha1-browser@5.2.0': + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + + '@aws-crypto/sha256-browser@5.2.0': + 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'} + + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/checksums@3.1000.8': + resolution: {integrity: sha512-v0U9S7gBIme3OTgt1LdbAF4RpvavCc+4GK1+1xqAcqtbrHsEhjQo6R45LKcjhs/+WrRJij1Y0Gztw7QPAIeUfA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/client-s3@3.1075.0': + resolution: {integrity: sha512-h1A6nIl1YX6Y45enGsTK7ef3ZrOnBiQJ1qF5R2K/nMWfsu6A9mc2Y5T66nxerABzyjjyyvign3MrzafnFoQKmA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/core@3.974.23': + resolution: {integrity: sha512-MiWR/uWjxjFXGzrE0Ghc5lWxUxzHsUWFhV+OX7M4cR9SrmrnZs6TXavnCWnzzdwJeFri34xQo81rvGNzK3c4BQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-env@3.972.49': + resolution: {integrity: sha512-liB3yQNHCM9k/gu/w36XHMKPluT7HTlnGUhRbBGSISDQkcr/Sy1zsZabiuvQj8WG5yW573u9RehrBvvnIQ9OEQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-http@3.972.51': + resolution: {integrity: sha512-XET0H2oofciJ5lMRWNIvRjAP7Q3wv2XT+JtJJEdhPWUMwe3TvQ9qcxonpu7vXmNngncvFpi4E2It+Tamas/naA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-ini@3.972.56': + resolution: {integrity: sha512-IAmc61hbgQiHht9U3x0tnRwz0lzdwOwD/i9voRgdJrKamF+JtmrBOsW9GwB7mfFonNWOWL4qARWYrF8veEMe3w==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-login@3.972.55': + resolution: {integrity: sha512-hBBkANo3cDn+h2qxxzER4a+J8JCO9o9Z/YYmU7iky6AcaarX5RRdRcHNC6SLdwY0vAXQygn6soUbDqPn3GghaA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-node@3.972.58': + resolution: {integrity: sha512-OyCLVmSI7pZO8hxwNVX6pXhTVlJqRBTp+ijdEfJSUj0RyjHnF602OfAarOzGq6wkGodeFkYBt8MmJ6A6ycRgWw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-process@3.972.49': + resolution: {integrity: sha512-C8h36lBuC/RnBSsjlO+dn6xZm3KbAl5vpJaVPAfQnMmz2/OISmKOc8XZcqMQgO2ADwBYNRMM6Kf3vz9G/TulMQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-sso@3.972.55': + resolution: {integrity: sha512-1FkOz74Ea5QGS9jtIoXp55T/IkSS3spv+nLTT07fRY/+T5xmEOqaYBVIaEmX4zTNvbV6g2lrtlaVKWEoNyJt3w==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.972.55': + resolution: {integrity: sha512-g2BoECD1q01kTPByi56+VLVvdWDzMkKIcr77qixpqH0okw2t0U5CoPv+6S8v/D1Y2Wa6QKKtn6XAtDzP+Kfpvg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/lib-storage@3.1075.0': + resolution: {integrity: sha512-Npdac3/Fv994iCdFFeqloPel+95Zv6dRiRUpfey6W/CqpB/QdnYP60U4YBhBgJj6V5020Pm3ad0HV4WzCE5hHQ==} + engines: {node: '>=20.0.0'} peerDependencies: - aws-crt: ">=1.0.0" - peerDependenciesMeta: - aws-crt: - optional: true + '@aws-sdk/client-s3': ^3.1075.0 + + '@aws-sdk/middleware-flexible-checksums@3.974.33': + resolution: {integrity: sha512-qMgQSPemQq2/eW/e/0+SpY4kYR5L7dUgBiVdEc5bd+ztHNv07ZMYiI+sTiir3TgKndFfglSw/VFi7oZJ6bZ63g==} + engines: {node: '>=20.0.0'} - "@aws-sdk/xml-builder@3.972.21": - resolution: - { - integrity: sha512-qxNiHUtlrsjTeSlrPWiFkWps7uD6YB4eKzg7eLAFH8jbiHTlt0ePNlo2Xu+WlftP38JIcMaIX4jTUjOlE2ySWw==, - } - 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" } - - "@babel/code-frame@7.27.1": - resolution: - { - integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==, - } - engines: { node: ">=6.9.0" } - - "@babel/compat-data@7.28.5": - resolution: - { - integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==, - } - engines: { node: ">=6.9.0" } - - "@babel/core@7.28.5": - resolution: - { - integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==, - } - engines: { node: ">=6.9.0" } - - "@babel/generator@7.28.5": - resolution: - { - integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-compilation-targets@7.27.2": - resolution: - { - integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-globals@7.28.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" } - - "@babel/helper-module-transforms@7.28.3": - resolution: - { - integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==, - } - engines: { node: ">=6.9.0" } + '@aws-sdk/middleware-sdk-s3@3.972.54': + resolution: {integrity: sha512-GDfDQ0gwLFRKN9gWIKcmVrHJ3e7XagnY7N1LLzMVNgnOnuY7f/ALgmy3CuBjosWD95T/Z6e+gs1IeWmLPkyLKQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/nested-clients@3.997.23': + resolution: {integrity: sha512-gO93ZPsI2bxeFZD42f1/qjDw6FAZkNZcKRO94LIiT03fzOmcJ9e/tunxjVjA1Rl69ClmVJzz8H3G9CdKef10PA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/s3-request-presigner@3.1075.0': + resolution: {integrity: sha512-++ftTvAGZSTuzFVHEPk8lLi7mybBD8PzJ9USWBvwnE4kSrXOyqYVJ5Ixd06xUEWS/xsrhpkI07mzCLGIxrRymA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.996.35': + resolution: {integrity: sha512-6L/VWs+Wch2stHemCGTmUNqKLMzURxQDK5boNG3Jn3kAOp71meDUuS5sbObpEvFxHDq0uWeSLFDNSYsjNt+Dlg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/token-providers@3.1074.0': + resolution: {integrity: sha512-pv80IzgGW4RnXWtft692chZOM9i6PhebVsLCcnaM4dBEPZva2fE6FXAHs76G7Rc7s3yGyX/68G0nZMrUy+Vmpg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/types@3.973.13': + resolution: {integrity: sha512-pEHZqRkAlHfnfAU9tK+WpKv/gBNjGJrHMgA3A0iYRGyswBS2t0pfez+lWlwktb3Bqa0ovh7w/QJTFwp3fDxLNg==} + 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'} + + '@aws-sdk/xml-builder@3.972.31': + resolution: {integrity: sha512-SzE4Pgyl+hDF+BuyuzxUSpwnuUu9lJuO1YGgteG89/4Qv0+2IQiVQqdbPV32IozLvXWQChPQcdkk/sKvb1QHiQ==} + 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'} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.28.5': + resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.28.5': + resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.28.5': + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.28.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'} + + '@babel/helper-module-transforms@7.28.3': + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + 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" } - - "@babel/helper-string-parser@7.27.1": - 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" } - - "@babel/helper-validator-option@7.27.1": - resolution: - { - integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==, - } - engines: { node: ">=6.9.0" } - - "@babel/helpers@7.28.4": - resolution: - { - integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==, - } - engines: { node: ">=6.9.0" } - - "@babel/parser@7.28.5": - resolution: - { - integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==, - } - engines: { node: ">=6.0.0" } + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + 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'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.28.4': + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.5': + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + engines: {node: '>=6.0.0'} hasBin: true - "@babel/plugin-syntax-async-generators@7.8.4": - resolution: - { - integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==, - } + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-bigint@7.8.3": - resolution: - { - integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==, - } + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-class-properties@7.12.13": - resolution: - { - integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==, - } + '@babel/plugin-syntax-class-properties@7.12.13': + 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" } + '@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'} peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-import-attributes@7.27.1": - resolution: - { - integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==, - } - engines: { node: ">=6.9.0" } + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.27.1': + resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-import-meta@7.10.4": - resolution: - { - integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==, - } + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-json-strings@7.8.3": - resolution: - { - integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==, - } + '@babel/plugin-syntax-json-strings@7.8.3': + 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" } + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.27.1': + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-logical-assignment-operators@7.10.4": - resolution: - { - integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==, - } + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-nullish-coalescing-operator@7.8.3": - resolution: - { - integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==, - } + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-numeric-separator@7.10.4": - resolution: - { - integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==, - } + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-object-rest-spread@7.8.3": - resolution: - { - integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==, - } + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-optional-catch-binding@7.8.3": - resolution: - { - integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==, - } + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-optional-chaining@7.8.3": - resolution: - { - integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==, - } + '@babel/plugin-syntax-optional-chaining@7.8.3': + 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" } + '@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'} 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" } + '@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'} peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-typescript@7.27.1": - resolution: - { - integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==, - } - engines: { node: ">=6.9.0" } + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.5': + resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.5': + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@constructive-io/bucket-provisioner@0.12.0': + resolution: {integrity: sha512-UrNTa+f3K8nq9TJ5o9ax56JLTPYcqsJtpvZXGo1d5K8lm1ND47mW5M2v+OWIb0uifK6iR4h/oKo9U7Mu8INtOA==} + + '@constructive-io/content-type-stream@2.18.0': + resolution: {integrity: sha512-uGk8gUk1EMBxB/pt/3N6dwt3Muy6/2RWEJ3MqObRNx9/iIzYP1Ko163cW5JrU5riS9Dp0efMYWMFM2BDZb/SLg==} + + '@constructive-io/express-context@0.6.1': + resolution: {integrity: sha512-md9/MUCGIiXIJM6IYdwefMMFwcj4ZWHJ0T0v2uxz+//mqSps+xAr5X44qcC50EdRLoWS+Gs3QT38rv1lweh2dA==} peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/template@7.27.2": - resolution: - { - integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==, - } - engines: { node: ">=6.9.0" } - - "@babel/traverse@7.28.5": - resolution: - { - integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==, - } - engines: { node: ">=6.9.0" } - - "@babel/types@7.28.5": - resolution: - { - integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==, - } - engines: { node: ">=6.9.0" } - - "@bcoe/v8-coverage@0.2.3": - resolution: - { - integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==, - } - - "@constructive-io/bucket-provisioner@0.10.1": - resolution: - { - integrity: sha512-X8SrgAf+4UmjhMmj8zFdiGG/UwyFTw6LUNkOy9iTLVghvj0xBbIFoSEaZ7ETr3zOunWtN49VuuQHs+f3QdSDsA==, - } - - "@constructive-io/bucket-provisioner@0.11.0": - resolution: - { - integrity: sha512-ibtHGh9p97PqAH1ZPG1Jq5n5kT1SLnU+BuB6nZ/FLT/eSfL1C0LTJewWbQ8Yt8/eVxkw6h8PhQFyYYSY9z/k8g==, - } - - "@constructive-io/bucket-provisioner@0.4.1": - resolution: - { - integrity: sha512-mXM59a0vc4ETyaEJL0RD2vfrzi79BGzVa/G+RHlftsTqnh4QecAAmfvlbRYGxotJUXGU5cwZuHyc8pCFWsgAnw==, - } - - "@constructive-io/content-type-stream@2.12.0": - resolution: - { - integrity: sha512-9MXwSDMoz8j4zb10qBxVerZdUYv4MBHqH8l+ii1cYGzFToaIrYuLhShbJkIQVuclMII4QTSSA5obNyaIpaEcDg==, - } - - "@constructive-io/content-type-stream@2.16.1": - resolution: - { - integrity: sha512-4P84BYpWpb+zkiJd/g/WSGetHJvTDSAt2f/tC/CH3KHV8moCmi9KfLc30CpCrb6DI0TpY8YX1VjnK/4t9+WsPg==, - } - - "@constructive-io/content-type-stream@2.17.0": - resolution: - { - integrity: sha512-aSESj1qxK7YJCKfOSmcn7UYkW5PWG2pjLIw9Dy/W0P2wVj/k/K6sdHX3ypF040A7JzAQ3jwefbqCTDt7ivkVNQ==, - } - - "@constructive-io/fetch@1.0.0": - resolution: - { - integrity: sha512-4W2lnDOzFiYRBLNit4wzSHFZu8eO68W6RIxBApwFIhChGfgdMwI9H68Ant3B9CXnIhxq4peY3mSCC2krS67ojw==, - } - - "@constructive-io/graphql-env@3.10.1": - resolution: - { - integrity: sha512-sfcjvxr1BTAzAnSIIRYGzLdQKe6r1HSMyFLzaS12fjQX05jynZ/y7MMu6E6DAOpHz2L3ozVwykSRUZ5ZaBl5+Q==, - } - - "@constructive-io/graphql-env@3.11.0": - resolution: - { - integrity: sha512-ZJYtz+DrYmM2UJVZ/ofAjubkFmAesfQsOMJrDqjQV+BiMWP/WYkftgvznm1Z75xIj4zYHvSezbzglDrIaFmtBg==, - } - - "@constructive-io/graphql-env@3.6.1": - resolution: - { - integrity: sha512-EbAmetjYNzqsFem0D11Nr0+poLWWPX33D4fL2HHestyKE1bgtVC1kyuUjrJh20IVEhSHREI1H526UuqEqAHlRg==, - } - - "@constructive-io/graphql-query@3.15.3": - resolution: - { - integrity: sha512-0mZZUA0PRk8gDu9APCA3LtUKKHFTKjHKgyJ67wbIVDA3EL/JkDOjwQPfU5oHNMTkgyFMikz+Nn1kLNpZOmkA+g==, - } - - "@constructive-io/graphql-query@3.23.2": - resolution: - { - integrity: sha512-9LVUkgFmNHEDN/1GUanesay06ifMLx8PdLzlki5pFUH44IgQX8vQ3OW227gXFjQF/F6l/7y55aVBXLDITFacqA==, - } - - "@constructive-io/graphql-query@3.25.3": - resolution: - { - integrity: sha512-nJkceFLYXtb7J+ACk1HTpqt+RGCB5UArxDaJEZW639YEh+tppNwQiUAb9FImObNVpuBSVUjHj0/3vwPK3iK6hQ==, - } - - "@constructive-io/graphql-types@3.10.0": - resolution: - { - integrity: sha512-AIexkXBxM7xFtrsSWhp9fl/2et06ERA6uu6Rh6m1zvHiqBGVOk8irfD5rJzj8yLun8qsYPAIhXo9Tk5sGz+FVA==, - } - - "@constructive-io/graphql-types@3.5.1": - resolution: - { - integrity: sha512-rJIBMkJ2cX1l58X3qGruoSKUtuPv2GhE/zYn6L10GvIT9d6/JAR8gk+zEMzsI5CC2GK6BT5XhNy9fg14p73amA==, - } - - "@constructive-io/graphql-types@3.9.1": - resolution: - { - integrity: sha512-2F9LlB+HssV/WSMSK9RLQK3mlPSHI+y42+nsE1LgQt5gIDMjVITf97Dx5ig0zOR1CHsl05Hc6BlDTieQfGOf5A==, - } - - "@constructive-io/s3-streamer@2.19.1": - resolution: - { - integrity: sha512-BL1R+/xpDugQHZ/RQp/inpVZ0P4q6k3AwhifW4WcqyDuPcTrej2Rddx52hLxeLnMhoLvgi4ZFSTTcO9GoOwIDA==, - } - - "@constructive-io/s3-streamer@2.23.1": - resolution: - { - integrity: sha512-J9LyzoPx5SZMtwRNxBPDvKfFlydGEbVJmsgHTtyXdO1fmZBibboeBaC4OCqI70E0TPh0qxGaHOXhQLomxKWbuQ==, - } - - "@constructive-io/s3-streamer@2.24.0": - resolution: - { - integrity: sha512-0/rPY0FccYu8WUxORJHiD73EDED34ukSbii2wXxl5DJKnpJPlWTCjvIrN8vozjAVA/vqctusBPWzKW0KDSMRCg==, - } - - "@constructive-io/s3-utils@2.12.1": - resolution: - { - integrity: sha512-+nVn1v1/mCj918yi0uvwO1xw1q/ve3CGy5PUHIk1rNFTWk2tz1RSnFEiRp/6/vGLF3CInwL3IvWwEzvW3pHb1w==, - } - - "@constructive-io/s3-utils@2.16.1": - resolution: - { - integrity: sha512-POv+0ijOowHbi1tUqDk/ZMdeB0EXUsV3w4QGtf/3osEuV2tBb7B0Sr/dxndZjkiJO2F8VOshbOjO9XJKEwgMfA==, - } - - "@constructive-io/s3-utils@2.17.0": - resolution: - { - integrity: sha512-qK4F81W/+AOSWoL9eIdxrGVkLgAtRm5YJlqW8Pk9KvtDFsx/6rmULqm4LyWrm39fL0M3qAQ8FBlvGJtHK60U/w==, - } - - "@constructive-io/upload-names@2.11.0": - resolution: - { - integrity: sha512-2brqcyr5YCbo/6cteQcgZIE54XsjJO4cnGhSyqlz8c1YzFXNLOt1KFQ8eZRheAevQOYe7zxbrIEy0y7AGN1adg==, - } - - "@constructive-io/upload-names@2.15.1": - resolution: - { - integrity: sha512-UaQtXxBlYuTwmpbuNOMd0qXkZBz45WHY/d0QL2WweLdyc9GqJ9QDbypHIeQqxx3fJBtd+5p11gYoDwC0Gplh7w==, - } - - "@constructive-io/upload-names@2.16.0": - resolution: - { - integrity: sha512-fAtIKwGzxzxZAk+eKPX7RxBrIaA6lEXNWVmYi1mjE5YMdBA6i6aGjRInXcPrW/MRo7jMPispQhEqLPkL8rBEsA==, - } - - "@cspotcode/source-map-support@0.8.1": - 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" } + express: ^5.0.0 + + '@constructive-io/fetch@1.1.1': + resolution: {integrity: sha512-kpus6sqQwMUTBNpqYvSejG27HJXDucV+BQUNUg3T5U92Qy94Q6of7OhbovICteDMmgcRKCdc5S2e2pXnIY8L5A==} + + '@constructive-io/graphql-env@3.13.1': + resolution: {integrity: sha512-vdZrC4PqSlbbipyoBnNWzPn+8dw8ZeN8gk2FIQnDfvhCFGNCPqwFaUwCbfottXEF83YhaOf0XaD14m+xTOhwGw==} + + '@constructive-io/graphql-query@3.27.11': + resolution: {integrity: sha512-FGtQGTqZUuFOB9zNOZUT7cOq2zxPacsJwkadlJVC4P+5BX1SZFqf3Qo4t2VThbgwivwpswIUAiC3WPvi6BxetQ==} + + '@constructive-io/graphql-types@3.12.1': + resolution: {integrity: sha512-DCWKJPgtsU3KtoPM1ppduMQi5aUZuxc/YvEftwHz8wFxju2YgEbvxZIaJevAkoP9+3c1ZS9gwurs6tIlHKoVvQ==} + + '@constructive-io/llm-env@0.1.1': + resolution: {integrity: sha512-8vDbz1BLyrQZg2jrW3OozSjwqfK3zJRL5LzCt7x8YOaI+gLfAP+FRZ5bKsu4Ki1dbEzg7g6aJJYHlGZ/8iyjfA==} + + '@constructive-io/s3-streamer@2.26.1': + resolution: {integrity: sha512-tnX0BnKzKF1At14MgzuZS8ltx9X+eVkIIxOyvGSLyNSETOPBs9hMbeKKIx0NFleZP8dZ7D4MhXdi7/3UCxxAOw==} + + '@constructive-io/s3-utils@2.18.0': + resolution: {integrity: sha512-7sgqBBlFBO1cZqLRSNk9zlKSAaaImI+LRsG6DOay+VPkmtZU4qr65NV47gVEwzTMb6SEFSrJnNBDTGe/M0CM4A==} + + '@constructive-io/upload-names@2.17.0': + resolution: {integrity: sha512-TCz1aNusrt9n56LKHGS+sjlyadrUIreBp+er/O5GnXZyRRJHtRV79wwQeRqIiQKrGV5k5TsBjwOXnaPgJywSDA==} + + '@constructive-io/url-domains@2.17.0': + resolution: {integrity: sha512-/iRG7gdRCl6jx01NQ4tgrA6LeX5JBKFtqviZeHrtoYDJJiU9cJhgGKWobSkdxMfnbAt9WJe4Pu42r+H0BleZYw==} + + '@cspotcode/source-map-support@0.8.1': + 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'} peerDependencies: grafast: ^1.0.0-rc.8 - "@dataplan/pg@1.0.0": - resolution: - { - integrity: sha512-Nl4cdQWgdl86u78K1FjQtvH+AyH5ToDb9hYxN99Hu8T+ip6a6B3i3Ho0nRlBccUWYHx+p92Kh70sDXCJ3Fpmnw==, - } - engines: { node: ">=22" } + '@dataplan/pg@1.0.3': + resolution: {integrity: sha512-DdgPF+Mg8KntTAC5lW/4w34s74NLCgBgpbw3+PtBhi2QC66acD7noVWZAgzUx/ATouLE9gUiKqHnva89vcNEjA==} + engines: {node: '>=22'} peerDependencies: - "@dataplan/json": ^1.0.0 - grafast: ^1.0.0 + '@dataplan/json': ^1.0.0 + grafast: ^1.0.2 graphile-config: ^1.0.0-rc.5 graphql: ^16.9.0 pg: ^8.7.1 - pg-sql2: ^5.0.0 + pg-sql2: ^5.0.1 peerDependenciesMeta: pg: optional: true - "@emnapi/core@1.7.1": - resolution: - { - integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==, - } - - "@emnapi/runtime@1.7.1": - resolution: - { - integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==, - } - - "@emnapi/wasi-threads@1.1.0": - resolution: - { - integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==, - } - - "@emotion/is-prop-valid@1.4.0": - resolution: - { - integrity: sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==, - } - - "@emotion/memoize@0.9.0": - resolution: - { - integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==, - } - - "@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 } + '@emnapi/core@1.7.1': + resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} + + '@emnapi/runtime@1.7.1': + resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} + + '@emnapi/wasi-threads@1.1.0': + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + + '@emotion/is-prop-valid@1.4.0': + resolution: {integrity: sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==} + + '@emotion/memoize@0.9.0': + resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} + + '@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} 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 } - - "@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 } - - "@eslint/config-helpers@0.4.2": - 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 } - - "@eslint/eslintrc@3.3.3": - 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 } - - "@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 } - - "@eslint/plugin-kit@0.4.1": - 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==, - } - - "@floating-ui/dom@1.7.6": - resolution: - { - integrity: sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==, - } - - "@floating-ui/react-dom@2.1.8": - resolution: - { - integrity: sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==, - } + '@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} + + '@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} + + '@eslint/config-helpers@0.4.2': + 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} + + '@eslint/eslintrc@3.3.3': + 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} + + '@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} + + '@eslint/plugin-kit@0.4.1': + 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==} + + '@floating-ui/dom@1.7.6': + resolution: {integrity: sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==} + + '@floating-ui/react-dom@2.1.8': + 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==, - } + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/react@0.26.28': + 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==, - } - - "@graphile-contrib/pg-many-to-many@2.0.0-rc.2": - 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" } - - "@graphiql/plugin-doc-explorer@0.4.1": - resolution: - { - integrity: sha512-+ram1dDDGMqJn/f9n5I8E6grTvxcM9JZYt/HhtYLuCvkN8kERI6/E3zBHBshhIUnQZoXioZ03fAzXg7JOn0Kyg==, - } + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.11': + 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'} + + '@graphile/lru@5.0.0': + resolution: {integrity: sha512-NeRBDdUd/l4H284HrYL2/wNHv/FmW5stAMPFAiBZanLHwq9J3suZTtyN5CwTxUFA/vgqzu0B1/9XtIEaJYEKig==} + engines: {node: '>=22'} + + '@graphiql/plugin-doc-explorer@0.4.1': + resolution: {integrity: sha512-+ram1dDDGMqJn/f9n5I8E6grTvxcM9JZYt/HhtYLuCvkN8kERI6/E3zBHBshhIUnQZoXioZ03fAzXg7JOn0Kyg==} peerDependencies: - "@graphiql/react": ^0.37.0 + '@graphiql/react': ^0.37.0 graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 react: ^18 || ^19 react-compiler-runtime: 19.1.0-rc.1 react-dom: ^18 || ^19 - "@graphiql/plugin-history@0.4.1": - resolution: - { - integrity: sha512-UyGI/Nm5tzKNMB71li41p6TfkthLqHkmNi9CgHzAM1zKgPIrtSq7Q8WCWKHLOEB5n4/8X8sXFeyQfHgnGYTXYg==, - } + '@graphiql/plugin-history@0.4.1': + resolution: {integrity: sha512-UyGI/Nm5tzKNMB71li41p6TfkthLqHkmNi9CgHzAM1zKgPIrtSq7Q8WCWKHLOEB5n4/8X8sXFeyQfHgnGYTXYg==} peerDependencies: - "@graphiql/react": ^0.37.0 + '@graphiql/react': ^0.37.0 react: ^18 || ^19 react-compiler-runtime: 19.1.0-rc.1 react-dom: ^18 || ^19 - "@graphiql/react@0.37.3": - resolution: - { - integrity: sha512-rNJjwsYGhcZRdZ2FnyU6ss06xQaZ4UordyvOhp7+b/bEqQiEBpMOLJjuUr48Z6T7zEbZBnzCJpIJyXNqlcfQeA==, - } + '@graphiql/react@0.37.3': + resolution: {integrity: sha512-rNJjwsYGhcZRdZ2FnyU6ss06xQaZ4UordyvOhp7+b/bEqQiEBpMOLJjuUr48Z6T7zEbZBnzCJpIJyXNqlcfQeA==} peerDependencies: graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 react: ^18 || ^19 react-compiler-runtime: 19.1.0-rc.1 react-dom: ^18 || ^19 - "@graphiql/toolkit@0.11.3": - resolution: - { - integrity: sha512-Glf0fK1cdHLNq52UWPzfSrYIJuNxy8h4451Pw1ZVpJ7dtU+tm7GVVC64UjEDQ/v2j3fnG4cX8jvR75IvfL6nzQ==, - } + '@graphiql/toolkit@0.11.3': + resolution: {integrity: sha512-Glf0fK1cdHLNq52UWPzfSrYIJuNxy8h4451Pw1ZVpJ7dtU+tm7GVVC64UjEDQ/v2j3fnG4cX8jvR75IvfL6nzQ==} peerDependencies: graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 - graphql-ws: ">= 4.5.0" + graphql-ws: '>= 4.5.0' peerDependenciesMeta: graphql-ws: optional: true - "@headlessui/react@2.2.10": - resolution: - { - integrity: sha512-5pVLNK9wlpxTUTy9GpgbX/SdcRh+HBnPktjM2wbiLTH4p+2EPHBO1aoSryUCuKUIItdDWO9ITlhUL8UnUN/oIA==, - } - engines: { node: ">=10" } + '@headlessui/react@2.2.10': + resolution: {integrity: sha512-5pVLNK9wlpxTUTy9GpgbX/SdcRh+HBnPktjM2wbiLTH4p+2EPHBO1aoSryUCuKUIItdDWO9ITlhUL8UnUN/oIA==} + 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" } - - "@humanfs/node@0.16.7": - 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" } - - "@humanwhocodes/retry@0.4.3": - 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" } - - "@inquirer/external-editor@1.0.3": - resolution: - { - integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==, - } - engines: { node: ">=18" } + '@humanfs/core@0.19.1': + 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'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + 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'} + + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} + engines: {node: '>=18'} peerDependencies: - "@types/node": ">=18" + '@types/node': '>=18' peerDependenciesMeta: - "@types/node": + '@types/node': optional: true - "@inquirerer/utils@3.3.7": - resolution: - { - integrity: sha512-L1M/fwb9VqbYQLorOWw2hgZk2LW4dZ4YsvIj3SJQWNPMmdcDDHDE2wkFK+KT/kh23aGUS7ISM/b0TIiyKeeQQA==, - } - - "@internationalized/date@3.12.1": - resolution: - { - integrity: sha512-6IedsVWXyq4P9Tj+TxuU8WGWM70hYLl12nbYU8jkikVpa6WXapFazPUcHUMDMoWftIDE2ILDkFFte6W2nFCkRQ==, - } - - "@internationalized/number@3.6.6": - resolution: - { - integrity: sha512-iFgmQaXHE0vytNfpLZWOC2mEJCBRzcUxt53Xf/yCXG93lRvqas237i3r7X4RKMwO3txiyZD4mQjKAByFv6UGSQ==, - } - - "@internationalized/string@3.2.8": - resolution: - { - integrity: sha512-NdbMQUSfXLYIQol5VyMtinm9pZDciiMfN7RtmSuSB78io1hqwJ0naYfxyW6vgxWBkzWymQa/3uLDlbfmshtCaA==, - } - - "@isaacs/cliui@8.0.2": - resolution: - { - integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==, - } - engines: { node: ">=12" } - - "@isaacs/string-locale-compare@1.1.0": - resolution: - { - integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==, - } - - "@istanbuljs/load-nyc-config@1.1.0": - resolution: - { - integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==, - } - engines: { node: ">=8" } - - "@istanbuljs/schema@0.1.3": - resolution: - { - integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==, - } - engines: { node: ">=8" } - - "@jest/console@30.2.0": - resolution: - { - integrity: sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - - "@jest/core@30.2.0": - resolution: - { - integrity: sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + '@inquirerer/utils@3.3.7': + resolution: {integrity: sha512-L1M/fwb9VqbYQLorOWw2hgZk2LW4dZ4YsvIj3SJQWNPMmdcDDHDE2wkFK+KT/kh23aGUS7ISM/b0TIiyKeeQQA==} + + '@internationalized/date@3.12.1': + resolution: {integrity: sha512-6IedsVWXyq4P9Tj+TxuU8WGWM70hYLl12nbYU8jkikVpa6WXapFazPUcHUMDMoWftIDE2ILDkFFte6W2nFCkRQ==} + + '@internationalized/number@3.6.6': + resolution: {integrity: sha512-iFgmQaXHE0vytNfpLZWOC2mEJCBRzcUxt53Xf/yCXG93lRvqas237i3r7X4RKMwO3txiyZD4mQjKAByFv6UGSQ==} + + '@internationalized/string@3.2.8': + resolution: {integrity: sha512-NdbMQUSfXLYIQol5VyMtinm9pZDciiMfN7RtmSuSB78io1hqwJ0naYfxyW6vgxWBkzWymQa/3uLDlbfmshtCaA==} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@isaacs/string-locale-compare@1.1.0': + resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@30.2.0': + resolution: {integrity: sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/core@30.2.0': + resolution: {integrity: sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==} + 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: node-notifier: 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 } - - "@jest/environment@30.2.0": - resolution: - { - integrity: sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==, - } - 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 } - - "@jest/expect@30.2.0": - resolution: - { - integrity: sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - - "@jest/fake-timers@30.2.0": - resolution: - { - integrity: sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==, - } - 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 } - - "@jest/globals@30.2.0": - resolution: - { - integrity: sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==, - } - 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 } - - "@jest/reporters@30.2.0": - resolution: - { - integrity: sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + '@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} + + '@jest/environment@30.2.0': + resolution: {integrity: sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==} + 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} + + '@jest/expect@30.2.0': + resolution: {integrity: sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/fake-timers@30.2.0': + resolution: {integrity: sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==} + 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} + + '@jest/globals@30.2.0': + resolution: {integrity: sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==} + 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} + + '@jest/reporters@30.2.0': + resolution: {integrity: sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==} + 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: node-notifier: 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 } - - "@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 } - - "@jest/snapshot-utils@30.2.0": - resolution: - { - integrity: sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==, - } - 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 } - - "@jest/test-result@30.2.0": - resolution: - { - integrity: sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - - "@jest/test-sequencer@30.2.0": - resolution: - { - integrity: sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - - "@jest/transform@30.2.0": - resolution: - { - integrity: sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } - - "@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 } - - "@jridgewell/gen-mapping@0.3.13": - resolution: - { - integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==, - } - - "@jridgewell/remapping@2.3.5": - resolution: - { - integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==, - } - - "@jridgewell/resolve-uri@3.1.2": - resolution: - { - integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, - } - engines: { node: ">=6.0.0" } - - "@jridgewell/sourcemap-codec@1.5.5": - resolution: - { - integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==, - } - - "@jridgewell/trace-mapping@0.3.31": - resolution: - { - integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==, - } - - "@jridgewell/trace-mapping@0.3.9": - resolution: - { - integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==, - } - - "@lerna/create@8.2.4": - resolution: - { - integrity: sha512-A8AlzetnS2WIuhijdAzKUyFpR5YbLLfV3luQ4lzBgIBgRfuoBDZeF+RSZPhra+7A6/zTUlrbhKZIOi/MNhqgvQ==, - } - engines: { node: ">=18.0.0" } - - "@n1ru4l/push-pull-async-iterable-iterator@3.2.0": - resolution: - { - integrity: sha512-3fkKj25kEjsfObL6IlKPAlHYPq/oYwUkkQ03zsTTiDjD7vg/RxjdiLeCydqtxHZP0JgsXL3D/X5oAkMGzuUp/Q==, - } - engines: { node: ">=12" } - - "@napi-rs/wasm-runtime@0.2.12": - resolution: - { - integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==, - } - - "@napi-rs/wasm-runtime@0.2.4": - resolution: - { - integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==, - } - - "@nodable/entities@2.1.0": - resolution: - { - integrity: sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==, - } - - "@nodelib/fs.scandir@2.1.5": - resolution: - { - integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, - } - engines: { node: ">= 8" } - - "@nodelib/fs.stat@2.0.5": - resolution: - { - integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, - } - engines: { node: ">= 8" } - - "@nodelib/fs.walk@1.2.8": - resolution: - { - integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, - } - engines: { node: ">= 8" } - - "@npmcli/agent@2.2.2": - 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 } + '@jest/schemas@29.6.3': + 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} + + '@jest/snapshot-utils@30.2.0': + resolution: {integrity: sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==} + 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} + + '@jest/test-result@30.2.0': + resolution: {integrity: sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/test-sequencer@30.2.0': + resolution: {integrity: sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/transform@30.2.0': + resolution: {integrity: sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@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} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@lerna/create@8.2.4': + resolution: {integrity: sha512-A8AlzetnS2WIuhijdAzKUyFpR5YbLLfV3luQ4lzBgIBgRfuoBDZeF+RSZPhra+7A6/zTUlrbhKZIOi/MNhqgvQ==} + engines: {node: '>=18.0.0'} + + '@n1ru4l/push-pull-async-iterable-iterator@3.2.0': + resolution: {integrity: sha512-3fkKj25kEjsfObL6IlKPAlHYPq/oYwUkkQ03zsTTiDjD7vg/RxjdiLeCydqtxHZP0JgsXL3D/X5oAkMGzuUp/Q==} + engines: {node: '>=12'} + + '@napi-rs/wasm-runtime@0.2.12': + resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + + '@napi-rs/wasm-runtime@0.2.4': + resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@npmcli/agent@2.2.2': + 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} hasBin: true - "@npmcli/fs@3.1.1": - 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 } - - "@npmcli/installed-package-contents@2.1.0": - resolution: - { - integrity: sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + '@npmcli/fs@3.1.1': + 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} + + '@npmcli/installed-package-contents@2.1.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 } - - "@npmcli/metavuln-calculator@7.1.1": - 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 } - - "@npmcli/node-gyp@3.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 } - - "@npmcli/promise-spawn@7.0.2": - 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 } - - "@npmcli/redact@2.0.1": - 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 } - - "@nx/devkit@20.8.3": - resolution: - { - integrity: sha512-5lbfJ6ICFOiGeirldQOU5fQ/W/VQ8L3dfWnmHG4UgpWSLoK/YFdRf4lTB4rS0aDXsBL0gyWABz3sZGLPGNYnPA==, - } + '@npmcli/map-workspaces@3.0.6': + 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} + + '@npmcli/name-from-folder@2.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} + + '@npmcli/package-json@5.2.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} + + '@npmcli/query@3.1.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} + + '@npmcli/run-script@8.1.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==} peerDependencies: - nx: ">= 19 <= 21" - - "@nx/nx-darwin-arm64@20.8.3": - resolution: - { - integrity: sha512-BeYnPAcnaerg6q+qR0bAb0nebwwrsvm4STSVqqVlaqLmmQpU3Bfpx44CEa5d6T9b0V11ZqVE/bkmRhMqhUcrhw==, - } - engines: { node: ">= 10" } + nx: '>= 19 <= 21' + + '@nx/nx-darwin-arm64@20.8.3': + 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" } + '@nx/nx-darwin-x64@20.8.3': + 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" } + '@nx/nx-freebsd-x64@20.8.3': + 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" } + '@nx/nx-linux-arm-gnueabihf@20.8.3': + 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" } + '@nx/nx-linux-arm64-gnu@20.8.3': + resolution: {integrity: sha512-nbi/eZtJfWxuDwdUCiP+VJolFubtrz6XxVtB26eMAkODnREOKELHZtMOrlm8JBZCdtWCvTqibq9Az74XsqSfdA==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] - "@nx/nx-linux-arm64-musl@20.8.3": - resolution: - { - integrity: sha512-LTTGzI8YVPlF1v0YlVf+exM+1q7rpsiUbjTTHJcfHFRU5t4BsiZD54K19Y1UBg1XFx5cwhEaIomSmJ88RwPPVQ==, - } - engines: { node: ">= 10" } + '@nx/nx-linux-arm64-musl@20.8.3': + resolution: {integrity: sha512-LTTGzI8YVPlF1v0YlVf+exM+1q7rpsiUbjTTHJcfHFRU5t4BsiZD54K19Y1UBg1XFx5cwhEaIomSmJ88RwPPVQ==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] - "@nx/nx-linux-x64-gnu@20.8.3": - resolution: - { - integrity: sha512-SlA4GtXvQbSzSIWLgiIiLBOjdINPOUR/im+TUbaEMZ8wiGrOY8cnk0PVt95TIQJVBeXBCeb5HnoY0lHJpMOODg==, - } - engines: { node: ">= 10" } + '@nx/nx-linux-x64-gnu@20.8.3': + resolution: {integrity: sha512-SlA4GtXvQbSzSIWLgiIiLBOjdINPOUR/im+TUbaEMZ8wiGrOY8cnk0PVt95TIQJVBeXBCeb5HnoY0lHJpMOODg==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] - "@nx/nx-linux-x64-musl@20.8.3": - resolution: - { - integrity: sha512-MNzkEwPktp5SQH9dJDH2wP9hgG9LsBDhKJXJfKw6sUI/6qz5+/aAjFziKy+zBnhU4AO1yXt5qEWzR8lDcIriVQ==, - } - engines: { node: ">= 10" } + '@nx/nx-linux-x64-musl@20.8.3': + resolution: {integrity: sha512-MNzkEwPktp5SQH9dJDH2wP9hgG9LsBDhKJXJfKw6sUI/6qz5+/aAjFziKy+zBnhU4AO1yXt5qEWzR8lDcIriVQ==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] - "@nx/nx-win32-arm64-msvc@20.8.3": - resolution: - { - integrity: sha512-qUV7CyXKwRCM/lkvyS6Xa1MqgAuK5da6w27RAehh7LATBUKn1I4/M7DGn6L7ERCxpZuh1TrDz9pUzEy0R+Ekkg==, - } - engines: { node: ">= 10" } + '@nx/nx-win32-arm64-msvc@20.8.3': + 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" } + '@nx/nx-win32-x64-msvc@20.8.3': + 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" } - - "@octokit/core@5.2.2": - 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" } - - "@octokit/graphql@7.1.1": - resolution: - { - integrity: sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==, - } - engines: { node: ">= 18" } - - "@octokit/openapi-types@24.2.0": - resolution: - { - integrity: sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==, - } - - "@octokit/plugin-enterprise-rest@6.0.1": - 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" } + '@octokit/auth-token@4.0.0': + 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'} + + '@octokit/endpoint@9.0.6': + 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'} + + '@octokit/openapi-types@24.2.0': + resolution: {integrity: sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==} + + '@octokit/plugin-enterprise-rest@6.0.1': + 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'} peerDependencies: - "@octokit/core": "5" - - "@octokit/plugin-request-log@4.0.1": - resolution: - { - integrity: sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==, - } - engines: { node: ">= 18" } + '@octokit/core': '5' + + '@octokit/plugin-request-log@4.0.1': + 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" } + '@octokit/core': '5' + + '@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1': + 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" } - - "@octokit/request@8.4.1": - 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" } - - "@octokit/types@13.10.0": - resolution: - { - integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==, - } - - "@pgpmjs/core@6.12.4": - resolution: - { - integrity: sha512-oHIKTgOmvIArDJBpuKDN93CopGn3ChUNodZdmS9mawc0GtpMtEOu+hEeAFd3YGy3b+vdGCIJ8fQadIDDyuYM5Q==, - } - - "@pgpmjs/core@6.17.1": - resolution: - { - integrity: sha512-c+C/dsvlHeX50N+XXj370ufUkuN6NvVL8YSf5WmQjuFrSidretGM0B6j/neuwgUWRqBkgJgl10/1YjSUabcDMg==, - } - - "@pgpmjs/core@6.18.1": - resolution: - { - integrity: sha512-gkfmDt+oTfyzLL0FcSJ83K5ofGu48LpWcuNqwjPEBrWLsJ78DTK5ypqVPQ3Oi8PGziTVcKzywlFvQjoAE1XV1Q==, - } - - "@pgpmjs/env@2.18.0": - resolution: - { - integrity: sha512-Xu8EjQ6ZhdJIG+9d/HLQoQZKd62fcg2JGeZAR29H9Dj7adp8gtomW9AijZ5Gj4FO9KM49E/KFrorshl8JJeBzg==, - } - - "@pgpmjs/env@2.22.1": - resolution: - { - integrity: sha512-ZurMgaAUsl9ju7diFKCl1Q180dpA3QDo2QprKqfUvPoQPjYiRcpaTsQFM10RjQbIO18HhtueYWAkmNlm6mcuxA==, - } - - "@pgpmjs/env@2.23.0": - resolution: - { - integrity: sha512-IYdA9gsfc9ajBquDErsrSuDXCCnJk8JPR3t5phhyY9VgskSHog8wkYy3DN0ndd1zJwYeWg7+m3iY44oLHHFpjw==, - } - - "@pgpmjs/export@0.12.3": - resolution: - { - integrity: sha512-vn+Xi75WePxD26wKzxwQAFZYAdRSwf+sjM4pkVL3riAFYlGDXdF4eyTHOihgTtCvYCC/vIMPFHuCP5fKphKcBA==, - } - - "@pgpmjs/export@0.15.3": - resolution: - { - integrity: sha512-MW7CioV0ymWhilRf+KHDcBvsx8Ma62qB6eOgG5iPWx/hHnq2CldStsKgs5sYo2i5jAuUzQW5DxjZEdrltxO3IQ==, - } - - "@pgpmjs/export@0.4.6": - resolution: - { - integrity: sha512-8Cs1JqXt2+QlnjjX3ZWLioFEEE1QJ6qUzmT1nhM+pmkf08HQFtztu8nzl/poCRTI25TSPUuUhm/AwdCmrgFOiQ==, - } - - "@pgpmjs/logger@2.10.1": - resolution: - { - integrity: sha512-ReWptnOJgHTQRxV+ElburhG7FHcW6FlnlEwoU3a6bRN0v3RjM8L80ptoIPIs0PF0HKLXoYfUET/KfwlQiurWFA==, - } - - "@pgpmjs/logger@2.11.0": - resolution: - { - integrity: sha512-OFZwb9d3/GqPvwJqtRhk+D6XrVOAi9WC6J7N13MxRVWCeCz8Sl1V19ff0FwGu7A2QQtQfnxpu48r9qeTv3EmYw==, - } - - "@pgpmjs/logger@2.6.0": - resolution: - { - integrity: sha512-kTIdS5lfhZaMvveiViqD99g9yHYMK6X71FwcbF3k2JFI7CpF+W8RUBzdhb17+c7kpvK/snRADg9+KdqtbewAfA==, - } - - "@pgpmjs/migrate-client@0.12.3": - resolution: - { - integrity: sha512-livNWu5sNEBpda2ijxEm0us1NSNaTCWjytg8f+8pTWjkyETXaeFUVWQ8xOae/CwcZwi3DGTrJt+927uZy7NurQ==, - } - - "@pgpmjs/migrate-client@0.13.3": - resolution: - { - integrity: sha512-CXXjKao8stHIcsS5Ztsatpacjp6tlYU6FdTDgwIrF8yvSd70Sgc4AWU6DrWee1EUXaMymuHt7Rdo2hvFPvdPow==, - } - - "@pgpmjs/migrate-client@0.6.1": - resolution: - { - integrity: sha512-R4xd2rw8uokjldMlCW+juZYgh9lyePSi+htBk7492d40DfnAOyOB1ZCaucrsv9+qZe5rWZ73yTmqEVhV0X9hkQ==, - } - - "@pgpmjs/server-utils@3.10.1": - resolution: - { - integrity: sha512-9FlExkrbI5Zxfp1XHkCfPpz6ttfAuFS3nNAKrG32NXrtyRk9375/oe+YyLuXft9QgrI1kEyH0RRfxIL7OgjmGg==, - } - - "@pgpmjs/server-utils@3.11.0": - resolution: - { - integrity: sha512-0hylKdJf3nRCTqtRAqgaDo+MtfWYfw7VuZ1TVI4W8suC/bhEJIArTmOm5Ugbk0pRcRHYw/zSCgBCX9sdRbBAaA==, - } - - "@pgpmjs/server-utils@3.6.0": - resolution: - { - integrity: sha512-ekny+vdRLaINSNr+nW13Ud95xyZbOjB/UnBBhfipY34Iviu0EWo2Eb660N2HXIKbc+fThh4nEl+Ny6Guv/145Q==, - } - - "@pgpmjs/types@2.22.0": - resolution: - { - integrity: sha512-Qq8+v1HRgOShNUmmAQCP+XHBx1gYGd0X1xp4QfVPvPKR1+zM9D6gJLxCwyk4pimDYVma+hut3hz/9jLoCAhETA==, - } - - "@pgpmjs/types@2.26.1": - resolution: - { - integrity: sha512-5lOmwsylKloLSJcBEoYF/Di1wj5IV5svj/sU5wobj261lNzhY/hCiV0SL+fWl9Yeo6z1NVgw4Xe/O/NYgtz3eQ==, - } - - "@pgpmjs/types@2.27.0": - resolution: - { - integrity: sha512-6SVp35GuKy/oBZogeO1YGmHYqaylQ7KIzMs0wqSz7KhYcCvCrhIZXxId+tXg5b7ycEd14JXSzbSu8B4lLnnjlQ==, - } - - "@pgsql/quotes@17.1.0": - resolution: - { - integrity: sha512-J/H+LcrENBpYgL45WW6aTjb5Yk4tX4+AmB2/k8KZa+Zh3wiCtqmNIag+HZz5HmWaF6EZK9ZGC95NBD1fs+rUvg==, - } - - "@pgsql/types@17.6.2": - resolution: - { - integrity: sha512-1UtbELdbqNdyOShhrVfSz3a1gDi0s9XXiQemx+6QqtsrXe62a6zOGU+vjb2GRfG5jeEokI1zBBcfD42enRv0Rw==, - } - - "@pgsql/utils@17.8.16": - resolution: - { - integrity: sha512-dkPIPi04SKHtVK33xlwg5c9ICky3XMY7WJG/wEUVFhY7fuM9ypFLoZa1cXLlgC9fVCo+libLZ4n00zPyRjTlPQ==, - } - - "@pkgjs/parseargs@0.11.0": - 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 } - - "@radix-ui/primitive@1.1.3": - resolution: - { - integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==, - } - - "@radix-ui/react-arrow@1.1.7": - resolution: - { - integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==, - } + '@octokit/core': ^5 + + '@octokit/request-error@5.1.1': + 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'} + + '@octokit/rest@20.1.2': + resolution: {integrity: sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA==} + engines: {node: '>= 18'} + + '@octokit/types@13.10.0': + resolution: {integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==} + + '@pgpmjs/core@6.17.1': + resolution: {integrity: sha512-c+C/dsvlHeX50N+XXj370ufUkuN6NvVL8YSf5WmQjuFrSidretGM0B6j/neuwgUWRqBkgJgl10/1YjSUabcDMg==} + + '@pgpmjs/core@6.24.1': + resolution: {integrity: sha512-DY1ep5iRbxtGQSKG2TBJIoXCe5Z3VG8LbwF6jhW2s3l9xrQUAfISFAr3KiXjtWHK7o49SE3SaZmL1QMWlkVqqA==} + + '@pgpmjs/env@2.18.0': + resolution: {integrity: sha512-Xu8EjQ6ZhdJIG+9d/HLQoQZKd62fcg2JGeZAR29H9Dj7adp8gtomW9AijZ5Gj4FO9KM49E/KFrorshl8JJeBzg==} + + '@pgpmjs/env@2.22.1': + resolution: {integrity: sha512-ZurMgaAUsl9ju7diFKCl1Q180dpA3QDo2QprKqfUvPoQPjYiRcpaTsQFM10RjQbIO18HhtueYWAkmNlm6mcuxA==} + + '@pgpmjs/env@2.25.1': + resolution: {integrity: sha512-iRCmmwuB8fNE7sRfdF6/Wu8dIiE9sFA/OxCw4Sk5t6m81QzHk3/KDwM0AyX7X2DD+a9Thpr3rxcrx0eoMcQBUw==} + + '@pgpmjs/export@0.22.3': + resolution: {integrity: sha512-bN6Vvlr9rM7qAekHrw6ENPvyCL4EHTTvZzRkrtNZsFc7u7Nx0Ja/SmXzP93iq3NWCSoXZpkknqHdoHN8Hk9xPA==} + + '@pgpmjs/logger@2.10.1': + resolution: {integrity: sha512-ReWptnOJgHTQRxV+ElburhG7FHcW6FlnlEwoU3a6bRN0v3RjM8L80ptoIPIs0PF0HKLXoYfUET/KfwlQiurWFA==} + + '@pgpmjs/logger@2.12.0': + resolution: {integrity: sha512-yPRZvc6VxpwDl7ZLuvPD2lrrBKYDMFBQP6KyURcvHWuisTwvrWrKOH0HWMPtMIbaBSnz6/KsrkxCz6QM9hC+Bw==} + + '@pgpmjs/logger@2.6.0': + resolution: {integrity: sha512-kTIdS5lfhZaMvveiViqD99g9yHYMK6X71FwcbF3k2JFI7CpF+W8RUBzdhb17+c7kpvK/snRADg9+KdqtbewAfA==} + + '@pgpmjs/migrate-client@0.15.12': + resolution: {integrity: sha512-cQervObJUrEQ4N0+GKvdIYn4/Of4RGzRzIjAjJh5mII0aCrLDGSkd41PAKX2SL6G7m45mJTe8Vh2rs1Z6Y4i+Q==} + + '@pgpmjs/server-utils@3.10.1': + resolution: {integrity: sha512-9FlExkrbI5Zxfp1XHkCfPpz6ttfAuFS3nNAKrG32NXrtyRk9375/oe+YyLuXft9QgrI1kEyH0RRfxIL7OgjmGg==} + + '@pgpmjs/server-utils@3.13.1': + resolution: {integrity: sha512-s1OLzxxPCMGh6fVTTdr/9+/d9qvixfVf40HqvmbkOY9CA7plkZERycpBIg8NkMMg4PdRcDNQ3YGwsasgt7ilqA==} + + '@pgpmjs/server-utils@3.6.0': + resolution: {integrity: sha512-ekny+vdRLaINSNr+nW13Ud95xyZbOjB/UnBBhfipY34Iviu0EWo2Eb660N2HXIKbc+fThh4nEl+Ny6Guv/145Q==} + + '@pgpmjs/types@2.22.0': + resolution: {integrity: sha512-Qq8+v1HRgOShNUmmAQCP+XHBx1gYGd0X1xp4QfVPvPKR1+zM9D6gJLxCwyk4pimDYVma+hut3hz/9jLoCAhETA==} + + '@pgpmjs/types@2.26.1': + resolution: {integrity: sha512-5lOmwsylKloLSJcBEoYF/Di1wj5IV5svj/sU5wobj261lNzhY/hCiV0SL+fWl9Yeo6z1NVgw4Xe/O/NYgtz3eQ==} + + '@pgpmjs/types@2.29.1': + resolution: {integrity: sha512-4S15n0828ylbx8TvKgtt/mHDILns5GHKAWWK+eL/nIRQZArfThSS1z/FmYtc6ljdXnxM1BQdBmoPQUiX9c9R+Q==} + + '@pgsql/quotes@17.1.0': + resolution: {integrity: sha512-J/H+LcrENBpYgL45WW6aTjb5Yk4tX4+AmB2/k8KZa+Zh3wiCtqmNIag+HZz5HmWaF6EZK9ZGC95NBD1fs+rUvg==} + + '@pgsql/types@17.6.2': + resolution: {integrity: sha512-1UtbELdbqNdyOShhrVfSz3a1gDi0s9XXiQemx+6QqtsrXe62a6zOGU+vjb2GRfG5jeEokI1zBBcfD42enRv0Rw==} + + '@pgsql/utils@17.8.16': + resolution: {integrity: sha512-dkPIPi04SKHtVK33xlwg5c9ICky3XMY7WJG/wEUVFhY7fuM9ypFLoZa1cXLlgC9fVCo+libLZ4n00zPyRjTlPQ==} + + '@pgsql/utils@17.8.17': + resolution: {integrity: sha512-JAbRaKBdH0c6GbSgiepwdsis9AG9Kgz9sdmL5e+iBYFZRsFBGKoe1jnxJ0tAMjWYcLus2qeDN6gqQaPYtx1EOg==} + + '@pkgjs/parseargs@0.11.0': + 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} + + '@radix-ui/primitive@1.1.3': + resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} + + '@radix-ui/react-arrow@1.1.7': + resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} peerDependencies: - "@types/react": "*" - "@types/react-dom": "*" + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@types/react-dom": + '@types/react-dom': optional: true - "@radix-ui/react-collection@1.1.7": - resolution: - { - integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==, - } + '@radix-ui/react-collection@1.1.7': + resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} peerDependencies: - "@types/react": "*" - "@types/react-dom": "*" + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@types/react-dom": + '@types/react-dom': optional: true - "@radix-ui/react-compose-refs@1.1.2": - resolution: - { - integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==, - } + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} peerDependencies: - "@types/react": "*" + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@radix-ui/react-context@1.1.2": - resolution: - { - integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==, - } + '@radix-ui/react-context@1.1.2': + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} peerDependencies: - "@types/react": "*" + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@radix-ui/react-dialog@1.1.15": - resolution: - { - integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==, - } + '@radix-ui/react-dialog@1.1.15': + resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==} peerDependencies: - "@types/react": "*" - "@types/react-dom": "*" + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@types/react-dom": + '@types/react-dom': optional: true - "@radix-ui/react-direction@1.1.1": - resolution: - { - integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==, - } + '@radix-ui/react-direction@1.1.1': + resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} peerDependencies: - "@types/react": "*" + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@radix-ui/react-dismissable-layer@1.1.11": - resolution: - { - integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==, - } + '@radix-ui/react-dismissable-layer@1.1.11': + resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} peerDependencies: - "@types/react": "*" - "@types/react-dom": "*" + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@types/react-dom": + '@types/react-dom': optional: true - "@radix-ui/react-dropdown-menu@2.1.16": - resolution: - { - integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==, - } + '@radix-ui/react-dropdown-menu@2.1.16': + resolution: {integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==} peerDependencies: - "@types/react": "*" - "@types/react-dom": "*" + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@types/react-dom": + '@types/react-dom': optional: true - "@radix-ui/react-focus-guards@1.1.3": - resolution: - { - integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==, - } + '@radix-ui/react-focus-guards@1.1.3': + resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==} peerDependencies: - "@types/react": "*" + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@radix-ui/react-focus-scope@1.1.7": - resolution: - { - integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==, - } + '@radix-ui/react-focus-scope@1.1.7': + resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} peerDependencies: - "@types/react": "*" - "@types/react-dom": "*" + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@types/react-dom": + '@types/react-dom': optional: true - "@radix-ui/react-id@1.1.1": - resolution: - { - integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==, - } + '@radix-ui/react-id@1.1.1': + resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} peerDependencies: - "@types/react": "*" + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@radix-ui/react-menu@2.1.16": - resolution: - { - integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==, - } + '@radix-ui/react-menu@2.1.16': + resolution: {integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==} peerDependencies: - "@types/react": "*" - "@types/react-dom": "*" + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@types/react-dom": + '@types/react-dom': optional: true - "@radix-ui/react-popper@1.2.8": - resolution: - { - integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==, - } + '@radix-ui/react-popper@1.2.8': + resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} peerDependencies: - "@types/react": "*" - "@types/react-dom": "*" + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@types/react-dom": + '@types/react-dom': optional: true - "@radix-ui/react-portal@1.1.9": - resolution: - { - integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==, - } + '@radix-ui/react-portal@1.1.9': + resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} peerDependencies: - "@types/react": "*" - "@types/react-dom": "*" + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@types/react-dom": + '@types/react-dom': optional: true - "@radix-ui/react-presence@1.1.5": - resolution: - { - integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==, - } + '@radix-ui/react-presence@1.1.5': + resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} peerDependencies: - "@types/react": "*" - "@types/react-dom": "*" + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@types/react-dom": + '@types/react-dom': optional: true - "@radix-ui/react-primitive@2.1.3": - resolution: - { - integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==, - } + '@radix-ui/react-primitive@2.1.3': + resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} peerDependencies: - "@types/react": "*" - "@types/react-dom": "*" + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@types/react-dom": + '@types/react-dom': optional: true - "@radix-ui/react-primitive@2.1.4": - resolution: - { - integrity: sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==, - } + '@radix-ui/react-primitive@2.1.4': + resolution: {integrity: sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==} peerDependencies: - "@types/react": "*" - "@types/react-dom": "*" + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@types/react-dom": + '@types/react-dom': optional: true - "@radix-ui/react-roving-focus@1.1.11": - resolution: - { - integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==, - } + '@radix-ui/react-roving-focus@1.1.11': + resolution: {integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==} peerDependencies: - "@types/react": "*" - "@types/react-dom": "*" + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@types/react-dom": + '@types/react-dom': optional: true - "@radix-ui/react-slot@1.2.3": - resolution: - { - integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==, - } + '@radix-ui/react-slot@1.2.3': + resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} peerDependencies: - "@types/react": "*" + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@radix-ui/react-slot@1.2.4": - resolution: - { - integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==, - } + '@radix-ui/react-slot@1.2.4': + resolution: {integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==} peerDependencies: - "@types/react": "*" + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@radix-ui/react-tooltip@1.2.8": - resolution: - { - integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==, - } + '@radix-ui/react-tooltip@1.2.8': + resolution: {integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==} peerDependencies: - "@types/react": "*" - "@types/react-dom": "*" + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@types/react-dom": + '@types/react-dom': optional: true - "@radix-ui/react-use-callback-ref@1.1.1": - resolution: - { - integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==, - } + '@radix-ui/react-use-callback-ref@1.1.1': + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} peerDependencies: - "@types/react": "*" + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@radix-ui/react-use-controllable-state@1.2.2": - resolution: - { - integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==, - } + '@radix-ui/react-use-controllable-state@1.2.2': + resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} peerDependencies: - "@types/react": "*" + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@radix-ui/react-use-effect-event@0.0.2": - resolution: - { - integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==, - } + '@radix-ui/react-use-effect-event@0.0.2': + resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} peerDependencies: - "@types/react": "*" + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@radix-ui/react-use-escape-keydown@1.1.1": - resolution: - { - integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==, - } + '@radix-ui/react-use-escape-keydown@1.1.1': + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} peerDependencies: - "@types/react": "*" + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@radix-ui/react-use-layout-effect@1.1.1": - resolution: - { - integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==, - } + '@radix-ui/react-use-layout-effect@1.1.1': + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} peerDependencies: - "@types/react": "*" + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@radix-ui/react-use-rect@1.1.1": - resolution: - { - integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==, - } + '@radix-ui/react-use-rect@1.1.1': + resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} peerDependencies: - "@types/react": "*" + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@radix-ui/react-use-size@1.1.1": - resolution: - { - integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==, - } + '@radix-ui/react-use-size@1.1.1': + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} peerDependencies: - "@types/react": "*" + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@radix-ui/react-visually-hidden@1.2.3": - resolution: - { - integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==, - } + '@radix-ui/react-visually-hidden@1.2.3': + resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} peerDependencies: - "@types/react": "*" - "@types/react-dom": "*" + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@types/react-dom": + '@types/react-dom': optional: true - "@radix-ui/react-visually-hidden@1.2.4": - resolution: - { - integrity: sha512-kaeiyGCe844dkb9AVF+rb4yTyb1LiLN/e3es3nLiRyN4dC8AduBYPMnnNlDjX2VDOcvDEiPnRNMJeWCfsX0txg==, - } + '@radix-ui/react-visually-hidden@1.2.4': + resolution: {integrity: sha512-kaeiyGCe844dkb9AVF+rb4yTyb1LiLN/e3es3nLiRyN4dC8AduBYPMnnNlDjX2VDOcvDEiPnRNMJeWCfsX0txg==} peerDependencies: - "@types/react": "*" - "@types/react-dom": "*" + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@types/react-dom": + '@types/react-dom': optional: true - "@radix-ui/rect@1.1.1": - resolution: - { - integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==, - } - - "@react-aria/focus@3.22.0": - resolution: - { - integrity: sha512-ZfDOVuVhqDsM9mkNji3QUZ/d40JhlVgXrDkrfXylM1035QCrcTHN7m2DpbE95sU2A8EQb4wikvt5jM6K/73BPg==, - } + '@radix-ui/rect@1.1.1': + resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + + '@react-aria/focus@3.22.0': + resolution: {integrity: sha512-ZfDOVuVhqDsM9mkNji3QUZ/d40JhlVgXrDkrfXylM1035QCrcTHN7m2DpbE95sU2A8EQb4wikvt5jM6K/73BPg==} 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.28.0": - resolution: - { - integrity: sha512-OXwdU1EWFdMxmr/K1CXNGJzmNlCClByb+PuCaqUyzBymHPCGVhawirLIon/CrIN5psh3AiWpHSh4H0WeJdVpng==, - } + '@react-aria/interactions@3.28.0': + resolution: {integrity: sha512-OXwdU1EWFdMxmr/K1CXNGJzmNlCClByb+PuCaqUyzBymHPCGVhawirLIon/CrIN5psh3AiWpHSh4H0WeJdVpng==} 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-types/shared@3.34.0": - resolution: - { - integrity: sha512-gp6xo/s2lX54AlTjOiqwDnxA7UW79BNvI9dB9pr3LZTzRKCd1ZA+ZbgKw/ReIiWuvvVw/8QFJpnqeeFyLocMcQ==, - } + '@react-types/shared@3.34.0': + resolution: {integrity: sha512-gp6xo/s2lX54AlTjOiqwDnxA7UW79BNvI9dB9pr3LZTzRKCd1ZA+ZbgKw/ReIiWuvvVw/8QFJpnqeeFyLocMcQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - "@sigstore/bundle@2.3.2": - 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 } - - "@sigstore/protobuf-specs@0.3.3": - 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 } - - "@sigstore/tuf@2.3.4": - 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 } - - "@sinclair/typebox@0.27.8": - resolution: - { - integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==, - } - - "@sinclair/typebox@0.34.45": - resolution: - { - integrity: sha512-qJcFVfCa5jxBFSuv7S5WYbA8XdeCPmhnaVVfX/2Y6L8WYg8sk3XY2+6W0zH+3mq1Cz+YC7Ki66HfqX6IHAwnkg==, - } - - "@sinonjs/commons@3.0.1": - resolution: - { - integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==, - } - - "@sinonjs/fake-timers@13.0.5": - resolution: - { - integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==, - } - - "@smithy/chunked-blob-reader-native@4.2.3": - 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" } - - "@smithy/config-resolver@4.4.17": - resolution: - { - integrity: sha512-TzDZcAnhTyAHbXVxWZo7/tEcrIeFq20IBk8So3OLOetWpR8EwY/yEqBMBFaJMeyEiREDq4NfEl+qO3OAUD+vbQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/core@3.23.17": - resolution: - { - integrity: sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/credential-provider-imds@4.2.14": - resolution: - { - integrity: sha512-Au28zBN48ZAoXdooGUHemuVBrkE+Ie6RPmGNIAJsFqj33Vhb6xAgRifUydZ2aY+M+KaMAETAlKk5NC5h1G7wpg==, - } - engines: { node: ">=18.0.0" } - - "@smithy/eventstream-codec@4.2.14": - resolution: - { - integrity: sha512-erZq0nOIpzfeZdCyzZjdJb4nVSKLUmSkaQUVkRGQTXs30gyUGeKnrYEg+Xe1W5gE3aReS7IgsvANwVPxSzY6Pw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/eventstream-serde-browser@4.2.14": - resolution: - { - integrity: sha512-8IelTCtTctWRbb+0Dcy+C0aICh1qa0qWXqgjcXDmMuCvPJRnv26hiDZoAau2ILOniki65mCPKqOQs/BaWvO4CQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/eventstream-serde-config-resolver@4.3.14": - resolution: - { - integrity: sha512-sqHiHpYRYo3FJlaIxD1J8PhbcmJAm7IuM16mVnwSkCToD7g00IBZzKuiLNMGmftULmEUX6/UAz8/NN5uMP8bVA==, - } - engines: { node: ">=18.0.0" } - - "@smithy/eventstream-serde-node@4.2.14": - resolution: - { - integrity: sha512-Ht/8BuGlKfFTy0H3+8eEu0vdpwGztCnaLLXtpXNdQqiR7Hj4vFScU3T436vRAjATglOIPjJXronY+1WxxNLSiw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/eventstream-serde-universal@4.2.14": - resolution: - { - integrity: sha512-lWyt4T2XQZUZgK3tQ3Wn0w3XBvZsK/vjTuJl6bXbnGZBHH0ZUSONTYiK9TgjTTzU54xQr3DRFwpjmhp0oLm3gg==, - } - engines: { node: ">=18.0.0" } - - "@smithy/fetch-http-handler@5.3.17": - resolution: - { - integrity: sha512-bXOvQzaSm6MnmLaWA1elgfQcAtN4UP3vXqV97bHuoOrHQOJiLT3ds6o9eo5bqd0TJfRFpzdGnDQdW3FACiAVdw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/hash-blob-browser@4.2.15": - resolution: - { - integrity: sha512-0PJ4Al3fg2nM4qKrAIxyNcApgqHAXcBkN8FeizOz69z0rb26uZ6lMESYtxegaTlXB5Hj84JfwMPavMrwDMjucA==, - } - engines: { node: ">=18.0.0" } - - "@smithy/hash-node@4.2.14": - resolution: - { - integrity: sha512-8ZBDY2DD4wr+GGjTpPtiglEsqr0lUP+KHqgZcWczFf6qeZ/YRjMIOoQWVQlmwu7EtxKTd8YXD8lblmYcpBIA1g==, - } - engines: { node: ">=18.0.0" } - - "@smithy/hash-stream-node@4.2.14": - resolution: - { - integrity: sha512-tw4GANWkZPb6+BdD4Fgucqzey2+r73Z/GRo9zklsCdwrnxxumUV83ZIaBDdudV4Ylazw3EPTiJZhpX42105ruQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/invalid-dependency@4.2.14": - resolution: - { - integrity: sha512-c21qJiTSb25xvvOp+H2TNZzPCngrvl5vIPqPB8zQ/DmJF4QWXO19x1dWfMJZ6wZuuWUPPm0gV8C0cU3+ifcWuw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/is-array-buffer@2.2.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" } - - "@smithy/md5-js@4.2.14": - resolution: - { - integrity: sha512-V2v0vx+h0iUSNG1Alt+GNBMSLGCrl9iVsdd+Ap67HPM9PN479x12V8LkuMoKImNZxn3MXeuyUjls+/7ZACZghA==, - } - engines: { node: ">=18.0.0" } - - "@smithy/middleware-content-length@4.2.14": - resolution: - { - integrity: sha512-xhHq7fX4/3lv5NHxLUk3OeEvl0xZ+Ek3qIbWaCL4f9JwgDZEclPBElljaZCAItdGPQl/kSM4LPMOpy1MYgprpw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/middleware-endpoint@4.4.32": - resolution: - { - integrity: sha512-ZZkgyjnJppiZbIm6Qbx92pbXYi1uzenIvGhBSCDlc7NwuAkiqSgS75j1czAD25ZLs2FjMjYy1q7gyRVWG6JA0Q==, - } - engines: { node: ">=18.0.0" } - - "@smithy/middleware-retry@4.5.7": - resolution: - { - integrity: sha512-bRt6ZImqVSeTk39Nm81K20ObIiAZ3WefY7G6+iz/0tZjs4dgRRjvRX2sgsH+zi6iDCRR/aQvQofLKxxz4rPBZg==, - } - engines: { node: ">=18.0.0" } - - "@smithy/middleware-serde@4.2.20": - resolution: - { - integrity: sha512-Lx9JMO9vArPtiChE3wbEZ5akMIDQpWQtlu90lhACQmNOXcGXRbaDywMHDzuDZ2OkZzP+9wQfZi3YJT9F67zTQQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/middleware-stack@4.2.14": - resolution: - { - integrity: sha512-2dvkUKLuFdKsCRmOE4Mn63co0Djtsm+JMh0bYZQupN1pJwMeE8FmQmRLLzzEMN0dnNi7CDCYYH8F0EVwWiPBeA==, - } - engines: { node: ">=18.0.0" } - - "@smithy/node-config-provider@4.3.14": - resolution: - { - integrity: sha512-S+gFjyo/weSVL0P1b9Ts8C/CwIfNCgUPikk3sl6QVsfE/uUuO+QsF+NsE/JkpvWqqyz1wg7HFdiaZuj5CoBMRg==, - } - engines: { node: ">=18.0.0" } - - "@smithy/node-http-handler@4.6.1": - resolution: - { - integrity: sha512-iB+orM4x3xrr57X3YaXazfKnntl0LHlZB1kcXSGzMV1Tt0+YwEjGlbjk/44qEGtBzXAz6yFDzkYTKSV6Pj2HUg==, - } - engines: { node: ">=18.0.0" } - - "@smithy/property-provider@4.2.14": - resolution: - { - integrity: sha512-WuM31CgfsnQ/10i7NYr0PyxqknD72Y5uMfUMVSniPjbEPceiTErb4eIqJQ+pdxNEAUEWrewrGjIRjVbVHsxZiQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/protocol-http@5.3.14": - resolution: - { - integrity: sha512-dN5F8kHx8RNU0r+pCwNmFZyz6ChjMkzShy/zup6MtkRmmix4vZzJdW+di7x//b1LiynIev88FM18ie+wwPcQtQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/querystring-builder@4.2.14": - resolution: - { - integrity: sha512-XYA5Z0IqTeF+5XDdh4BBmSA0HvbgVZIyv4cmOoUheDNR57K1HgBp9ukUMx3Cr3XpDHHpLBnexPE3LAtDsZkj2A==, - } - engines: { node: ">=18.0.0" } - - "@smithy/querystring-parser@4.2.14": - resolution: - { - integrity: sha512-hr+YyqBD23GVvRxGGrcc/oOeNlK3PzT5Fu4dzrDXxzS1LpFiuL2PQQqKPs87M79aW7ziMs+nvB3qdw77SqE7Lw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/service-error-classification@4.3.1": - resolution: - { - integrity: sha512-aUQuDGh760ts/8MU+APjIZhlLPKhIIfqyzZaJikLEIMrdxFvxuLYD0WxWzaYWpmLbQlXDe9p7EWM3HsBe0K6Gw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/shared-ini-file-loader@4.4.9": - resolution: - { - integrity: sha512-495/V2I15SHgedSJoDPD23JuSfKAp726ZI1V0wtjB07Wh7q/0tri/0e0DLefZCHgxZonrGKt/OCTpAtP1wE1kQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/signature-v4@5.3.14": - resolution: - { - integrity: sha512-1D9Y/nmlVjCeSivCbhZ7hgEpmHyY1h0GvpSZt3l0xcD9JjmjVC1CHOozS6+Gh+/ldMH8JuJ6cujObQqfayAVFA==, - } - engines: { node: ">=18.0.0" } - - "@smithy/smithy-client@4.12.13": - resolution: - { - integrity: sha512-y/Pcj1V9+qG98gyu1gvftHB7rDpdh+7kIBIggs55yGm3JdtBV8GT8IFF3a1qxZ79QnaJHX9GXzvBG6tAd+czJA==, - } - engines: { node: ">=18.0.0" } - - "@smithy/types@4.14.1": - resolution: - { - integrity: sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==, - } - engines: { node: ">=18.0.0" } - - "@smithy/url-parser@4.2.14": - resolution: - { - integrity: sha512-p06BiBigJ8bTA3MgnOfCtDUWnAMY0YfedO/GRpmc7p+wg3KW8vbXy1xwSu5ASy0wV7rRYtlfZOIKH4XqfhjSQQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-base64@4.3.2": - 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" } - - "@smithy/util-body-length-node@4.2.3": - 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" } - - "@smithy/util-buffer-from@4.2.2": - 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" } - - "@smithy/util-defaults-mode-browser@4.3.49": - resolution: - { - integrity: sha512-a5bNrdiONYB/qE2BuKegvUMd/+ZDwdg4vsNuuSzYE8qs2EYAdK9CynL+Rzn29PbPiUqoz/cbpRbcLzD5lEevHw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-defaults-mode-node@4.2.54": - resolution: - { - integrity: sha512-g1cvrJvOnzeJgEdf7AE4luI7gp6L8weE0y9a9wQUSGtjb8QRHDbCJYuE4Sy0SD9N8RrnNPFsPltAz/OSoBR9Zw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-endpoints@3.4.2": - resolution: - { - integrity: sha512-a55Tr+3OKld4TTtnT+RhKOQHyPxm3j/xL4OR83WBUhLJaKDS9dnJ7arRMOp3t31dcLhApwG9bgvrRXBHlLdIkg==, - } - 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" } - - "@smithy/util-middleware@4.2.14": - resolution: - { - integrity: sha512-1Su2vj9RYNDEv/V+2E+jXkkwGsgR7dc4sfHn9Z7ruzQHJIEni9zzw5CauvRXlFJfmgcqYP8fWa0dkh2Q2YaQyw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-retry@4.3.6": - resolution: - { - integrity: sha512-p6/FO1n2KxMeQyna067i0uJ6TSbb165ZhnRtCpWh4Foxqbfc6oW+XITaL8QkFJj3KFnDe2URt4gOhgU06EP9ew==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-stream@4.5.25": - resolution: - { - integrity: sha512-/PFpG4k8Ze8Ei+mMKj3oiPICYekthuzePZMgZbCqMiXIHHf4n2aZ4Ps0aSRShycFTGuj/J6XldmC0x0DwednIA==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-uri-escape@4.2.2": - 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" } - - "@smithy/util-utf8@4.2.2": - resolution: - { - integrity: sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-waiter@4.3.0": - resolution: - { - integrity: sha512-JyjYmLAfS+pdxF92o4yLgEoy0zhayKTw73FU1aofLWwLcJw7iSqIY2exGmMTrl/lmZugP5p/zxdFSippJDfKWA==, - } - 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" } - - "@swc/helpers@0.5.21": - resolution: - { - integrity: sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==, - } - - "@tanstack/react-virtual@3.13.24": - resolution: - { - integrity: sha512-aIJvz5OSkhNIhZIpYivrxrPTKYsjW9Uzy+sP/mx0S3sev2HyvPb7xmjbYvokzEpfgYHy/HjzJ2zFAETuUfgCpg==, - } + '@sigstore/bundle@2.3.2': + 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} + + '@sigstore/protobuf-specs@0.3.3': + 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} + + '@sigstore/tuf@2.3.4': + 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} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sinclair/typebox@0.34.45': + resolution: {integrity: sha512-qJcFVfCa5jxBFSuv7S5WYbA8XdeCPmhnaVVfX/2Y6L8WYg8sk3XY2+6W0zH+3mq1Cz+YC7Ki66HfqX6IHAwnkg==} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@13.0.5': + resolution: {integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==} + + '@smithy/core@3.26.0': + resolution: {integrity: sha512-mLUktFAn+Pa2agl1J7VgtYNFWCX8/b4GMJSK1hCu4YCvtBfM6F8Os3EP4ry+DFFlXOf3wyvlgXhuUdFoy52D3g==} + engines: {node: '>=18.0.0'} + + '@smithy/credential-provider-imds@4.4.2': + resolution: {integrity: sha512-18UMDMyrAbDcpmL1gLUA7ww0fRTcdCrSjSJOi2Sbld+tVjwD/pW+OAwjlScFLR7vvBnhZrIPQ7kVuTf1mnJLug==} + engines: {node: '>=18.0.0'} + + '@smithy/fetch-http-handler@5.5.2': + resolution: {integrity: sha512-Ei/UK/QMhq0rKaMqGPlOAkE2yS9DZeYmZdk1RAKc3vp3zxgleZHZyBLlZv8yLsxljX4svCRuMTD6u3LLIcU4Bg==} + engines: {node: '>=18.0.0'} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/node-http-handler@4.8.2': + resolution: {integrity: sha512-wfl1uwrAqMH9/pi4kqBo5LBcFwrJLxuDLqL7p7qNcJIFcyZDUc6pzhYk4CYv+DP7fIUpQCZumwNnkhPKS52osQ==} + engines: {node: '>=18.0.0'} + + '@smithy/signature-v4@5.5.2': + resolution: {integrity: sha512-7xHpmPY4rt0IOmeAA8EfjgEH8isT+587TCdy9H6a7d4OMi5CQ0oEHhWllunvPu4j4Cq0vTFwdxXN/kABWPjdyA==} + engines: {node: '>=18.0.0'} + + '@smithy/types@4.15.0': + resolution: {integrity: sha512-Z5TAOxygoFvybJV3igo5SloFflSokHx2hu1eFA+DxDTcn+FtKxUSui+rbTRG1pAafMA888Z3MVvCWUuvCrTXjg==} + 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'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@swc/helpers@0.5.21': + resolution: {integrity: sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==} + + '@tanstack/react-virtual@3.13.24': + resolution: {integrity: sha512-aIJvz5OSkhNIhZIpYivrxrPTKYsjW9Uzy+sP/mx0S3sev2HyvPb7xmjbYvokzEpfgYHy/HjzJ2zFAETuUfgCpg==} 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.14.0": - resolution: - { - integrity: sha512-JLANqGy/D6k4Ujmh8Tr25lGimuOXNiaVyXaCAZS0W+1390sADdGnyUdSWNIfd49gebtIxGMij4IktRVzrdr12Q==, - } - - "@tsconfig/node10@1.0.12": - resolution: - { - integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==, - } - - "@tsconfig/node12@1.0.11": - resolution: - { - integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==, - } - - "@tsconfig/node14@1.0.3": - resolution: - { - integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==, - } - - "@tsconfig/node16@1.0.4": - 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 } - - "@tufjs/models@2.0.1": - 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==, - } - - "@tybys/wasm-util@0.9.0": - resolution: - { - integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==, - } - - "@types/babel__core@7.20.5": - resolution: - { - integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==, - } - - "@types/babel__generator@7.27.0": - resolution: - { - integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==, - } - - "@types/babel__template@7.4.4": - resolution: - { - integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==, - } - - "@types/babel__traverse@7.28.0": - resolution: - { - integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==, - } - - "@types/estree@1.0.8": - resolution: - { - integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==, - } - - "@types/interpret@1.1.4": - 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==, - } - - "@types/istanbul-lib-report@3.0.3": - 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==, - } - - "@types/jest-in-case@1.0.9": - resolution: - { - integrity: sha512-tapHpzWGjCC/hxYJyzbJ/5ZV6rA2153Sve5lGJUAIA1Jzrphfp27TznAWfGeXf+d8TLN7zMujaC0UwNQwSJaQg==, - } - - "@types/jest@30.0.0": - resolution: - { - integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==, - } - - "@types/json-schema@7.0.15": - resolution: - { - integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, - } - - "@types/minimatch@3.0.5": - resolution: - { - integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==, - } - - "@types/minimist@1.2.5": - resolution: - { - integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==, - } - - "@types/node@22.19.17": - resolution: - { - integrity: sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==, - } - - "@types/node@22.19.3": - resolution: - { - integrity: sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==, - } - - "@types/normalize-package-data@2.4.4": - resolution: - { - integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==, - } - - "@types/pg@8.20.0": - resolution: - { - integrity: sha512-bEPFOaMAHTEP1EzpvHTbmwR8UsFyHSKsRisLIHVMXnpNefSbGA1bD6CVy+qKjGSqmZqNqBDV2azOBo8TgkcVow==, - } - - "@types/pluralize@0.0.33": - resolution: - { - integrity: sha512-JOqsl+ZoCpP4e8TDke9W79FDcSgPAR0l6pixx2JHkhnRjvShyYiAYw2LVsnA7K08Y6DeOnaU6ujmENO4os/cYg==, - } - - "@types/semver@7.7.1": - resolution: - { - integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==, - } - - "@types/stack-utils@2.0.3": - resolution: - { - integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==, - } - - "@types/yargs-parser@21.0.3": - resolution: - { - integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==, - } - - "@types/yargs@17.0.35": - resolution: - { - integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==, - } - - "@typescript-eslint/eslint-plugin@8.50.1": - resolution: - { - integrity: sha512-PKhLGDq3JAg0Jk/aK890knnqduuI/Qj+udH7wCf0217IGi4gt+acgCyPVe79qoT+qKUvHMDQkwJeKW9fwl8Cyw==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@tanstack/virtual-core@3.14.0': + resolution: {integrity: sha512-JLANqGy/D6k4Ujmh8Tr25lGimuOXNiaVyXaCAZS0W+1390sADdGnyUdSWNIfd49gebtIxGMij4IktRVzrdr12Q==} + + '@tsconfig/node10@1.0.12': + resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + 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} + + '@tufjs/models@2.0.1': + 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==} + + '@tybys/wasm-util@0.9.0': + resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/istanbul-lib-coverage@2.0.6': + 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==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest-in-case@1.0.9': + resolution: {integrity: sha512-tapHpzWGjCC/hxYJyzbJ/5ZV6rA2153Sve5lGJUAIA1Jzrphfp27TznAWfGeXf+d8TLN7zMujaC0UwNQwSJaQg==} + + '@types/jest@30.0.0': + resolution: {integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/minimatch@3.0.5': + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + + '@types/minimist@1.2.5': + resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} + + '@types/node@22.19.17': + resolution: {integrity: sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==} + + '@types/node@22.19.3': + resolution: {integrity: sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/pg@8.20.0': + resolution: {integrity: sha512-bEPFOaMAHTEP1EzpvHTbmwR8UsFyHSKsRisLIHVMXnpNefSbGA1bD6CVy+qKjGSqmZqNqBDV2azOBo8TgkcVow==} + + '@types/pluralize@0.0.33': + resolution: {integrity: sha512-JOqsl+ZoCpP4e8TDke9W79FDcSgPAR0l6pixx2JHkhnRjvShyYiAYw2LVsnA7K08Y6DeOnaU6ujmENO4os/cYg==} + + '@types/semver@7.7.1': + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.35': + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} + + '@typescript-eslint/eslint-plugin@8.50.1': + resolution: {integrity: sha512-PKhLGDq3JAg0Jk/aK890knnqduuI/Qj+udH7wCf0217IGi4gt+acgCyPVe79qoT+qKUvHMDQkwJeKW9fwl8Cyw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - "@typescript-eslint/parser": ^8.50.1 + '@typescript-eslint/parser': ^8.50.1 eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <6.0.0" - - "@typescript-eslint/parser@8.50.1": - resolution: - { - integrity: sha512-hM5faZwg7aVNa819m/5r7D0h0c9yC4DUlWAOvHAtISdFTc8xB86VmX5Xqabrama3wIPJ/q9RbGS1worb6JfnMg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/parser@8.50.1': + resolution: {integrity: sha512-hM5faZwg7aVNa819m/5r7D0h0c9yC4DUlWAOvHAtISdFTc8xB86VmX5Xqabrama3wIPJ/q9RbGS1worb6JfnMg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <6.0.0" - - "@typescript-eslint/project-service@8.50.1": - resolution: - { - integrity: sha512-E1ur1MCVf+YiP89+o4Les/oBAVzmSbeRB0MQLfSlYtbWU17HPxZ6Bhs5iYmKZRALvEuBoXIZMOIRRc/P++Ortg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/project-service@8.50.1': + resolution: {integrity: sha512-E1ur1MCVf+YiP89+o4Les/oBAVzmSbeRB0MQLfSlYtbWU17HPxZ6Bhs5iYmKZRALvEuBoXIZMOIRRc/P++Ortg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: ">=4.8.4 <6.0.0" - - "@typescript-eslint/scope-manager@8.50.1": - resolution: - { - integrity: sha512-mfRx06Myt3T4vuoHaKi8ZWNTPdzKPNBhiblze5N50//TSHOAQQevl/aolqA/BcqqbJ88GUnLqjjcBc8EWdBcVw==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - "@typescript-eslint/tsconfig-utils@8.50.1": - resolution: - { - integrity: sha512-ooHmotT/lCWLXi55G4mvaUF60aJa012QzvLK0Y+Mp4WdSt17QhMhWOaBWeGTFVkb2gDgBe19Cxy1elPXylslDw==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/scope-manager@8.50.1': + resolution: {integrity: sha512-mfRx06Myt3T4vuoHaKi8ZWNTPdzKPNBhiblze5N50//TSHOAQQevl/aolqA/BcqqbJ88GUnLqjjcBc8EWdBcVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.50.1': + resolution: {integrity: sha512-ooHmotT/lCWLXi55G4mvaUF60aJa012QzvLK0Y+Mp4WdSt17QhMhWOaBWeGTFVkb2gDgBe19Cxy1elPXylslDw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: ">=4.8.4 <6.0.0" - - "@typescript-eslint/type-utils@8.50.1": - resolution: - { - integrity: sha512-7J3bf022QZE42tYMO6SL+6lTPKFk/WphhRPe9Tw/el+cEwzLz1Jjz2PX3GtGQVxooLDKeMVmMt7fWpYRdG5Etg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/type-utils@8.50.1': + resolution: {integrity: sha512-7J3bf022QZE42tYMO6SL+6lTPKFk/WphhRPe9Tw/el+cEwzLz1Jjz2PX3GtGQVxooLDKeMVmMt7fWpYRdG5Etg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <6.0.0" - - "@typescript-eslint/types@8.50.1": - resolution: - { - integrity: sha512-v5lFIS2feTkNyMhd7AucE/9j/4V9v5iIbpVRncjk/K0sQ6Sb+Np9fgYS/63n6nwqahHQvbmujeBL7mp07Q9mlA==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - "@typescript-eslint/typescript-estree@8.50.1": - resolution: - { - integrity: sha512-woHPdW+0gj53aM+cxchymJCrh0cyS7BTIdcDxWUNsclr9VDkOSbqC13juHzxOmQ22dDkMZEpZB+3X1WpUvzgVQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/types@8.50.1': + resolution: {integrity: sha512-v5lFIS2feTkNyMhd7AucE/9j/4V9v5iIbpVRncjk/K0sQ6Sb+Np9fgYS/63n6nwqahHQvbmujeBL7mp07Q9mlA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.50.1': + resolution: {integrity: sha512-woHPdW+0gj53aM+cxchymJCrh0cyS7BTIdcDxWUNsclr9VDkOSbqC13juHzxOmQ22dDkMZEpZB+3X1WpUvzgVQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: ">=4.8.4 <6.0.0" - - "@typescript-eslint/utils@8.50.1": - resolution: - { - integrity: sha512-lCLp8H1T9T7gPbEuJSnHwnSuO9mDf8mfK/Nion5mZmiEaQD9sWf9W4dfeFqRyqRjF06/kBuTmAqcs9sewM2NbQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/utils@8.50.1': + resolution: {integrity: sha512-lCLp8H1T9T7gPbEuJSnHwnSuO9mDf8mfK/Nion5mZmiEaQD9sWf9W4dfeFqRyqRjF06/kBuTmAqcs9sewM2NbQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <6.0.0" - - "@typescript-eslint/visitor-keys@8.50.1": - resolution: - { - integrity: sha512-IrDKrw7pCRUR94zeuCSUWQ+w8JEf5ZX5jl/e6AHGSLi1/zIr0lgutfn/7JpfCey+urpgQEdrZVYzCaVVKiTwhQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - "@ungap/structured-clone@1.3.0": - resolution: - { - integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==, - } - - "@unrs/resolver-binding-android-arm-eabi@1.11.1": - resolution: - { - integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==, - } + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/visitor-keys@8.50.1': + resolution: {integrity: sha512-IrDKrw7pCRUR94zeuCSUWQ+w8JEf5ZX5jl/e6AHGSLi1/zIr0lgutfn/7JpfCey+urpgQEdrZVYzCaVVKiTwhQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + 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==, - } + '@unrs/resolver-binding-android-arm64@1.11.1': + 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==, - } + '@unrs/resolver-binding-darwin-arm64@1.11.1': + resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} cpu: [arm64] os: [darwin] - "@unrs/resolver-binding-darwin-x64@1.11.1": - resolution: - { - integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==, - } + '@unrs/resolver-binding-darwin-x64@1.11.1': + 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==, - } + '@unrs/resolver-binding-freebsd-x64@1.11.1': + 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==, - } + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} cpu: [arm] os: [linux] - "@unrs/resolver-binding-linux-arm-musleabihf@1.11.1": - resolution: - { - integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==, - } + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} cpu: [arm] os: [linux] - "@unrs/resolver-binding-linux-arm64-gnu@1.11.1": - resolution: - { - integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==, - } + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} cpu: [arm64] os: [linux] - "@unrs/resolver-binding-linux-arm64-musl@1.11.1": - resolution: - { - integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==, - } + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} cpu: [arm64] os: [linux] - "@unrs/resolver-binding-linux-ppc64-gnu@1.11.1": - resolution: - { - integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==, - } + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} cpu: [ppc64] os: [linux] - "@unrs/resolver-binding-linux-riscv64-gnu@1.11.1": - resolution: - { - integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==, - } + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} cpu: [riscv64] os: [linux] - "@unrs/resolver-binding-linux-riscv64-musl@1.11.1": - resolution: - { - integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==, - } + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} cpu: [riscv64] os: [linux] - "@unrs/resolver-binding-linux-s390x-gnu@1.11.1": - resolution: - { - integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==, - } + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} cpu: [s390x] os: [linux] - "@unrs/resolver-binding-linux-x64-gnu@1.11.1": - resolution: - { - integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==, - } + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} cpu: [x64] os: [linux] - "@unrs/resolver-binding-linux-x64-musl@1.11.1": - resolution: - { - integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==, - } + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} cpu: [x64] os: [linux] - "@unrs/resolver-binding-wasm32-wasi@1.11.1": - resolution: - { - integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==, - } - engines: { node: ">=14.0.0" } + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + 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==, - } + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} cpu: [arm64] os: [win32] - "@unrs/resolver-binding-win32-ia32-msvc@1.11.1": - resolution: - { - integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==, - } + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + 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==, - } + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} cpu: [x64] os: [win32] - "@yarnpkg/lockfile@1.1.0": - resolution: - { - integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==, - } - - "@yarnpkg/parsers@3.0.2": - 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==, - } + '@yarnpkg/lockfile@1.1.0': + resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} + + '@yarnpkg/parsers@3.0.2': + 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==} 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} + + accept-language-parser@1.5.0: + resolution: {integrity: sha512-QhyTbMLYo0BBGg1aWbeMG4ekWtds/31BrEU+DONOg/7ax23vxpL03Pb7/zBmha2v7vdD3AyzZVWBVGEZxKOXWw==} 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.20.0: - resolution: - { - integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==, - } + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} 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'} 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'} 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'} 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==} axios@1.13.2: - resolution: - { - integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==, - } + resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==} babel-jest@30.2.0: - resolution: - { - integrity: sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==} + 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/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.2.0: - resolution: - { - integrity: sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} 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/core': ^7.0.0 || ^8.0.0-0 babel-preset-jest@30.2.0: - resolution: - { - integrity: sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==} + 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/core': ^7.11.0 || ^8.0.0-beta.1 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} base64-js@1.5.1: - resolution: - { - integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, - } + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} baseline-browser-mapping@2.9.11: - resolution: - { - integrity: sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==, - } + resolution: {integrity: sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==} hasBin: true before-after-hook@2.2.3: - resolution: - { - integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==, - } + resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} 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} bl@4.1.0: - resolution: - { - integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, - } + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} body-parser@2.2.2: - resolution: - { - integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} + engines: {node: '>=18'} 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@1.1.14: - resolution: - { - integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==, - } + resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==} brace-expansion@2.0.2: - resolution: - { - integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==, - } + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} brace-expansion@2.1.0: - resolution: - { - integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==, - } + resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==} brace-expansion@5.0.5: - resolution: - { - integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==, - } - engines: { node: 18 || 20 || >=22 } + resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} + 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'} 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==} 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'} 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'} caniuse-lite@1.0.30001761: - resolution: - { - integrity: sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==, - } + resolution: {integrity: sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==} 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==} 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'} cjs-module-lexer@2.1.1: - resolution: - { - integrity: sha512-+CmxIZ/L2vNcEfvNtLdU0ZQ6mbq3FZnwAP2PPTiKP+1QOoKwlKlPgb8UKV0Dds7QVaMnHm+FwSft2VB0s/SLjQ==, - } + resolution: {integrity: sha512-+CmxIZ/L2vNcEfvNtLdU0ZQ6mbq3FZnwAP2PPTiKP+1QOoKwlKlPgb8UKV0Dds7QVaMnHm+FwSft2VB0s/SLjQ==} 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@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'} 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==} 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} console-control-strings@1.1.0: - resolution: - { - integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==, - } + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} content-disposition@1.1.0: - resolution: - { - integrity: sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==} + 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'} 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" + typescript: '>=4.9.5' peerDependenciesMeta: typescript: optional: true create-require@1.1.1: - resolution: - { - integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==, - } + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} cross-spawn@7.0.6: - resolution: - { - integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} 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 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 + + csv-parser@3.2.1: + resolution: {integrity: sha512-v8RPMSglouR9od735SnwSxLBbCJqEPSbgm1R5qfr8yIiMUCEFjox56kRZid0SvgHJEkxeIEu3+a9QS3YRh7CuA==} + engines: {node: '>= 10'} hasBin: true csv-to-pg@3.16.1: - resolution: - { - integrity: sha512-4TzQHzn1D/PhaDA5QFh3YDIf07grY5e7j5xyl7PlMHkoVliE4teqLrATu32oUyPyoizF/KgQLBL5XQX1Paws6Q==, - } + resolution: {integrity: sha512-4TzQHzn1D/PhaDA5QFh3YDIf07grY5e7j5xyl7PlMHkoVliE4teqLrATu32oUyPyoizF/KgQLBL5XQX1Paws6Q==} hasBin: true - csv-to-pg@3.17.0: - resolution: - { - integrity: sha512-h0luleT+gqBpkPq1wX5R9h1fxUKMUxZAWhpMHNFt4XcpzLaMZnfKHSI5LHri/5gIIdwPS3oQWVDZhPlRBmi24A==, - } + csv-to-pg@3.18.0: + resolution: {integrity: sha512-+ZyZeNhrkhpT8304UQN4RhmxGJ01PCOncDvnUxMPDpbxeWX5hvWj+dOAvQEiN4nH5QQ//ShsN48eX8ykMydQVQ==} 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: "*" + supports-color: '*' peerDependenciesMeta: supports-color: 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'} dedent@1.5.3: - resolution: - { - integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==, - } + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -4386,10 +2481,7 @@ packages: optional: true dedent@1.7.1: - resolution: - { - integrity: sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==, - } + resolution: {integrity: sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -4397,539 +2489,292 @@ 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@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==} 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'} 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'} 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==} 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@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@4.5.0: - resolution: - { - integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, - } - engines: { node: ">=0.12" } + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + 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'} 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'} escalade@3.2.0: - resolution: - { - integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} 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: '>=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: '>=5.0.0' eslint-plugin-unused-imports@4.3.0: - resolution: - { - integrity: sha512-ZFBmXMGBYfHttdRtOG9nFFpmUvMtbHSjsKrS20vdWdbfiVYsO3yA2SGYy9i9XmZJDfMGBflZGBCm70SEnFQtOA==, - } + resolution: {integrity: sha512-ZFBmXMGBYfHttdRtOG9nFFpmUvMtbHSjsKrS20vdWdbfiVYsO3yA2SGYy9i9XmZJDfMGBflZGBCm70SEnFQtOA==} peerDependencies: - "@typescript-eslint/eslint-plugin": ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 eslint: ^9.0.0 || ^8.0.0 peerDependenciesMeta: - "@typescript-eslint/eslint-plugin": + '@typescript-eslint/eslint-plugin': 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@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: "*" + jiti: '*' peerDependenciesMeta: jiti: 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" } - - etag-hash@2.12.0: - resolution: - { - integrity: sha512-N13AjOz9d9WrBlHlfVQOUnZGg4Qz04kUsjEi+P1X+OnqHCWItYPnojsJDU4Q64NZGKUijpWWjj6VeoMh76eirg==, - } - - etag-hash@2.16.1: - resolution: - { - integrity: sha512-vphiZJwd1ECvAfMARGN4DadqkNVgKBOyHTE2N7pDdU49wWp40KTTMI0P0TZrbGpED8pbvWT8+alF23cH4r1RUA==, - } - - etag-hash@2.17.0: - resolution: - { - integrity: sha512-m2n5Dn6A2/jYb/o6Uy7H/ELzqVQW5m38OSZSi4IoGAOL7T/FN5rPxJZqIsDdukKhcoqJMZZQdg7jf4fUxrbzpw==, - } + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag-hash@2.18.0: + resolution: {integrity: sha512-AyMhpjq2lzw4yzrFSpBeYNQfN/kZ5cNn048pgAucQT9vg0ajqraodxKt+zvMHSO90AMrl1ZOPNybIp0f82PEFQ==} 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} 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-uri@3.1.0: - resolution: - { - integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==, - } - - fast-xml-builder@1.1.5: - resolution: - { - integrity: sha512-4TJn/8FKLeslLAH3dnohXqE3QSoxkhvaMzepOIZytwJXZO69Bfz0HBdDHzOTOon6G59Zrk6VQ2bEiv1t61rfkA==, - } - - fast-xml-parser@5.7.2: - resolution: - { - integrity: sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w==, - } - hasBin: true + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} 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: @@ -4937,142 +2782,88 @@ 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: "*" + debug: '*' peerDependenciesMeta: debug: optional: true follow-redirects@1.16.0: - resolution: - { - integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==, - } - engines: { node: ">=4.0" } + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} + engines: {node: '>=4.0'} peerDependencies: - debug: "*" + debug: '*' peerDependenciesMeta: debug: 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'} 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.38.0: - resolution: - { - integrity: sha512-rFYkY/pigbcswl1XQSb7q424kSTQ8q6eAC+YUsSKooHQYuLdzdHjrt6uxUC+PRAO++q5IS7+TamgIw1AphxR+g==, - } + resolution: {integrity: sha512-rFYkY/pigbcswl1XQSb7q424kSTQ8q6eAC+YUsSKooHQYuLdzdHjrt6uxUC+PRAO++q5IS7+TamgIw1AphxR+g==} peerDependencies: - "@emotion/is-prop-valid": "*" + '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 peerDependenciesMeta: - "@emotion/is-prop-valid": + '@emotion/is-prop-valid': optional: true react: optional: true @@ -5080,292 +2871,166 @@ 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-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.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.11: - resolution: - { - integrity: sha512-Db2GKcRqCd3jkgYikB23gJA5qzqaNEPmaDzXYzep3Zz8cBgPQD6aV+ZLlfMgsrj6WKCe+pjgT4qoQwHiEyUNkg==, - } + resolution: {integrity: sha512-Db2GKcRqCd3jkgYikB23gJA5qzqaNEPmaDzXYzep3Zz8cBgPQD6aV+ZLlfMgsrj6WKCe+pjgT4qoQwHiEyUNkg==} + + genomic@5.6.0: + resolution: {integrity: sha512-5VimMClR8yfML+kxmaFAYgPbGqIJ9fhQduNv2V0vnCj+8BqjOyfOnX21jvp0GIkKQSyUZh0YUO5ewMKQqbUEfg==} 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-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'} 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'} 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==} 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'} 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" } - - gql-ast@3.10.0: - resolution: - { - integrity: sha512-aaJHPCc8jPq1eGbQ/LvrB78u90ruML8kgwBEb0J5ZlD3ihGGgkRCU16H96GgWiO7IJ14jjQoHWZ0ugMNkg1dXA==, - } - - gql-ast@3.5.0: - resolution: - { - integrity: sha512-bQYxu1WTRK/nY2Dx7VgxNnvI62KIQzi2puhncbxiozrLBvgNG8n9y47H66pjTmA8ZekiECQNsd7IwXsspvjJgA==, - } - - gql-ast@3.9.1: - resolution: - { - integrity: sha512-umr44exdhvlLmQuF688Iih6Nvw/BXihynXplkbUsto1McTsW2taZSH+dn2n7c64VQy8ah4++7PzTA4AckbcPag==, - } + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + gql-ast@3.11.0: + resolution: {integrity: sha512-LZ2dTQPOsTtdX/GaIxBTjtN0OmXCMLvNA28GrsD9eldbiAjUiT6hI7MxgB5z2FBOH2HIjyyGp1JB0yPzodeXeA==} graceful-fs@4.2.11: - 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-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + grafast@1.0.2: + resolution: {integrity: sha512-E3PH6hfOfhlJxMmiBplWs3KDmJTIQr/iZ9hs4c73k3pLk9Tx2nSdVNBVIe7D1stejgPbyC6wRxLfXtJmDx2P7A==} + engines: {node: '>=22'} peerDependencies: - "@envelop/core": ^5.0.0 + '@envelop/core': ^5.0.0 graphql: ^16.9.0 peerDependenciesMeta: - "@envelop/core": + '@envelop/core': 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 + '@envelop/core': ^5.0.0 + '@whatwg-node/server': ^0.9.64 grafast: ^1.0.0-rc.8 graphile-config: ^1.0.0 graphql: ^16.9.0 @@ -5373,9 +3038,9 @@ packages: hono: ^4.6.15 ws: ^8.12.1 peerDependenciesMeta: - "@envelop/core": + '@envelop/core': optional: true - "@whatwg-node/server": + '@whatwg-node/server': optional: true h3: optional: true @@ -5384,56 +3049,22 @@ packages: ws: optional: true - graphile-bucket-provisioner-plugin@0.10.1: - resolution: - { - integrity: sha512-azunZ4FYHaJkJnCbgYVNJjrasNnov4qvs9Yq7ZvIPfL45Bj6BliZuTNdlHvcdAAbcXScO0OCCQcNNZkq0g9/kg==, - } - peerDependencies: - grafast: 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphile-utils: 5.0.0 - graphql: 16.13.0 - postgraphile: 5.0.0 - - graphile-bucket-provisioner-plugin@0.11.0: - resolution: - { - integrity: sha512-MEdwvvVL3QTyF2YqU3bAS3mfbvgIdkEv8bfIQ/F+srJ0LxI5cRbq2ksuG/pmCTRcuVFsXftRrRoPAbjDQviQCw==, - } + graphile-bucket-provisioner-plugin@0.12.0: + resolution: {integrity: sha512-YTjyvXGoccjI/Ly9zlt3wrw5ydH8+2NAwm+d13CWjiBF7V8g9b7YMuPkJtUZ5+9ECDHba0aZaWqTHAq0eLE0aQ==} peerDependencies: - grafast: 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 + grafast: 1.0.2 + graphile-build: 5.0.2 + graphile-build-pg: 5.0.2 + graphile-config: 1.0.1 graphile-utils: 5.0.0 graphql: 16.13.0 - postgraphile: 5.0.0 + postgraphile: 5.0.3 - graphile-bucket-provisioner-plugin@0.4.2: - resolution: - { - integrity: sha512-n03fKqwo4XVuKN9VNjn2qPTSSWLPSZstVWO5U2RyjzVXcdRovsqduVzVNp0nGtiUNZVtMpVsYklU9Tn/50J31A==, - } + graphile-build-pg@5.0.2: + resolution: {integrity: sha512-8vkg1x5UcooFogPCp+3EUt6qqWX8NG01gANoVFUk9yK2c8DW+aQaF37LAaa96r9JR4FE0yeO2zk6WvOOemk2dg==} + engines: {node: '>=22'} peerDependencies: - grafast: 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphile-utils: 5.0.0 - graphql: 16.13.0 - postgraphile: 5.0.0 - - graphile-build-pg@5.0.0: - resolution: - { - integrity: sha512-a0FAR5n8UIYMAI1URIuWAAb+dZUDNrP09rYdg7veBUhJQyBtfkUHGNwZ+gDEhRBOvr/eRrw5Jkqc+Moi+XwW8A==, - } - engines: { node: ">=22" } - peerDependencies: - "@dataplan/pg": ^1.0.0-rc.7 + '@dataplan/pg': ^1.0.0-rc.7 grafast: ^1.0.0-rc.8 graphile-build: ^5.0.0-rc.5 graphile-config: ^1.0.0-rc.5 @@ -5445,436 +3076,170 @@ packages: pg: optional: true - graphile-build@5.0.0: - resolution: - { - integrity: sha512-hGieff6/UaikT7ywWv2XTFa1mGJ1Zdytqbfw0bmVlXWMOeJGpvCdx9+k5Kpw7aIZ92twPa5yb2HUo0Q8j2Kwzw==, - } - engines: { node: ">=22" } + graphile-build@5.0.2: + resolution: {integrity: sha512-ELhDDZ2Y3ZWmF+ZziEd9ytMxFnmBoCX4/1My2Jhifr1FUD9IzWFhzH2qAWKmTvDrIy7b6jc4SV23lWmTbiD3ZA==} + engines: {node: '>=22'} peerDependencies: grafast: ^1.0.0-rc.8 graphile-config: ^1.0.0-rc.5 graphql: ^16.9.0 - graphile-bulk-mutations@0.3.1: - resolution: - { - integrity: sha512-BfPF3CeV4ocdCBeoe+H0mFfjlpScjdtD8LripSCKY8V4qH7ruBun1uPD0rXVteasNIxXHnVGel5lI38shLgeVg==, - } - peerDependencies: - "@dataplan/pg": 1.0.0 - grafast: 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0 - - graphile-config@1.0.0: - resolution: - { - integrity: sha512-nPKrrpmYT/cMibqHnNL+zLIRrC/SQhop7yV4tZiyrC/C0mckdlghRWR9oPV7UppkeFIdgTt5/7UQCrwhX82faQ==, - } - engines: { node: ">=22" } - - graphile-connection-filter@1.10.1: - resolution: - { - integrity: sha512-+j1/O9Ds2ZFi5AAM2OG67pX/YSlqHf9wqekHW5nQROuEx4BmhP+6ilkj/RTcIWFXOmeJT0i6/6j7y98crc6hgw==, - } - peerDependencies: - "@dataplan/pg": 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0 - - graphile-connection-filter@1.5.5: - resolution: - { - integrity: sha512-+SVkXEvScEK/pQxfDKZLIhq9QUGYNwB7fYISQV7rUPr5aS70TIPGGaRxLxCrjV0N6pG4Fn4RalkNdN1JSNRMSA==, - } - peerDependencies: - "@dataplan/pg": 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0 - - graphile-connection-filter@1.9.1: - resolution: - { - integrity: sha512-0H82b2x9mpBwOQwRhcg/r491v/COp1LozpuhVCC1//0txdmnf0LN+q7scIz7CkECwd0kbt00slque93eAkluMg==, - } - peerDependencies: - "@dataplan/pg": 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0 - - graphile-ltree@1.6.1: - resolution: - { - integrity: sha512-PQ4qQKaaXNgZ9z61YEyuq6Wllg9FmYUa7iJLlhPr+w4EdY1m8xAnCwr4phMM8o0coQYxAAC22TMQOpKaxxa/LQ==, - } + graphile-bulk-mutations@0.5.5: + resolution: {integrity: sha512-fwqFET8hmfmBzlkEvpMJYDdymgU8mn846kVcgI9w0hAvBjt56BF7RKKELzJClNfj4k60HMbXWcnrpHn2wKQIFg==} peerDependencies: - "@dataplan/pg": 1.0.0 - grafast: 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphile-connection-filter: ^1.9.1 + '@dataplan/pg': 1.0.3 + grafast: 1.0.2 + graphile-build: 5.0.2 + graphile-build-pg: 5.0.2 + graphile-config: 1.0.1 graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0 - peerDependenciesMeta: - graphile-connection-filter: - optional: true + pg-sql2: 5.0.1 + postgraphile: 5.0.3 - graphile-ltree@1.7.1: - resolution: - { - integrity: sha512-xswJfC/KgALTXbkslUSjpDBwO5xeKX1pUgtX4DXICGMUM9VFQADyMungR0MDAVY8EkrpS7gQj5giBTCDLGl8zQ==, - } - peerDependencies: - "@dataplan/pg": 1.0.0 - grafast: 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphile-connection-filter: ^1.10.1 - graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0 - peerDependenciesMeta: - graphile-connection-filter: - optional: true + graphile-cache@3.13.2: + resolution: {integrity: sha512-IZ8w1zFsb35fP7k4JeE5EQYelLkJH6nbh3d1kxB/SlKWmgMeSXgRrPlyCS04buPPGF3vU/DQt/1fs2sOf9mBeQ==} + + graphile-config@1.0.1: + resolution: {integrity: sha512-sVdSWNmetW/WZKVQ0Dii2kCu0Le6X6qwuBRecWg575iOMjbZgxo+b4oVeSOTtR6NTKuLsMYQBkzSaeoAKOPB+A==} + engines: {node: '>=22'} - graphile-pg-aggregates@1.2.1: - resolution: - { - integrity: sha512-qPNWZ0JrrkEmc2o8Oa2Bu/4CycKCBQl2pXBtybRKfcpNy7rSl9P1d1AjnlqpcK4zSbjSxVzvRzMzp+h92LqmGg==, - } + graphile-connection-filter@1.12.5: + resolution: {integrity: sha512-Huo22YVAxtyybfwlFdLxIbkB0/qVx2rJAtFzcEuxqhk5XCTpKg6tuh9PJ4A5jLzz+On20JE7foMloXJHLVBE7w==} peerDependencies: - "@dataplan/pg": 1.0.0 - grafast: 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphile-connection-filter: ^1.9.1 + '@dataplan/pg': 1.0.3 + graphile-build: 5.0.2 + graphile-build-pg: 5.0.2 + graphile-config: 1.0.1 graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0 - - graphile-pg-aggregates@1.3.1: - resolution: - { - integrity: sha512-OjCrevFcHvYjbT1GnxiTjwMEPhc3KT/NhBMn1qdRO9Y86pKj+Dek0MPthImaJnuyGhG0ew5HsoWaqguETQvs/Q==, - } + pg-sql2: 5.0.1 + postgraphile: 5.0.3 + + graphile-i18n@1.2.6: + resolution: {integrity: sha512-TcJ5oHkUipOh69zk06q77B9DHPqohng73JBW/dRIRUYZvIj7jyKwRTwWkj5sU4HYzyU/KhuuLVh4Lqc5hGpnbw==} peerDependencies: - "@dataplan/pg": 1.0.0 - grafast: 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphile-connection-filter: ^1.10.1 + '@dataplan/pg': 1.0.3 + grafast: 1.0.2 + graphile-build: 5.0.2 + graphile-build-pg: 5.0.2 + graphile-config: 1.0.1 graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0 - - graphile-postgis@2.11.6: - resolution: - { - integrity: sha512-Q+mWNYgvl5Mk5cPd6ccdAy7SDx2VRpZ8BtLi89xN+fnsi35G90WB6Iq/O/8Wv2UeVeaZ0AvoX0vEohDCR/jeRg==, - } - peerDependencies: - "@dataplan/pg": 1.0.0 - grafast: 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphile-connection-filter: ^1.5.5 + pg-sql2: 5.0.1 + postgraphile: 5.0.3 + + graphile-llm@0.12.2: + resolution: {integrity: sha512-+Lq9HrelTdupGKNEtvhshufllvvhUZfU5NbC6vE7lqkV8xcES/lNcxVSWcZ7GT1RDkvxfn0XX/pQjIVk3NhCuw==} + peerDependencies: + '@dataplan/pg': 1.0.3 + grafast: 1.0.2 + graphile-build: 5.0.2 + graphile-build-pg: 5.0.2 + graphile-config: 1.0.1 + graphile-search: workspace:^ + graphile-utils: 5.0.0 graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0 + pg-sql2: 5.0.1 + postgraphile: 5.0.3 peerDependenciesMeta: - graphile-connection-filter: + graphile-search: + optional: true + graphile-utils: optional: true - graphile-postgis@2.15.1: - resolution: - { - integrity: sha512-UYmA0z2FOabEkM3ykMkL9mHmaj9BoZNt9KhiB/6Ofr5fKDS4FwROhpKuuxNrjKRC0m1DToQdqcVEzRmyNjkDCg==, - } + graphile-ltree@1.9.6: + resolution: {integrity: sha512-1qsvEimLBjjM/GAbROgrhw/Vu/tjRLwLYolPcW3+NsCE46+GrAnApnN9GlXchpQ+fKS9PWPCZpwlv6yNMOk9Vg==} peerDependencies: - "@dataplan/pg": 1.0.0 - grafast: 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphile-connection-filter: ^1.9.1 + '@dataplan/pg': 1.0.3 + grafast: 1.0.2 + graphile-build: 5.0.2 + graphile-build-pg: 5.0.2 + graphile-config: 1.0.1 + graphile-connection-filter: ^1.12.5 graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0 + pg-sql2: 5.0.1 + postgraphile: 5.0.3 peerDependenciesMeta: graphile-connection-filter: optional: true - graphile-postgis@2.16.1: - resolution: - { - integrity: sha512-cA4eld1GzIjb3j6R1G9d0O2I0sITG4loEWa74xRFWwQVUheHqjvDsxyNplYtQ/lkFkF5tEa7Zp0BzxihlqZbNg==, - } + graphile-pg-aggregates@1.5.5: + resolution: {integrity: sha512-p/te5vFNL0x/CouEG2EeaB10vUe9Y47JGZf4zOd8DqfIXvoiJI7QfisOPW4SIOazkCQnlkb7WuYH9Q+UYKouXA==} peerDependencies: - "@dataplan/pg": 1.0.0 - grafast: 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphile-connection-filter: ^1.10.1 + '@dataplan/pg': 1.0.3 + grafast: 1.0.2 + graphile-build: 5.0.2 + graphile-build-pg: 5.0.2 + graphile-config: 1.0.1 + graphile-connection-filter: ^1.12.5 + graphql: 16.13.0 + pg-sql2: 5.0.1 + postgraphile: 5.0.3 + + graphile-postgis@2.18.5: + resolution: {integrity: sha512-43FKsY+QNEarEoG93O6uZpgLyHoeBiNXGnNOlAR7qgmF3YYQwA6CdK+WMoQHRsU7mMh2FUDwgbhkIb1R6LZF7w==} + peerDependencies: + '@dataplan/pg': 1.0.3 + grafast: 1.0.2 + graphile-build: 5.0.2 + graphile-build-pg: 5.0.2 + graphile-config: 1.0.1 + graphile-connection-filter: ^1.12.5 graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0 + pg-sql2: 5.0.1 + postgraphile: 5.0.3 peerDependenciesMeta: graphile-connection-filter: optional: true - graphile-presigned-url-plugin@0.17.1: - resolution: - { - integrity: sha512-YimqIMe5EVWFIrRy8bTL2jNv5dVG4A2MozIMrkyQJhOV+oa0ISXijml4HnBu7wKjrIA13+2VWKCmap+o05PTqA==, - } - peerDependencies: - grafast: 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphile-utils: 5.0.0 - graphql: 16.13.0 - postgraphile: 5.0.0 - - graphile-presigned-url-plugin@0.19.0: - resolution: - { - integrity: sha512-rsTyTfO6XvMTKwaioUuz/CtjBBlEVrzTbbkM851EzoF0tqdKGwjMLdTvCkhqr+yjv85fQMXLvOfCeAarj0C5fw==, - } + graphile-presigned-url-plugin@0.20.2: + resolution: {integrity: sha512-J9iynnxxWCdXmess+ioG/cP8crhKwb6RenEcFRdd4RFLotMppPmS92WkUPIPKqd9//2PJ9xY6R9VHPkh1FebNQ==} peerDependencies: - grafast: 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 + grafast: 1.0.2 + graphile-build: 5.0.2 + graphile-build-pg: 5.0.2 + graphile-config: 1.0.1 graphile-utils: 5.0.0 graphql: 16.13.0 - postgraphile: 5.0.0 + postgraphile: 5.0.3 - graphile-presigned-url-plugin@0.7.0: - resolution: - { - integrity: sha512-4Cpy8rOLCelb3FglKcnY/PAyVs/C+thrzqbdifWBuQlpil4/Jbm/eD5ZAfhQgg6NTm29c+xQANFbNMFPcXV7yw==, - } + graphile-realtime-subscriptions@0.8.1: + resolution: {integrity: sha512-Ihj6JUzkr+AX7MuEBeHRYm2ccy2kvFrlzsd9vlWPEjqZtn16UqD0e23zJrWV5uHU3VvOD+7BBeIXoLFNDi8/Sg==} peerDependencies: - grafast: 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 + grafast: 1.0.2 + graphile-build: 5.0.2 + graphile-build-pg: 5.0.2 + graphile-config: 1.0.1 graphile-utils: 5.0.0 graphql: 16.13.0 - postgraphile: 5.0.0 - - graphile-realtime-subscriptions@0.5.2: - resolution: - { - integrity: sha512-087bzsyl7TQsK9kO9uxIwxIsMAvyiok8H4H50fNzPKvCwtwGKFu89EbdYgbe0Rg77sgW6Wy6W+rNx5gqJszRVQ==, - } - peerDependencies: - grafast: 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphile-utils: 5.0.0 - graphql: 16.13.0 - postgraphile: 5.0.0 - - graphile-realtime-subscriptions@0.7.0: - resolution: - { - integrity: sha512-P5TpvXoE0lWU9VkyU7Kz1oeS5s8s9TbhrnG7J2qL1Fl0w7zR9kr6B2sD3gp279CTlS4kNioEoKJ8b5YTWfeFxQ==, - } - peerDependencies: - grafast: 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphile-utils: 5.0.0 - graphql: 16.13.0 - postgraphile: 5.0.0 - - graphile-search@1.11.1: - resolution: - { - integrity: sha512-AOgAz7giZDXmfhOtTveU/CjCJrhl6qBtCDtkP3s3sfvGm3HxCXNEkcBCx4u5sf7DE57R7ehCaSBm/gJ6S1qeJg==, - } - peerDependencies: - "@dataplan/pg": 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0 - - graphile-search@1.12.1: - resolution: - { - integrity: sha512-mDU9pp3Uk3M5WrLWDddG0rxRNBtV6IdaI+6IC53g6dGmojF8rowX5exv1RAeYc5JVWFhxFpHtmhWEkVqfZY8Tg==, - } - peerDependencies: - "@dataplan/pg": 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0 - - graphile-search@1.7.5: - resolution: - { - integrity: sha512-MKJ0S3exWC7UGL28rIT980+qVIrdD6TaQ0PMD2NUVybgkRnjeL35e22DUoo2eKoEtTbJFsr00M4rLwazlHoN5w==, - } - peerDependencies: - "@dataplan/pg": 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0 - - graphile-settings@4.22.3: - resolution: - { - integrity: sha512-nnymN0KnWM+IMzOKbmryEP5qRMqXBHDglfxgSNm1pu22r4fOtS8GfwypMCJPNvz/cmfghKgwtp6uRY8tosvahw==, - } - - graphile-settings@4.33.1: - resolution: - { - integrity: sha512-czaTDiTNZLhc5MYITfSQ2C9Ubm38OMCYWWqV5qQ7Epid+AWxJUeU4kFuX6+TRzAes7Pk0hngAEtsEHI+CBvXwQ==, - } - - graphile-settings@5.2.1: - resolution: - { - integrity: sha512-rsrlr8gXuFXI5p14YdScVKEGSKmI4HZsCvXhzEOehR71nKULy9r/IF7kUnwd/ndtGBSFFbDLHmOC325Jlxe8qQ==, - } - - graphile-sql-expression-validator@2.11.1: - resolution: - { - integrity: sha512-LrmoGpjqcEhEHsvNGRZmh/Ddw7cRrkBr0yD3mP7LzEkQ/c9jIaIAE61iJ0QQZLJPwcIGLX7WelmdsUQMLFC7aw==, - } - peerDependencies: - grafast: 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphql: 16.13.0 + postgraphile: 5.0.3 - graphile-sql-expression-validator@2.13.0: - resolution: - { - integrity: sha512-IivpELn9ba5Qg2uycuaY9lMDgQF7uBbGZyf78hvdWFteqI7ddcQ5Cooh9l1D8DZP/mC10JQ5tysi35B07TsqGA==, - } + graphile-search@1.17.1: + resolution: {integrity: sha512-wT4HWOx4nFYruQdvSghtkFGTBhek4W0WD+CVZuUh5yXIuMXyw5eWKp39oe8q04e/7zmhfd0dMKPbGdB8zOuXiQ==} peerDependencies: - grafast: 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 + '@dataplan/pg': 1.0.3 + graphile-build: 5.0.2 + graphile-build-pg: 5.0.2 + graphile-config: 1.0.1 graphql: 16.13.0 + pg-sql2: 5.0.1 + postgraphile: 5.0.3 - graphile-sql-expression-validator@2.7.0: - resolution: - { - integrity: sha512-ajbL7T8YcYME+tp1+1RwNRAsu/G474UMvuzxhz/+RcpxKyQZwuddeCsKYeJ3yw0Xr3cTKU5SjX9U52xotz+b3Q==, - } - peerDependencies: - grafast: 1.0.0 - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphql: 16.13.0 - - graphile-upload-plugin@2.10.1: - resolution: - { - integrity: sha512-ifHU0OH8yhH2qQHI9Fn1aiD5NfeEik0m/hestB2Gpy1swLiGthg2Hygb4v6lxuQR96Hfgu2pO1PVjK373M5eeA==, - } - peerDependencies: - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphql: 16.13.0 - postgraphile: 5.0.0 - - graphile-upload-plugin@2.11.0: - resolution: - { - integrity: sha512-vwp85+dNtOi+m0nqxQJ0cOAVYSowYvc5MfNfuCGbQWUHHpv47rHL/AD43R9q56SKvwK832MrJlpi/A3Ol2d8Ng==, - } - peerDependencies: - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 - graphql: 16.13.0 - postgraphile: 5.0.0 + graphile-settings@5.8.2: + resolution: {integrity: sha512-Uv9tlIW6NkIrOAotL0lqnSqL6SoIApGS3U+/Z6p0UVXQ7kk5KEiEH1E403M2xsuYsBwwT/vRuEiPNlxy6zTQ7w==} - graphile-upload-plugin@2.6.0: - resolution: - { - integrity: sha512-ZhmyMQFydsk9zUrGfLTM7634LJqZ5myPyP3+zxn+o0DQNuh2d6dhq7Co3EAUq7wDZwr897EdLBEDzc/9lKKRTA==, - } + graphile-upload-plugin@2.12.2: + resolution: {integrity: sha512-XK55PHDjvmjss4p9Vt0zVj1edqaflSye7yuwRIiTMrMWuM4yG6CcyFc4evqc8BMsiTTtrhvOwMUOsgZNIMvlyw==} peerDependencies: - graphile-build: 5.0.0 - graphile-build-pg: 5.0.0 - graphile-config: 1.0.0 + graphile-build: 5.0.2 + graphile-build-pg: 5.0.2 + graphile-config: 1.0.1 graphql: 16.13.0 - postgraphile: 5.0.0 - - graphile-utils@5.0.0: - resolution: - { - integrity: sha512-W/qzi7o6w4cakNqapeGNSGmYq0QowsiT0okPdmdUmZe117XiGPACzL+H0vqG0ZqkLUjZ5vNTIOGYQVqJ4Tg6KA==, - } - engines: { node: ">=22" } - peerDependencies: - "@dataplan/pg": ^1.0.0-rc.7 - grafast: ^1.0.0-rc.8 - graphile-build: ^5.0.0-rc.5 - graphile-build-pg: ^5.0.0-rc.7 - graphile-config: ^1.0.0-rc.5 - graphql: ^16.9.0 - tamedevil: ^0.1.0-rc.5 - peerDependenciesMeta: - graphile-build-pg: - optional: true + postgraphile: 5.0.3 graphile-utils@5.0.1: - resolution: - { - integrity: sha512-FtJgxL2BDv1B417sOCsNdu1e3yZkZY7jPMlMHTvzcJLc/7o9rDh+ucJGDmLiKe5Z4lS8KXxVRLZWbxC56/RHcw==, - } - engines: { node: ">=22" } + resolution: {integrity: sha512-FtJgxL2BDv1B417sOCsNdu1e3yZkZY7jPMlMHTvzcJLc/7o9rDh+ucJGDmLiKe5Z4lS8KXxVRLZWbxC56/RHcw==} + engines: {node: '>=22'} peerDependencies: - "@dataplan/pg": ^1.0.0-rc.7 + '@dataplan/pg': ^1.0.0-rc.7 grafast: ^1.0.0-rc.8 graphile-build: ^5.0.0-rc.5 graphile-build-pg: ^5.0.0-rc.7 @@ -5886,37 +3251,28 @@ 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: ^15.5.0 || ^16.0.0 || ^17.0.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: ^15.5.0 || ^16.0.0 || ^17.0.0 graphql-ws@6.0.8: - resolution: - { - integrity: sha512-m3EOaNsUBXwAnkBWbzPfe0Nq8pXUfxsWnolC54sru3FzHvhTZL0Ouf/BoQsaGAXqM+YPerXOJ47BUnmgmoupCw==, - } - engines: { node: ">=20" } + resolution: {integrity: sha512-m3EOaNsUBXwAnkBWbzPfe0Nq8pXUfxsWnolC54sru3FzHvhTZL0Ouf/BoQsaGAXqM+YPerXOJ47BUnmgmoupCw==} + engines: {node: '>=20'} peerDependencies: - "@fastify/websocket": ^10 || ^11 + '@fastify/websocket': ^10 || ^11 crossws: ~0.3 graphql: ^15.10.1 || ^16 ws: ^8 peerDependenciesMeta: - "@fastify/websocket": + '@fastify/websocket': optional: true crossws: optional: true @@ -5924,545 +3280,308 @@ 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@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'} 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==} http-cache-semantics@4.2.0: - resolution: - { - integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==, - } + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} 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'} iconv-lite@0.7.2: - resolution: - { - integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} + engines: {node: '>=0.10.0'} ieee754@1.2.1: - resolution: - { - integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, - } + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 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.8.1: - resolution: - { - integrity: sha512-X8cPy91JMH6EmUPUqgnxc+oYssHdQlitWR23youH2208F2enxElCKc6Mt/5H8KAupYDgOuRuyBO+SRaRXStj8A==, - } + resolution: {integrity: sha512-X8cPy91JMH6EmUPUqgnxc+oYssHdQlitWR23youH2208F2enxElCKc6Mt/5H8KAupYDgOuRuyBO+SRaRXStj8A==} 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'} is-arrayish@0.2.1: - resolution: - { - integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, - } + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 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@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==} 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.2.0: - resolution: - { - integrity: sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-circus@30.2.0: - resolution: - { - integrity: sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-cli@30.2.0: - resolution: - { - integrity: sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==} + 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 @@ -6471,17 +3590,14 @@ packages: optional: true jest-config@30.2.0: - resolution: - { - integrity: sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: - "@types/node": "*" - esbuild-register: ">=3.4.0" - ts-node: ">=9.0.0" + '@types/node': '*' + esbuild-register: '>=3.4.0' + ts-node: '>=9.0.0' peerDependenciesMeta: - "@types/node": + '@types/node': optional: true esbuild-register: optional: true @@ -6489,177 +3605,105 @@ 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-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.2.0: - resolution: - { - integrity: sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-environment-node@30.2.0: - resolution: - { - integrity: sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==} + 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.2.0: - resolution: - { - integrity: sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==} + 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.2.0: - resolution: - { - integrity: sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==} + 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-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-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-pnp-resolver@1.2.3: - resolution: - { - integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} peerDependencies: - jest-resolve: "*" + jest-resolve: '*' peerDependenciesMeta: jest-resolve: 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.2.0: - resolution: - { - integrity: sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-resolve@30.2.0: - resolution: - { - integrity: sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-runner@30.2.0: - resolution: - { - integrity: sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-runtime@30.2.0: - resolution: - { - integrity: sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-snapshot@30.2.0: - resolution: - { - integrity: sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==} + 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-validate@30.2.0: - resolution: - { - integrity: sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-watcher@30.2.0: - resolution: - { - integrity: sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-worker@30.2.0: - resolution: - { - integrity: sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest@30.2.0: - resolution: - { - integrity: sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==, - } - engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==} + 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 @@ -6668,824 +3712,452 @@ packages: optional: true 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'} 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.18.1: - resolution: - { - integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==, - } + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} 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'} lru-cache@10.4.3: - resolution: - { - integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, - } + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} lru-cache@11.3.5: - resolution: - { - integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==, - } - engines: { node: 20 || >=22 } + resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==} + 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'} 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 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@1.1.0: - resolution: - { - integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} 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" + '@types/node': '>=13' peerDependenciesMeta: - "@types/node": + '@types/node': optional: true micromatch@4.0.8: - resolution: - { - integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==, - } - engines: { node: ">=8.6" } - - mime-bytes@0.12.0: - resolution: - { - integrity: sha512-q83R/Y6umBAXmtpeK74a8wg4lUNhrm8ryIThDK0sOb46DPH2hz+M/xzMetwPld1w9LCbaJPhbHPvi/VrVYq4OQ==, - } - - mime-bytes@0.16.1: - resolution: - { - integrity: sha512-+8zm8AC/JyobcvopiVNL51Q6N9hxDX0HcBXY3sdbGZDw3+kSL9z9zRkHWQcw4BoVzBsn88glbAuB8SCvoT4ZKw==, - } - - mime-bytes@0.17.0: - resolution: - { - integrity: sha512-oKr234K3oiRbOLOQUtFYMnNV0czyZSHor8OQkwP1UJx+pTgWMiOc2qUcAE9v/iql857gwWLbYsYg0FAff6AzfQ==, - } + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-bytes@0.18.0: + resolution: {integrity: sha512-HSvwNpFPJvf3AMsjhCi/Wc2kltkix1yABLnwQw2oEImk67Vo3i5oCWAkfFz2DnvqwnicrqLkHdBYCCYdt6asnA==} 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'} 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.5: - resolution: - { - integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==, - } - engines: { node: 18 || 20 || >=22 } + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + 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.4: - resolution: - { - integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==, - } - engines: { node: ">=16 || 14 >=14.17" } + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + 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.5: - resolution: - { - integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==, - } - engines: { node: ">=16 || 14 >=14.17" } + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + 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'} mkdirp@1.0.4: - resolution: - { - integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} hasBin: true 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: ^15.5.0 || ^16.0.0 || ^17.0.0 - monaco-editor: ">= 0.20.0 < 0.53" + monaco-editor: '>= 0.20.0 < 0.53' prettier: ^2.8.0 || ^3.0.0 motion-dom@12.38.0: - resolution: - { - integrity: sha512-pdkHLD8QYRp8VfiNLb8xIBJis1byQ9gPT3Jnh2jqfFtAsWUA3dEepDlsWe/xMpO8McV+VdpKVcp+E+TGJEtOoA==, - } + resolution: {integrity: sha512-pdkHLD8QYRp8VfiNLb8xIBJis1byQ9gPT3Jnh2jqfFtAsWUA3dEepDlsWe/xMpO8McV+VdpKVcp+E+TGJEtOoA==} 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==} 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} 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.5: - resolution: - { - integrity: sha512-04Y7qDMlI8RbYTn0cJAKaw/mLrO9UmLj3xbrjTZKDfOn9f3b/RXEQFIIpveJlwn8KfPwdVFWLZUaL5gNuQ7G0w==, - } + resolution: {integrity: sha512-04Y7qDMlI8RbYTn0cJAKaw/mLrO9UmLj3xbrjTZKDfOn9f3b/RXEQFIIpveJlwn8KfPwdVFWLZUaL5gNuQ7G0w==} + + nested-obj@0.2.2: + resolution: {integrity: sha512-M1etu+T6Ai9Bo06L3K3nWD0ytZWltggBGsrxJlOGvMNGlCA4fokUVlbPKoWzsiiRX+PXq6Cb1xFEn4chiyC7MQ==} 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: @@ -7493,1227 +4165,716 @@ 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==} 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'} 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 - "@swc/core": ^1.3.85 + '@swc-node/register': ^1.8.0 + '@swc/core': ^1.3.85 peerDependenciesMeta: - "@swc-node/register": + '@swc-node/register': optional: true - "@swc/core": + '@swc/core': 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'} 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'} 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 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==} 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" } - - path-expression-matcher@1.5.0: - resolution: - { - integrity: sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==, - } - engines: { node: ">=14.0.0" } + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} path-is-absolute@1.0.1: - resolution: - { - integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, - } - engines: { node: ">=0.10.0" } + 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.4.2: - resolution: - { - integrity: sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==, - } + resolution: {integrity: sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==} path-type@3.0.0: - resolution: - { - integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==, - } - engines: { node: ">=4" } - - pg-cache@3.10.0: - resolution: - { - integrity: sha512-0Z+n2zN0x73XEmIbH1Itb/X3+UvhCvKHMxtStWJlukhGyZrjTvHlK0Y06o0rp7pxvh0EL4PDxDEyFC9Bj8+3AQ==, - } + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + + pg-cache@3.12.1: + resolution: {integrity: sha512-RljMZrLzlLCFya0sQW/SgnsT1hT5a94X8yRfK8/tNfaAG0k3hL6be0F2OUI1Mu8U5HwpTIuYRx1yQ7rpvqF5GA==} pg-cache@3.5.0: - resolution: - { - integrity: sha512-13WM8OHPxw81EEWCAXuIfTh94MCLWbEo6Jn9OCqNx79rM1PaIy40rMsSdKPg9ZJbYiCIaA+ZDZfXCD2XSqvn/Q==, - } + resolution: {integrity: sha512-13WM8OHPxw81EEWCAXuIfTh94MCLWbEo6Jn9OCqNx79rM1PaIy40rMsSdKPg9ZJbYiCIaA+ZDZfXCD2XSqvn/Q==} pg-cache@3.9.1: - resolution: - { - integrity: sha512-GbbWZKosQAN9UHKoDT3thi2MEaor714Yc2Uj2KnjFRnA3mXUmPFQTXLhg+smD9x8sGyS/FvZ05Oa7AnujI8r9g==, - } + resolution: {integrity: sha512-GbbWZKosQAN9UHKoDT3thi2MEaor714Yc2Uj2KnjFRnA3mXUmPFQTXLhg+smD9x8sGyS/FvZ05Oa7AnujI8r9g==} pg-cloudflare@1.3.0: - resolution: - { - integrity: sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==, - } + resolution: {integrity: sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==} + + pg-cloudflare@1.4.0: + resolution: {integrity: sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==} pg-connection-string@2.12.0: - resolution: - { - integrity: sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==, - } + resolution: {integrity: sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==} + + pg-connection-string@2.14.0: + resolution: {integrity: sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg==} pg-copy-streams@7.0.0: - resolution: - { - integrity: sha512-zBvnY6wtaBRE2ae2xXWOOGMaNVPkXh1vhypAkNSKgMdciJeTyIQAHZaEeRAxUjs/p1El5jgzYmwG5u871Zj3dQ==, - } + resolution: {integrity: sha512-zBvnY6wtaBRE2ae2xXWOOGMaNVPkXh1vhypAkNSKgMdciJeTyIQAHZaEeRAxUjs/p1El5jgzYmwG5u871Zj3dQ==} pg-env@1.13.1: - resolution: - { - integrity: sha512-kKqYXnmrZTXg01CUrumw6BFNcyiaPMvaLsXjRiBhTu7EZl72Y7ensaBlgq2L/dQV38gRQWKT+Yy0pa98hyYGKg==, - } + resolution: {integrity: sha512-kKqYXnmrZTXg01CUrumw6BFNcyiaPMvaLsXjRiBhTu7EZl72Y7ensaBlgq2L/dQV38gRQWKT+Yy0pa98hyYGKg==} - pg-env@1.14.0: - resolution: - { - integrity: sha512-kBot+CijShzXge62LxY24ZUddevNlQTamerqmZfRvXuJmK1d3v43b8fzc1mR23hs+CqlviHW17fw9EFRqgTcCQ==, - } + pg-env@1.16.0: + resolution: {integrity: sha512-Jexh/zTP7Tyr5BgP6rcY8RRl1PZu3lUssjyMYbjAhPermtGuHM/dMLlB2MVMyokJvkEDsJZOTrzheadCiJeIpA==} pg-env@1.9.0: - resolution: - { - integrity: sha512-0XYbwyIzOihrh7/AJ/4V6cM1z1QGiSnL9pfiWaGNUcaPWec2T8VCg5/vc3ozfBYaI6SkbUZHu5hpiJ3M9OT+2g==, - } + resolution: {integrity: sha512-0XYbwyIzOihrh7/AJ/4V6cM1z1QGiSnL9pfiWaGNUcaPWec2T8VCg5/vc3ozfBYaI6SkbUZHu5hpiJ3M9OT+2g==} 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.1: - resolution: - { - integrity: sha512-HwxpCEWygpRPfvFf7IVtEPchtjl1Fw0TxzCYXJIQdTEFio/AcGnp2XI5x+LpowbyEa3XgB9L5gvw2D0Jqji4eA==, - } - engines: { node: ">=22" } + resolution: {integrity: sha512-HwxpCEWygpRPfvFf7IVtEPchtjl1Fw0TxzCYXJIQdTEFio/AcGnp2XI5x+LpowbyEa3XgB9L5gvw2D0Jqji4eA==} + 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-pool@3.14.0: + resolution: {integrity: sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==} peerDependencies: - pg: ">=8.0" + pg: '>=8.0' pg-protocol@1.13.0: - resolution: - { - integrity: sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==, - } - - pg-query-context@2.10.0: - resolution: - { - integrity: sha512-J13ZEZXEWLTxluEheJGrg05Rboug+zNEoVNBEmL1wEkds9t03kVPuh6Yl/i4Dxg4GpR/wCWZcQ0FIOHYTYw4wA==, - } - - pg-query-context@2.14.1: - resolution: - { - integrity: sha512-DA0m7vOON2vNtT5DBcvM+A7F/gc+1P+Z29d6Oxa93QEXUGuwztMIu7P//7VQWhoXGT7fcReX+CjY5nHSbejMpg==, - } - - pg-query-context@2.15.0: - resolution: - { - integrity: sha512-SqnrXiGa4R153I3ZKVIUFbQyxcrgBisqEZWDAMPlnG7kFYscuRWmWxlc9SMg3vTAgSylRloWyPFAoK2JqiQf/A==, - } + resolution: {integrity: sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==} + + pg-protocol@1.15.0: + resolution: {integrity: sha512-cq9sECI5s0+uPUXjbz8ioyPJni6RzsRib0US67i5IoTZKw8fNeYlVE7u8F4dG7vEJJtc5wdD1K189lCCUwqWTQ==} + + pg-query-context@2.17.0: + resolution: {integrity: sha512-mKdpTH9ayhIt7DbFtLoxyn31vXblrbNRvp19VmgcrQkPm3fEyLHdViHawDkl8lNKryEcc6mD3QMrxW+U5YhlCw==} pg-seed@0.9.0: - resolution: - { - integrity: sha512-P9fFfR5Aucb0GtajsFfOGp4FWKdGaNve6o0qgikVlbMwMCL+nMlz1TcKTHHkjiFI5lht6dHQUcSHpLd7x6YMzg==, - } - - pg-sql2@5.0.0: - resolution: - { - integrity: sha512-gvmfl0XeOeFjd+1aH5uIp1eZxUM6LmaMP8yy1EWE16XaPeUP8dhKdHtdHc0MsX0ZgCy+1g67yS1HCYWns2TdmQ==, - } - engines: { node: ">=22" } + resolution: {integrity: sha512-P9fFfR5Aucb0GtajsFfOGp4FWKdGaNve6o0qgikVlbMwMCL+nMlz1TcKTHHkjiFI5lht6dHQUcSHpLd7x6YMzg==} + + pg-sql2@5.0.1: + resolution: {integrity: sha512-DdOZNUBhuBuGcq3UgUNsYE9FPdPzw9YA1K/WQxutNhC17DA/CImapyamv6lliVvdAVNZ+CWB1z+p7SmSJmkezw==} + 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" + pg-native: '>=3.0.1' peerDependenciesMeta: pg-native: optional: true - pgpass@1.0.5: - resolution: - { - integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==, - } - - pgpm@4.16.6: - resolution: - { - integrity: sha512-F2IbLHKTIBh6tECEc6b36LSnyALim1HYOlJtQmzdefmyeemmXYkzCMipLL+6m1taD08FPQclfeDSs0b0S/FVEA==, - } - hasBin: true + pg@8.22.0: + resolution: {integrity: sha512-8wih1vVIBMxoUM2oB4soJsD9tDnDpLv4OXBJ+EJzFsvycD+lfyIreC2gGHq78f8jbLLt+bvlPTFdFZfJkOuzAA==} + engines: {node: '>= 16.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true - pgpm@4.23.3: - resolution: - { - integrity: sha512-OnqzEwqZyw4ThXsCy4TCRlbYm/kzzbU3p7yPWQTKPlSs7SHVyTGz+4Yl4Hygw8fAUI/pxp1uM0myoGHWKd6dIw==, - } - hasBin: true + pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} - pgpm@4.24.3: - resolution: - { - integrity: sha512-OAu6wXI0ygJ4xup9QW+Hua6iNEutDI80JRFBZnOehQ2bQhJnMIUED5RoccSCStfJTGnwCOoxb9NjlM95AoIp/Q==, - } + pgpm@4.28.8: + resolution: {integrity: sha512-jaoKPbJPCuru2thcYjsTyXQHyPIS7kPP2EBJWbCvbBU3lyQUkT2AheyOAnZBqMwqR7BNUwRV/nHPEyRnXcJ1Vw==} hasBin: true pgsql-client@3.9.4: - resolution: - { - integrity: sha512-q8qXCuAVhCEf1SjTZvYnKhD32Y7EpeyOuZIJ16pE6OGnupn35eb7m6BzSe3CJs6Difbi6ywrUNQK9l/ugiUMNw==, - } + resolution: {integrity: sha512-q8qXCuAVhCEf1SjTZvYnKhD32Y7EpeyOuZIJ16pE6OGnupn35eb7m6BzSe3CJs6Difbi6ywrUNQK9l/ugiUMNw==} pgsql-deparser@17.18.3: - resolution: - { - integrity: sha512-lD8kPWgw9KAbUbKbQKgzDGzVdtEmp25N+7qZl62I7v8Uu9Wqy7+M0EOeU96++OgPD9S1pyp9MKNGzZzPJF2C4Q==, - } + resolution: {integrity: sha512-lD8kPWgw9KAbUbKbQKgzDGzVdtEmp25N+7qZl62I7v8Uu9Wqy7+M0EOeU96++OgPD9S1pyp9MKNGzZzPJF2C4Q==} pgsql-parser@17.9.15: - resolution: - { - integrity: sha512-6+k0EtTn0CEQTR5v2APARu9En4vm46TpmpdMSfKDHkZwWZuEc08B7SeVg32VxNQ2HD5xk+dQ9TD0k9m+S+vFgg==, - } + resolution: {integrity: sha512-6+k0EtTn0CEQTR5v2APARu9En4vm46TpmpdMSfKDHkZwWZuEc08B7SeVg32VxNQ2HD5xk+dQ9TD0k9m+S+vFgg==} pgsql-seed@2.9.4: - resolution: - { - integrity: sha512-79Tkc5xlXAsp/yZ/St4s2q6ZreoRa1I6TrOrdUgt6DFybOmwJdevZT7lj3rlpPfbru1Y2PJRyLK1imuTaSX15A==, - } + resolution: {integrity: sha512-79Tkc5xlXAsp/yZ/St4s2q6ZreoRa1I6TrOrdUgt6DFybOmwJdevZT7lj3rlpPfbru1Y2PJRyLK1imuTaSX15A==} pgsql-test@4.9.4: - resolution: - { - integrity: sha512-P9Xs+Bl2KKwlFwItwsHAQ5bACHnSb9hmejYHdYhBH7geCZTtKdRv7xfhx7sgvFtpChr9SvtFsiVLLXVYsRttKw==, - } + resolution: {integrity: sha512-P9Xs+Bl2KKwlFwItwsHAQ5bACHnSb9hmejYHdYhBH7geCZTtKdRv7xfhx7sgvFtpChr9SvtFsiVLLXVYsRttKw==} 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'} 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" } - - postgraphile@5.0.0: - resolution: - { - integrity: sha512-BEv+qrOQBgMtzq3xWhHzwD9+cTdFz8XG/x7e4qWd/4+oqIDrKzOX+OXhFW8vx7jeRnvCMQ3Y8DYe/4tS4DJjqA==, - } - engines: { node: ">=22" } + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postgraphile@5.0.3: + resolution: {integrity: sha512-gO8xOusrIykV65V1rmkqnUz3ZjDU+1y09uWruUshP+t811JFsEZsE7d3UJNjAxgrBcndU0CzgmEWCbvbD3kehA==} + engines: {node: '>=22'} hasBin: true peerDependencies: - "@dataplan/json": ^1.0.0 - "@dataplan/pg": ^1.0.0 - "@envelop/core": ^5.0.0 - grafast: ^1.0.0 + '@dataplan/json': ^1.0.0 + '@dataplan/pg': ^1.0.3 + '@envelop/core': ^5.0.0 + grafast: ^1.0.2 grafserv: ^1.0.0 - graphile-build: ^5.0.0 - graphile-build-pg: ^5.0.0 - graphile-config: ^1.0.0 + graphile-build: ^5.0.2 + graphile-build-pg: ^5.0.2 + graphile-config: ^1.0.1 graphql: ^16.9.0 pg: ^8.7.1 - pg-sql2: ^5.0.0 - tamedevil: ^0.1.0 + pg-sql2: ^5.0.1 + tamedevil: ^0.1.1 peerDependenciesMeta: - "@envelop/core": + '@envelop/core': 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.7.4: - resolution: - { - integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} + engines: {node: '>=14'} hasBin: true prettier@3.8.3: - resolution: - { - integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==} + engines: {node: '>=14'} hasBin: true pretty-format@29.7.0: - resolution: - { - integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + 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} 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: "*" + bluebird: '*' peerDependenciesMeta: bluebird: 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} 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==} 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.15.1: - resolution: - { - integrity: sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==, - } - engines: { node: ">=0.6" } + resolution: {integrity: sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==} + 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-aria@3.48.0: - resolution: - { - integrity: sha512-jQjd4rBEIMqecBaAKYJbVGK6EqIHLa5znVQ7jwFyK5vCyljoj6KhgtiahmcIPsG5vG5vEDLw+ba+bEWn6A2P4w==, - } + resolution: {integrity: sha512-jQjd4rBEIMqecBaAKYJbVGK6EqIHLa5znVQ7jwFyK5vCyljoj6KhgtiahmcIPsG5vG5vEDLw+ba+bEWn6A2P4w==} 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-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.5: - resolution: - { - integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==, - } + resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==} peerDependencies: react: ^19.2.5 react-is@18.3.1: - resolution: - { - integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==, - } + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} 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": "*" + '@types/react': '*' react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: - "@types/react": + '@types/react': 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": "*" + '@types/react': '*' react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true react-stately@3.46.0: - resolution: - { - integrity: sha512-OdxhWvHgs2L4OJGIs7hnuTr5WjjMM6enhNEAMRqiekhF8+ITvA2LRwNftOZwcogaoCslGYq5S2VQTQwnm0GbCA==, - } + resolution: {integrity: sha512-OdxhWvHgs2L4OJGIs7hnuTr5WjjMM6enhNEAMRqiekhF8+ITvA2LRwNftOZwcogaoCslGYq5S2VQTQwnm0GbCA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 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": "*" + '@types/react': '*' react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': optional: true react@19.2.5: - resolution: - { - integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==} + 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@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'} redent@3.0.0: - resolution: - { - integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} 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'} 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.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'} 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@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 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.9.0 react: ^18 || ^19 @@ -8725,11 +4886,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 @@ -8743,574 +4901,330 @@ 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==} 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 + + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + 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'} 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.1: - resolution: - { - integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} + 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} slash@3.0.0: - resolution: - { - integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} 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'} 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'} 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'} 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@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==} 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@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" } - - strnum@2.2.3: - resolution: - { - integrity: sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg==, - } + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} 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.11: - resolution: - { - integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==, - } - engines: { node: ^14.18.0 || >=16.0.0 } + resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} + engines: {node: ^14.18.0 || >=16.0.0} tabbable@6.4.0: - resolution: - { - integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==, - } - - tamedevil@0.1.0: - resolution: - { - integrity: sha512-Ry2HVNPnFW6yzNALT+LuABIg2YiTf9orzSl2tCh2mfxLIl0LrnAyadmFDfANdQFzPbPW3Y1DY03QwDoCqJuc/A==, - } - engines: { node: ">=22" } + resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} + + tamedevil@0.1.1: + resolution: {integrity: sha512-YH5/T/FXUYrsfFSsCdLqJwUGAlbTBrK2V78dftXnOIgnOnM9aYBi3C+uUg9pevezjE2ENPyOxHqnXJrTG9WPFQ==} + 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'} 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'} 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'} 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.1.0: - resolution: - { - integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==, - } - engines: { node: ">=18.12" } + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} peerDependencies: - typescript: ">=4.8.4" + 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" - "@jest/transform": ^29.0.0 || ^30.0.0 - "@jest/types": ^29.0.0 || ^30.0.0 + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 || ^30.0.0 + '@jest/types': ^29.0.0 || ^30.0.0 babel-jest: ^29.0.0 || ^30.0.0 - esbuild: "*" + esbuild: '*' jest: ^29.0.0 || ^30.0.0 jest-util: ^29.0.0 || ^30.0.0 - typescript: ">=4.3 <6" + typescript: '>=4.3 <6' peerDependenciesMeta: - "@babel/core": + '@babel/core': optional: true - "@jest/transform": + '@jest/transform': optional: true - "@jest/types": + '@jest/types': optional: true babel-jest: optional: true @@ -9320,433 +5234,247 @@ 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" - "@swc/wasm": ">=1.2.50" - "@types/node": "*" - typescript: ">=2.7" + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' peerDependenciesMeta: - "@swc/core": + '@swc/core': optional: true - "@swc/wasm": + '@swc/wasm': 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==} 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@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 undici-types@6.21.0: - resolution: - { - integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==, - } + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} 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'} 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==} 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" + browserslist: '>= 4.21.0' uri-js@4.4.1: - resolution: - { - integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, - } + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 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": "*" + '@types/react': '*' react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': 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": "*" + '@types/react': '*' react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: - "@types/react": + '@types/react': 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==, - } - - uuid-hash@2.11.0: - resolution: - { - integrity: sha512-HeKC00WFQvaFMUUPmg6APKgHHMB23HXyww/xmX/HlGArp40jWxXu9abUjq98addUt7FoXg/xbujuxZ+XhmkrfA==, - } - - uuid-hash@2.15.1: - resolution: - { - integrity: sha512-BvJEdnSfefIVimQxqgqKTgLJipgn4Zx69YICTQh1fd+yw0Vlx+CA7h287XXMO3Abc+R3Ev8E8Gc18u5mx1Xkug==, - } - - uuid-hash@2.16.0: - resolution: - { - integrity: sha512-I/ijW8LtE3AnMszkR5GZbnTW5QpzYMIH92WPpOMZPtZHowKU7GrMUJ8zjbUfxTiUxdDfUW5/PDyGminfUoNSMA==, - } + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid-hash@2.17.0: + resolution: {integrity: sha512-TLowjnJV/RK5xEThnYJNchTdy+fWInmKwrimv3M3lVYS3gAsZrMSnIpTbr37vxSUj1UhAXF2EALE4r5cQb69BQ==} 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'} 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'} 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==} wcwidth@1.0.1: - resolution: - { - integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, - } + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} webidl-conversions@3.0.1: - resolution: - { - integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, - } + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} whatwg-url@5.0.0: - resolution: - { - integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, - } + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 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.20.0: - resolution: - { - integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==, - } - engines: { node: ">=10.0.0" } + resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} + engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" + utf-8-validate: '>=5.0.2' peerDependenciesMeta: bufferutil: optional: true @@ -9754,100 +5482,61 @@ 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@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@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@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.12: - resolution: - { - integrity: sha512-i77ae3aZq4dhMlRhJVCYgMLKuSiZAaUPAct2AksxQ+gOtimhGMdXljRT21P5BNpeT4kXlLIckvkPM029OljD7g==, - } - engines: { node: ">=12.20.0" } + resolution: {integrity: sha512-i77ae3aZq4dhMlRhJVCYgMLKuSiZAaUPAct2AksxQ+gOtimhGMdXljRT21P5BNpeT4kXlLIckvkPM029OljD7g==} + engines: {node: '>=12.20.0'} peerDependencies: - "@types/react": ">=18.0.0" - immer: ">=9.0.6" - react: ">=18.0.0" - use-sync-external-store: ">=1.2.0" + '@types/react': '>=18.0.0' + immer: '>=9.0.6' + react: '>=18.0.0' + use-sync-external-store: '>=1.2.0' peerDependenciesMeta: - "@types/react": + '@types/react': optional: true immer: optional: true @@ -9857,507 +5546,285 @@ packages: optional: true snapshots: - "@0no-co/graphql.web@1.2.0(graphql@16.13.0)": + + '@0no-co/graphql.web@1.2.0(graphql@16.13.0)': optionalDependencies: graphql: 16.13.0 - "@aws-crypto/crc32@5.2.0": + '@agentic-kit/ollama@2.1.0': dependencies: - "@aws-crypto/util": 5.2.0 - "@aws-sdk/types": 3.973.8 - tslib: 2.8.1 + '@agentic-kit/protocol': 1.2.0 - "@aws-crypto/crc32c@5.2.0": - dependencies: - "@aws-crypto/util": 5.2.0 - "@aws-sdk/types": 3.973.8 - tslib: 2.8.1 + '@agentic-kit/protocol@1.2.0': {} - "@aws-crypto/sha1-browser@5.2.0": + '@aws-crypto/crc32@5.2.0': dependencies: - "@aws-crypto/supports-web-crypto": 5.2.0 - "@aws-crypto/util": 5.2.0 - "@aws-sdk/types": 3.973.8 - "@aws-sdk/util-locate-window": 3.965.5 - "@smithy/util-utf8": 2.3.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.13 tslib: 2.8.1 - "@aws-crypto/sha256-browser@5.2.0": + '@aws-crypto/crc32c@5.2.0': dependencies: - "@aws-crypto/sha256-js": 5.2.0 - "@aws-crypto/supports-web-crypto": 5.2.0 - "@aws-crypto/util": 5.2.0 - "@aws-sdk/types": 3.973.8 - "@aws-sdk/util-locate-window": 3.965.5 - "@smithy/util-utf8": 2.3.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.13 tslib: 2.8.1 - "@aws-crypto/sha256-js@5.2.0": + '@aws-crypto/sha1-browser@5.2.0': dependencies: - "@aws-crypto/util": 5.2.0 - "@aws-sdk/types": 3.973.8 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.13 + '@aws-sdk/util-locate-window': 3.965.5 + '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - "@aws-crypto/supports-web-crypto@5.2.0": + '@aws-crypto/sha256-browser@5.2.0': dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.13 + '@aws-sdk/util-locate-window': 3.965.5 + '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - "@aws-crypto/util@5.2.0": + '@aws-crypto/sha256-js@5.2.0': dependencies: - "@aws-sdk/types": 3.973.8 - "@smithy/util-utf8": 2.3.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.13 tslib: 2.8.1 - "@aws-sdk/client-s3@3.1038.0": - dependencies: - "@aws-crypto/sha1-browser": 5.2.0 - "@aws-crypto/sha256-browser": 5.2.0 - "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.974.6 - "@aws-sdk/credential-provider-node": 3.972.37 - "@aws-sdk/middleware-bucket-endpoint": 3.972.10 - "@aws-sdk/middleware-expect-continue": 3.972.10 - "@aws-sdk/middleware-flexible-checksums": 3.974.14 - "@aws-sdk/middleware-host-header": 3.972.10 - "@aws-sdk/middleware-location-constraint": 3.972.10 - "@aws-sdk/middleware-logger": 3.972.10 - "@aws-sdk/middleware-recursion-detection": 3.972.11 - "@aws-sdk/middleware-sdk-s3": 3.972.35 - "@aws-sdk/middleware-ssec": 3.972.10 - "@aws-sdk/middleware-user-agent": 3.972.36 - "@aws-sdk/region-config-resolver": 3.972.13 - "@aws-sdk/signature-v4-multi-region": 3.996.23 - "@aws-sdk/types": 3.973.8 - "@aws-sdk/util-endpoints": 3.996.8 - "@aws-sdk/util-user-agent-browser": 3.972.10 - "@aws-sdk/util-user-agent-node": 3.973.22 - "@smithy/config-resolver": 4.4.17 - "@smithy/core": 3.23.17 - "@smithy/eventstream-serde-browser": 4.2.14 - "@smithy/eventstream-serde-config-resolver": 4.3.14 - "@smithy/eventstream-serde-node": 4.2.14 - "@smithy/fetch-http-handler": 5.3.17 - "@smithy/hash-blob-browser": 4.2.15 - "@smithy/hash-node": 4.2.14 - "@smithy/hash-stream-node": 4.2.14 - "@smithy/invalid-dependency": 4.2.14 - "@smithy/md5-js": 4.2.14 - "@smithy/middleware-content-length": 4.2.14 - "@smithy/middleware-endpoint": 4.4.32 - "@smithy/middleware-retry": 4.5.7 - "@smithy/middleware-serde": 4.2.20 - "@smithy/middleware-stack": 4.2.14 - "@smithy/node-config-provider": 4.3.14 - "@smithy/node-http-handler": 4.6.1 - "@smithy/protocol-http": 5.3.14 - "@smithy/smithy-client": 4.12.13 - "@smithy/types": 4.14.1 - "@smithy/url-parser": 4.2.14 - "@smithy/util-base64": 4.3.2 - "@smithy/util-body-length-browser": 4.2.2 - "@smithy/util-body-length-node": 4.2.3 - "@smithy/util-defaults-mode-browser": 4.3.49 - "@smithy/util-defaults-mode-node": 4.2.54 - "@smithy/util-endpoints": 3.4.2 - "@smithy/util-middleware": 4.2.14 - "@smithy/util-retry": 4.3.6 - "@smithy/util-stream": 4.5.25 - "@smithy/util-utf8": 4.2.2 - "@smithy/util-waiter": 4.3.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - "@aws-sdk/core@3.974.6": - dependencies: - "@aws-sdk/types": 3.973.8 - "@aws-sdk/xml-builder": 3.972.21 - "@smithy/core": 3.23.17 - "@smithy/node-config-provider": 4.3.14 - "@smithy/property-provider": 4.2.14 - "@smithy/protocol-http": 5.3.14 - "@smithy/signature-v4": 5.3.14 - "@smithy/smithy-client": 4.12.13 - "@smithy/types": 4.14.1 - "@smithy/util-base64": 4.3.2 - "@smithy/util-middleware": 4.2.14 - "@smithy/util-retry": 4.3.6 - "@smithy/util-utf8": 4.2.2 - tslib: 2.8.1 - - "@aws-sdk/crc64-nvme@3.972.7": + '@aws-crypto/supports-web-crypto@5.2.0': dependencies: - "@smithy/types": 4.14.1 tslib: 2.8.1 - "@aws-sdk/credential-provider-env@3.972.32": + '@aws-crypto/util@5.2.0': dependencies: - "@aws-sdk/core": 3.974.6 - "@aws-sdk/types": 3.973.8 - "@smithy/property-provider": 4.2.14 - "@smithy/types": 4.14.1 - tslib: 2.8.1 - - "@aws-sdk/credential-provider-http@3.972.34": - dependencies: - "@aws-sdk/core": 3.974.6 - "@aws-sdk/types": 3.973.8 - "@smithy/fetch-http-handler": 5.3.17 - "@smithy/node-http-handler": 4.6.1 - "@smithy/property-provider": 4.2.14 - "@smithy/protocol-http": 5.3.14 - "@smithy/smithy-client": 4.12.13 - "@smithy/types": 4.14.1 - "@smithy/util-stream": 4.5.25 + '@aws-sdk/types': 3.973.13 + '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - "@aws-sdk/credential-provider-ini@3.972.36": - dependencies: - "@aws-sdk/core": 3.974.6 - "@aws-sdk/credential-provider-env": 3.972.32 - "@aws-sdk/credential-provider-http": 3.972.34 - "@aws-sdk/credential-provider-login": 3.972.36 - "@aws-sdk/credential-provider-process": 3.972.32 - "@aws-sdk/credential-provider-sso": 3.972.36 - "@aws-sdk/credential-provider-web-identity": 3.972.36 - "@aws-sdk/nested-clients": 3.997.4 - "@aws-sdk/types": 3.973.8 - "@smithy/credential-provider-imds": 4.2.14 - "@smithy/property-provider": 4.2.14 - "@smithy/shared-ini-file-loader": 4.4.9 - "@smithy/types": 4.14.1 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - "@aws-sdk/credential-provider-login@3.972.36": + '@aws-sdk/checksums@3.1000.8': dependencies: - "@aws-sdk/core": 3.974.6 - "@aws-sdk/nested-clients": 3.997.4 - "@aws-sdk/types": 3.973.8 - "@smithy/property-provider": 4.2.14 - "@smithy/protocol-http": 5.3.14 - "@smithy/shared-ini-file-loader": 4.4.9 - "@smithy/types": 4.14.1 + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - "@aws-sdk/credential-provider-node@3.972.37": - dependencies: - "@aws-sdk/credential-provider-env": 3.972.32 - "@aws-sdk/credential-provider-http": 3.972.34 - "@aws-sdk/credential-provider-ini": 3.972.36 - "@aws-sdk/credential-provider-process": 3.972.32 - "@aws-sdk/credential-provider-sso": 3.972.36 - "@aws-sdk/credential-provider-web-identity": 3.972.36 - "@aws-sdk/types": 3.973.8 - "@smithy/credential-provider-imds": 4.2.14 - "@smithy/property-provider": 4.2.14 - "@smithy/shared-ini-file-loader": 4.4.9 - "@smithy/types": 4.14.1 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - "@aws-sdk/credential-provider-process@3.972.32": - dependencies: - "@aws-sdk/core": 3.974.6 - "@aws-sdk/types": 3.973.8 - "@smithy/property-provider": 4.2.14 - "@smithy/shared-ini-file-loader": 4.4.9 - "@smithy/types": 4.14.1 + '@aws-sdk/client-s3@3.1075.0': + dependencies: + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/credential-provider-node': 3.972.58 + '@aws-sdk/middleware-flexible-checksums': 3.974.33 + '@aws-sdk/middleware-sdk-s3': 3.972.54 + '@aws-sdk/signature-v4-multi-region': 3.996.35 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/fetch-http-handler': 5.5.2 + '@smithy/node-http-handler': 4.8.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 - "@aws-sdk/credential-provider-sso@3.972.36": - dependencies: - "@aws-sdk/core": 3.974.6 - "@aws-sdk/nested-clients": 3.997.4 - "@aws-sdk/token-providers": 3.1038.0 - "@aws-sdk/types": 3.973.8 - "@smithy/property-provider": 4.2.14 - "@smithy/shared-ini-file-loader": 4.4.9 - "@smithy/types": 4.14.1 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - "@aws-sdk/credential-provider-web-identity@3.972.36": + '@aws-sdk/core@3.974.23': dependencies: - "@aws-sdk/core": 3.974.6 - "@aws-sdk/nested-clients": 3.997.4 - "@aws-sdk/types": 3.973.8 - "@smithy/property-provider": 4.2.14 - "@smithy/shared-ini-file-loader": 4.4.9 - "@smithy/types": 4.14.1 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - "@aws-sdk/lib-storage@3.1038.0(@aws-sdk/client-s3@3.1038.0)": - dependencies: - "@aws-sdk/client-s3": 3.1038.0 - "@smithy/middleware-endpoint": 4.4.32 - "@smithy/protocol-http": 5.3.14 - "@smithy/smithy-client": 4.12.13 - "@smithy/types": 4.14.1 - buffer: 5.6.0 - events: 3.3.0 - stream-browserify: 3.0.0 - tslib: 2.8.1 - - "@aws-sdk/middleware-bucket-endpoint@3.972.10": - dependencies: - "@aws-sdk/types": 3.973.8 - "@aws-sdk/util-arn-parser": 3.972.3 - "@smithy/node-config-provider": 4.3.14 - "@smithy/protocol-http": 5.3.14 - "@smithy/types": 4.14.1 - "@smithy/util-config-provider": 4.2.2 - tslib: 2.8.1 - - "@aws-sdk/middleware-expect-continue@3.972.10": - dependencies: - "@aws-sdk/types": 3.973.8 - "@smithy/protocol-http": 5.3.14 - "@smithy/types": 4.14.1 - tslib: 2.8.1 - - "@aws-sdk/middleware-flexible-checksums@3.974.14": - dependencies: - "@aws-crypto/crc32": 5.2.0 - "@aws-crypto/crc32c": 5.2.0 - "@aws-crypto/util": 5.2.0 - "@aws-sdk/core": 3.974.6 - "@aws-sdk/crc64-nvme": 3.972.7 - "@aws-sdk/types": 3.973.8 - "@smithy/is-array-buffer": 4.2.2 - "@smithy/node-config-provider": 4.3.14 - "@smithy/protocol-http": 5.3.14 - "@smithy/types": 4.14.1 - "@smithy/util-middleware": 4.2.14 - "@smithy/util-stream": 4.5.25 - "@smithy/util-utf8": 4.2.2 + '@aws-sdk/types': 3.973.13 + '@aws-sdk/xml-builder': 3.972.31 + '@aws/lambda-invoke-store': 0.2.4 + '@smithy/core': 3.26.0 + '@smithy/signature-v4': 5.5.2 + '@smithy/types': 4.15.0 + bowser: 2.14.1 tslib: 2.8.1 - "@aws-sdk/middleware-host-header@3.972.10": + '@aws-sdk/credential-provider-env@3.972.49': dependencies: - "@aws-sdk/types": 3.973.8 - "@smithy/protocol-http": 5.3.14 - "@smithy/types": 4.14.1 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - "@aws-sdk/middleware-location-constraint@3.972.10": + '@aws-sdk/credential-provider-http@3.972.51': dependencies: - "@aws-sdk/types": 3.973.8 - "@smithy/types": 4.14.1 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/fetch-http-handler': 5.5.2 + '@smithy/node-http-handler': 4.8.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 - "@aws-sdk/middleware-logger@3.972.10": - dependencies: - "@aws-sdk/types": 3.973.8 - "@smithy/types": 4.14.1 + '@aws-sdk/credential-provider-ini@3.972.56': + dependencies: + '@aws-sdk/core': 3.974.23 + '@aws-sdk/credential-provider-env': 3.972.49 + '@aws-sdk/credential-provider-http': 3.972.51 + '@aws-sdk/credential-provider-login': 3.972.55 + '@aws-sdk/credential-provider-process': 3.972.49 + '@aws-sdk/credential-provider-sso': 3.972.55 + '@aws-sdk/credential-provider-web-identity': 3.972.55 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/credential-provider-imds': 4.4.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 - "@aws-sdk/middleware-recursion-detection@3.972.11": + '@aws-sdk/credential-provider-login@3.972.55': dependencies: - "@aws-sdk/types": 3.973.8 - "@aws/lambda-invoke-store": 0.2.4 - "@smithy/protocol-http": 5.3.14 - "@smithy/types": 4.14.1 - tslib: 2.8.1 - - "@aws-sdk/middleware-sdk-s3@3.972.35": - dependencies: - "@aws-sdk/core": 3.974.6 - "@aws-sdk/types": 3.973.8 - "@aws-sdk/util-arn-parser": 3.972.3 - "@smithy/core": 3.23.17 - "@smithy/node-config-provider": 4.3.14 - "@smithy/protocol-http": 5.3.14 - "@smithy/signature-v4": 5.3.14 - "@smithy/smithy-client": 4.12.13 - "@smithy/types": 4.14.1 - "@smithy/util-config-provider": 4.2.2 - "@smithy/util-middleware": 4.2.14 - "@smithy/util-stream": 4.5.25 - "@smithy/util-utf8": 4.2.2 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - "@aws-sdk/middleware-ssec@3.972.10": - dependencies: - "@aws-sdk/types": 3.973.8 - "@smithy/types": 4.14.1 + '@aws-sdk/credential-provider-node@3.972.58': + dependencies: + '@aws-sdk/credential-provider-env': 3.972.49 + '@aws-sdk/credential-provider-http': 3.972.51 + '@aws-sdk/credential-provider-ini': 3.972.56 + '@aws-sdk/credential-provider-process': 3.972.49 + '@aws-sdk/credential-provider-sso': 3.972.55 + '@aws-sdk/credential-provider-web-identity': 3.972.55 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/credential-provider-imds': 4.4.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 - "@aws-sdk/middleware-user-agent@3.972.36": + '@aws-sdk/credential-provider-process@3.972.49': dependencies: - "@aws-sdk/core": 3.974.6 - "@aws-sdk/types": 3.973.8 - "@aws-sdk/util-endpoints": 3.996.8 - "@smithy/core": 3.23.17 - "@smithy/protocol-http": 5.3.14 - "@smithy/types": 4.14.1 - "@smithy/util-retry": 4.3.6 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - "@aws-sdk/nested-clients@3.997.4": - dependencies: - "@aws-crypto/sha256-browser": 5.2.0 - "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.974.6 - "@aws-sdk/middleware-host-header": 3.972.10 - "@aws-sdk/middleware-logger": 3.972.10 - "@aws-sdk/middleware-recursion-detection": 3.972.11 - "@aws-sdk/middleware-user-agent": 3.972.36 - "@aws-sdk/region-config-resolver": 3.972.13 - "@aws-sdk/signature-v4-multi-region": 3.996.23 - "@aws-sdk/types": 3.973.8 - "@aws-sdk/util-endpoints": 3.996.8 - "@aws-sdk/util-user-agent-browser": 3.972.10 - "@aws-sdk/util-user-agent-node": 3.973.22 - "@smithy/config-resolver": 4.4.17 - "@smithy/core": 3.23.17 - "@smithy/fetch-http-handler": 5.3.17 - "@smithy/hash-node": 4.2.14 - "@smithy/invalid-dependency": 4.2.14 - "@smithy/middleware-content-length": 4.2.14 - "@smithy/middleware-endpoint": 4.4.32 - "@smithy/middleware-retry": 4.5.7 - "@smithy/middleware-serde": 4.2.20 - "@smithy/middleware-stack": 4.2.14 - "@smithy/node-config-provider": 4.3.14 - "@smithy/node-http-handler": 4.6.1 - "@smithy/protocol-http": 5.3.14 - "@smithy/smithy-client": 4.12.13 - "@smithy/types": 4.14.1 - "@smithy/url-parser": 4.2.14 - "@smithy/util-base64": 4.3.2 - "@smithy/util-body-length-browser": 4.2.2 - "@smithy/util-body-length-node": 4.2.3 - "@smithy/util-defaults-mode-browser": 4.3.49 - "@smithy/util-defaults-mode-node": 4.2.54 - "@smithy/util-endpoints": 3.4.2 - "@smithy/util-middleware": 4.2.14 - "@smithy/util-retry": 4.3.6 - "@smithy/util-utf8": 4.2.2 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - "@aws-sdk/region-config-resolver@3.972.13": + '@aws-sdk/credential-provider-sso@3.972.55': dependencies: - "@aws-sdk/types": 3.973.8 - "@smithy/config-resolver": 4.4.17 - "@smithy/node-config-provider": 4.3.14 - "@smithy/types": 4.14.1 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/token-providers': 3.1074.0 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - "@aws-sdk/s3-request-presigner@3.1038.0": + '@aws-sdk/credential-provider-web-identity@3.972.55': dependencies: - "@aws-sdk/signature-v4-multi-region": 3.996.23 - "@aws-sdk/types": 3.973.8 - "@aws-sdk/util-format-url": 3.972.10 - "@smithy/middleware-endpoint": 4.4.32 - "@smithy/protocol-http": 5.3.14 - "@smithy/smithy-client": 4.12.13 - "@smithy/types": 4.14.1 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - "@aws-sdk/signature-v4-multi-region@3.996.23": + '@aws-sdk/lib-storage@3.1075.0(@aws-sdk/client-s3@3.1075.0)': dependencies: - "@aws-sdk/middleware-sdk-s3": 3.972.35 - "@aws-sdk/types": 3.973.8 - "@smithy/protocol-http": 5.3.14 - "@smithy/signature-v4": 5.3.14 - "@smithy/types": 4.14.1 + '@aws-sdk/client-s3': 3.1075.0 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 + buffer: 5.6.0 + events: 3.3.0 + stream-browserify: 3.0.0 tslib: 2.8.1 - "@aws-sdk/token-providers@3.1038.0": + '@aws-sdk/middleware-flexible-checksums@3.974.33': dependencies: - "@aws-sdk/core": 3.974.6 - "@aws-sdk/nested-clients": 3.997.4 - "@aws-sdk/types": 3.973.8 - "@smithy/property-provider": 4.2.14 - "@smithy/shared-ini-file-loader": 4.4.9 - "@smithy/types": 4.14.1 + '@aws-sdk/checksums': 3.1000.8 tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - "@aws-sdk/types@3.973.8": + '@aws-sdk/middleware-sdk-s3@3.972.54': dependencies: - "@smithy/types": 4.14.1 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/signature-v4-multi-region': 3.996.35 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - "@aws-sdk/util-arn-parser@3.972.3": - dependencies: + '@aws-sdk/nested-clients@3.997.23': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/signature-v4-multi-region': 3.996.35 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/fetch-http-handler': 5.5.2 + '@smithy/node-http-handler': 4.8.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 - "@aws-sdk/util-endpoints@3.996.8": + '@aws-sdk/s3-request-presigner@3.1075.0': dependencies: - "@aws-sdk/types": 3.973.8 - "@smithy/types": 4.14.1 - "@smithy/url-parser": 4.2.14 - "@smithy/util-endpoints": 3.4.2 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/signature-v4-multi-region': 3.996.35 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - "@aws-sdk/util-format-url@3.972.10": + '@aws-sdk/signature-v4-multi-region@3.996.35': dependencies: - "@aws-sdk/types": 3.973.8 - "@smithy/querystring-builder": 4.2.14 - "@smithy/types": 4.14.1 + '@aws-sdk/types': 3.973.13 + '@smithy/signature-v4': 5.5.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 - "@aws-sdk/util-locate-window@3.965.5": + '@aws-sdk/token-providers@3.1074.0': dependencies: + '@aws-sdk/core': 3.974.23 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - "@aws-sdk/util-user-agent-browser@3.972.10": + '@aws-sdk/types@3.973.13': dependencies: - "@aws-sdk/types": 3.973.8 - "@smithy/types": 4.14.1 - bowser: 2.14.1 + '@smithy/types': 4.15.0 tslib: 2.8.1 - "@aws-sdk/util-user-agent-node@3.973.22": + '@aws-sdk/util-locate-window@3.965.5': dependencies: - "@aws-sdk/middleware-user-agent": 3.972.36 - "@aws-sdk/types": 3.973.8 - "@smithy/node-config-provider": 4.3.14 - "@smithy/types": 4.14.1 - "@smithy/util-config-provider": 4.2.2 tslib: 2.8.1 - "@aws-sdk/xml-builder@3.972.21": + '@aws-sdk/xml-builder@3.972.31': dependencies: - "@nodable/entities": 2.1.0 - "@smithy/types": 4.14.1 - fast-xml-parser: 5.7.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 - "@aws/lambda-invoke-store@0.2.4": {} + '@aws/lambda-invoke-store@0.2.4': {} - "@babel/code-frame@7.27.1": + '@babel/code-frame@7.27.1': dependencies: - "@babel/helper-validator-identifier": 7.28.5 + '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - "@babel/compat-data@7.28.5": {} + '@babel/compat-data@7.28.5': {} - "@babel/core@7.28.5": + '@babel/core@7.28.5': dependencies: - "@babel/code-frame": 7.27.1 - "@babel/generator": 7.28.5 - "@babel/helper-compilation-targets": 7.27.2 - "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.5) - "@babel/helpers": 7.28.4 - "@babel/parser": 7.28.5 - "@babel/template": 7.27.2 - "@babel/traverse": 7.28.5 - "@babel/types": 7.28.5 - "@jridgewell/remapping": 2.3.5 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3 gensync: 1.0.0-beta.2 @@ -10366,344 +5833,229 @@ snapshots: transitivePeerDependencies: - supports-color - "@babel/generator@7.28.5": + '@babel/generator@7.28.5': dependencies: - "@babel/parser": 7.28.5 - "@babel/types": 7.28.5 - "@jridgewell/gen-mapping": 0.3.13 - "@jridgewell/trace-mapping": 0.3.31 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - "@babel/helper-compilation-targets@7.27.2": + '@babel/helper-compilation-targets@7.27.2': dependencies: - "@babel/compat-data": 7.28.5 - "@babel/helper-validator-option": 7.27.1 + '@babel/compat-data': 7.28.5 + '@babel/helper-validator-option': 7.27.1 browserslist: 4.28.1 lru-cache: 5.1.1 semver: 6.3.1 - "@babel/helper-globals@7.28.0": {} + '@babel/helper-globals@7.28.0': {} - "@babel/helper-module-imports@7.27.1": + '@babel/helper-module-imports@7.27.1': dependencies: - "@babel/traverse": 7.28.5 - "@babel/types": 7.28.5 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color - "@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)": + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-module-imports": 7.27.1 - "@babel/helper-validator-identifier": 7.28.5 - "@babel/traverse": 7.28.5 + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - "@babel/helper-plugin-utils@7.27.1": {} + '@babel/helper-plugin-utils@7.27.1': {} - "@babel/helper-string-parser@7.27.1": {} + '@babel/helper-string-parser@7.27.1': {} - "@babel/helper-validator-identifier@7.28.5": {} + '@babel/helper-validator-identifier@7.28.5': {} - "@babel/helper-validator-option@7.27.1": {} + '@babel/helper-validator-option@7.27.1': {} - "@babel/helpers@7.28.4": + '@babel/helpers@7.28.4': dependencies: - "@babel/template": 7.27.2 - "@babel/types": 7.28.5 + '@babel/template': 7.27.2 + '@babel/types': 7.28.5 - "@babel/parser@7.28.5": + '@babel/parser@7.28.5': dependencies: - "@babel/types": 7.28.5 + '@babel/types': 7.28.5 - "@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.5)": + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.5)": + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.5)": + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.5)": + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.5)": + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.5)": + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.5)": + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)": + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.5)": + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.5)": + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.5)": + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.5)": + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.5)": + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.5)": + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.5)": + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.5)": + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)": + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)': dependencies: - "@babel/core": 7.28.5 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/template@7.27.2": + '@babel/template@7.27.2': dependencies: - "@babel/code-frame": 7.27.1 - "@babel/parser": 7.28.5 - "@babel/types": 7.28.5 + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 - "@babel/traverse@7.28.5": + '@babel/traverse@7.28.5': dependencies: - "@babel/code-frame": 7.27.1 - "@babel/generator": 7.28.5 - "@babel/helper-globals": 7.28.0 - "@babel/parser": 7.28.5 - "@babel/template": 7.27.2 - "@babel/types": 7.28.5 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.5 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.5 + '@babel/template': 7.27.2 + '@babel/types': 7.28.5 debug: 4.4.3 transitivePeerDependencies: - supports-color - "@babel/types@7.28.5": + '@babel/types@7.28.5': dependencies: - "@babel/helper-string-parser": 7.27.1 - "@babel/helper-validator-identifier": 7.28.5 + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 - "@bcoe/v8-coverage@0.2.3": {} + '@bcoe/v8-coverage@0.2.3': {} - "@constructive-io/bucket-provisioner@0.10.1": + '@constructive-io/bucket-provisioner@0.12.0': dependencies: - "@aws-sdk/client-s3": 3.1038.0 - "@constructive-io/s3-utils": 2.16.1 - transitivePeerDependencies: - - aws-crt + '@aws-sdk/client-s3': 3.1075.0 + '@constructive-io/s3-utils': 2.18.0 - "@constructive-io/bucket-provisioner@0.11.0": + '@constructive-io/content-type-stream@2.18.0': dependencies: - "@aws-sdk/client-s3": 3.1038.0 - "@constructive-io/s3-utils": 2.17.0 - transitivePeerDependencies: - - aws-crt + etag-hash: 2.18.0 + mime-bytes: 0.18.0 + uuid-hash: 2.17.0 - "@constructive-io/bucket-provisioner@0.4.1": + '@constructive-io/express-context@0.6.1(express@5.2.1)': dependencies: - "@aws-sdk/client-s3": 3.1038.0 - "@constructive-io/s3-utils": 2.12.1 - transitivePeerDependencies: - - aws-crt - - "@constructive-io/content-type-stream@2.12.0": - dependencies: - etag-hash: 2.12.0 - mime-bytes: 0.12.0 - uuid-hash: 2.11.0 - - "@constructive-io/content-type-stream@2.16.1": - dependencies: - etag-hash: 2.16.1 - mime-bytes: 0.16.1 - uuid-hash: 2.15.1 - - "@constructive-io/content-type-stream@2.17.0": - dependencies: - etag-hash: 2.17.0 - mime-bytes: 0.17.0 - uuid-hash: 2.16.0 - - "@constructive-io/fetch@1.0.0": {} - - "@constructive-io/graphql-env@3.10.1": - dependencies: - "@constructive-io/graphql-types": 3.9.1 - "@pgpmjs/env": 2.22.1 - deepmerge: 4.3.1 - transitivePeerDependencies: - - supports-color - - "@constructive-io/graphql-env@3.11.0": - dependencies: - "@constructive-io/graphql-types": 3.10.0 - "@pgpmjs/env": 2.23.0 - deepmerge: 4.3.1 - transitivePeerDependencies: - - supports-color - - "@constructive-io/graphql-env@3.6.1": - dependencies: - "@constructive-io/graphql-types": 3.9.1 - "@pgpmjs/env": 2.22.1 - deepmerge: 4.3.1 - transitivePeerDependencies: - - supports-color - - "@constructive-io/graphql-query@3.15.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0)": - dependencies: - "@0no-co/graphql.web": 1.2.0(graphql@16.13.0) - "@constructive-io/graphql-types": 3.5.1 - ajv: 8.20.0 - gql-ast: 3.5.0 - grafast: 1.0.0(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphile-settings: 4.22.3(@types/node@22.19.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) - graphql: 16.13.0 - inflection: 3.0.2 - inflekt: 0.7.1 + '@constructive-io/url-domains': 2.17.0 + '@pgpmjs/env': 2.25.1 + '@pgpmjs/logger': 2.12.0 + '@pgpmjs/server-utils': 3.13.1 + '@pgpmjs/types': 2.29.1 + express: 5.2.1 lru-cache: 11.3.5 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) + pg: 8.22.0 + pg-cache: 3.12.1 + pg-query-context: 2.17.0 transitivePeerDependencies: - - "@dataplan/json" - - "@dataplan/pg" - - "@envelop/core" - - "@fastify/websocket" - - "@types/node" - - "@types/react" - - "@types/react-dom" - - "@whatwg-node/server" - - aws-crt - - bufferutil - - crossws - - grafserv - - graphile-build - - h3 - - hono - - immer - - pg - pg-native - - pg-sql2 - - react - - react-dom - supports-color - - tamedevil - - use-sync-external-store - - utf-8-validate - - ws - "@constructive-io/graphql-query@3.23.2(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0)": + '@constructive-io/fetch@1.1.1': {} + + '@constructive-io/graphql-env@3.13.1': dependencies: - "@0no-co/graphql.web": 1.2.0(graphql@16.13.0) - "@constructive-io/graphql-types": 3.9.1 - ajv: 8.20.0 - gql-ast: 3.9.1 - grafast: 1.0.0(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphile-settings: 4.33.1(@types/node@22.19.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) - graphql: 16.13.0 - inflection: 3.0.2 - inflekt: 0.7.1 - lru-cache: 11.3.5 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) + '@constructive-io/graphql-types': 3.12.1 + '@pgpmjs/env': 2.25.1 + deepmerge: 4.3.1 transitivePeerDependencies: - - "@dataplan/json" - - "@dataplan/pg" - - "@envelop/core" - - "@fastify/websocket" - - "@types/node" - - "@types/react" - - "@types/react-dom" - - "@whatwg-node/server" - - aws-crt - - bufferutil - - crossws - - grafserv - - graphile-build - - h3 - - hono - - immer - - pg - - pg-native - - pg-sql2 - - react - - react-dom - supports-color - - tamedevil - - use-sync-external-store - - utf-8-validate - - ws - "@constructive-io/graphql-query@3.25.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0)": + '@constructive-io/graphql-query@3.27.11(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(pg@8.22.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0)': dependencies: - "@0no-co/graphql.web": 1.2.0(graphql@16.13.0) - "@constructive-io/fetch": 1.0.0 - "@constructive-io/graphql-types": 3.10.0 + '@0no-co/graphql.web': 1.2.0(graphql@16.13.0) + '@constructive-io/fetch': 1.1.1 + '@constructive-io/graphql-types': 3.12.1 ajv: 8.20.0 - gql-ast: 3.10.0 - grafast: 1.0.0(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphile-settings: 5.2.1(@types/node@22.19.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + gql-ast: 3.11.0 + grafast: 1.0.2(graphql@16.13.0) + graphile-build-pg: 5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 + graphile-settings: 5.8.2(@types/node@22.19.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) graphql: 16.13.0 inflection: 3.0.2 inflekt: 0.7.1 lru-cache: 11.3.5 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) - transitivePeerDependencies: - - "@dataplan/json" - - "@dataplan/pg" - - "@envelop/core" - - "@fastify/websocket" - - "@types/node" - - "@types/react" - - "@types/react-dom" - - "@whatwg-node/server" - - aws-crt + postgraphile: 5.0.3(2814a1f7ecc203c5cbd501e32669b7b6) + transitivePeerDependencies: + - '@dataplan/json' + - '@dataplan/pg' + - '@envelop/core' + - '@fastify/websocket' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - '@whatwg-node/server' - bufferutil - crossws - grafserv @@ -10722,166 +6074,112 @@ snapshots: - utf-8-validate - ws - "@constructive-io/graphql-types@3.10.0": + '@constructive-io/graphql-types@3.12.1': dependencies: - "@pgpmjs/types": 2.27.0 + '@pgpmjs/types': 2.29.1 deepmerge: 4.3.1 - graphile-config: 1.0.0 - pg-env: 1.14.0 + graphile-config: 1.0.1 + pg-env: 1.16.0 transitivePeerDependencies: - supports-color - "@constructive-io/graphql-types@3.5.1": - dependencies: - "@pgpmjs/types": 2.26.1 - deepmerge: 4.3.1 - graphile-config: 1.0.0 - pg-env: 1.13.1 - transitivePeerDependencies: - - supports-color + '@constructive-io/llm-env@0.1.1': {} - "@constructive-io/graphql-types@3.9.1": + '@constructive-io/s3-streamer@2.26.1': dependencies: - "@pgpmjs/types": 2.26.1 - deepmerge: 4.3.1 - graphile-config: 1.0.0 - pg-env: 1.13.1 - transitivePeerDependencies: - - supports-color + '@aws-sdk/client-s3': 3.1075.0 + '@aws-sdk/lib-storage': 3.1075.0(@aws-sdk/client-s3@3.1075.0) + '@constructive-io/content-type-stream': 2.18.0 + '@constructive-io/s3-utils': 2.18.0 + '@pgpmjs/types': 2.29.1 - "@constructive-io/s3-streamer@2.19.1": + '@constructive-io/s3-utils@2.18.0': dependencies: - "@aws-sdk/client-s3": 3.1038.0 - "@aws-sdk/lib-storage": 3.1038.0(@aws-sdk/client-s3@3.1038.0) - "@constructive-io/content-type-stream": 2.12.0 - "@constructive-io/s3-utils": 2.12.1 - "@pgpmjs/types": 2.26.1 - transitivePeerDependencies: - - aws-crt + '@aws-sdk/client-s3': 3.1075.0 + '@aws-sdk/lib-storage': 3.1075.0(@aws-sdk/client-s3@3.1075.0) + '@aws-sdk/s3-request-presigner': 3.1075.0 - "@constructive-io/s3-streamer@2.23.1": - dependencies: - "@aws-sdk/client-s3": 3.1038.0 - "@aws-sdk/lib-storage": 3.1038.0(@aws-sdk/client-s3@3.1038.0) - "@constructive-io/content-type-stream": 2.16.1 - "@constructive-io/s3-utils": 2.16.1 - "@pgpmjs/types": 2.26.1 - transitivePeerDependencies: - - aws-crt - - "@constructive-io/s3-streamer@2.24.0": - dependencies: - "@aws-sdk/client-s3": 3.1038.0 - "@aws-sdk/lib-storage": 3.1038.0(@aws-sdk/client-s3@3.1038.0) - "@constructive-io/content-type-stream": 2.17.0 - "@constructive-io/s3-utils": 2.17.0 - "@pgpmjs/types": 2.27.0 - transitivePeerDependencies: - - aws-crt - - "@constructive-io/s3-utils@2.12.1": - dependencies: - "@aws-sdk/client-s3": 3.1038.0 - "@aws-sdk/lib-storage": 3.1038.0(@aws-sdk/client-s3@3.1038.0) - "@aws-sdk/s3-request-presigner": 3.1038.0 - transitivePeerDependencies: - - aws-crt + '@constructive-io/upload-names@2.17.0': {} - "@constructive-io/s3-utils@2.16.1": + '@constructive-io/url-domains@2.17.0': dependencies: - "@aws-sdk/client-s3": 3.1038.0 - "@aws-sdk/lib-storage": 3.1038.0(@aws-sdk/client-s3@3.1038.0) - "@aws-sdk/s3-request-presigner": 3.1038.0 - transitivePeerDependencies: - - aws-crt - - "@constructive-io/s3-utils@2.17.0": - dependencies: - "@aws-sdk/client-s3": 3.1038.0 - "@aws-sdk/lib-storage": 3.1038.0(@aws-sdk/client-s3@3.1038.0) - "@aws-sdk/s3-request-presigner": 3.1038.0 + express: 5.2.1 transitivePeerDependencies: - - aws-crt - - "@constructive-io/upload-names@2.11.0": {} - - "@constructive-io/upload-names@2.15.1": {} - - "@constructive-io/upload-names@2.16.0": {} + - supports-color - "@cspotcode/source-map-support@0.8.1": + '@cspotcode/source-map-support@0.8.1': dependencies: - "@jridgewell/trace-mapping": 0.3.9 + '@jridgewell/trace-mapping': 0.3.9 - "@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0))": + '@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0))': dependencies: chalk: 4.1.2 - grafast: 1.0.0(graphql@16.13.0) + grafast: 1.0.2(graphql@16.13.0) tslib: 2.8.1 - "@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)": + '@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)': dependencies: - "@dataplan/json": 1.0.0(grafast@1.0.0(graphql@16.13.0)) - "@graphile/lru": 5.0.0 - "@types/node": 22.19.17 + '@dataplan/json': 1.0.0(grafast@1.0.2(graphql@16.13.0)) + '@graphile/lru': 5.0.0 + '@types/node': 22.19.17 chalk: 4.1.2 debug: 4.4.3 eventemitter3: 5.0.4 - grafast: 1.0.0(graphql@16.13.0) - graphile-config: 1.0.0 + grafast: 1.0.2(graphql@16.13.0) + graphile-config: 1.0.1 graphql: 16.13.0 - pg-sql2: 5.0.0 + pg-sql2: 5.0.1 postgres-array: 3.0.4 postgres-range: 1.1.4 tslib: 2.8.1 optionalDependencies: - pg: 8.20.0 + pg: 8.22.0 transitivePeerDependencies: - supports-color - "@emnapi/core@1.7.1": + '@emnapi/core@1.7.1': dependencies: - "@emnapi/wasi-threads": 1.1.0 + '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 - "@emnapi/runtime@1.7.1": + '@emnapi/runtime@1.7.1': dependencies: tslib: 2.8.1 - "@emnapi/wasi-threads@1.1.0": + '@emnapi/wasi-threads@1.1.0': dependencies: tslib: 2.8.1 - "@emotion/is-prop-valid@1.4.0": + '@emotion/is-prop-valid@1.4.0': dependencies: - "@emotion/memoize": 0.9.0 + '@emotion/memoize': 0.9.0 - "@emotion/memoize@0.9.0": {} + '@emotion/memoize@0.9.0': {} - "@eslint-community/eslint-utils@4.9.0(eslint@9.39.2)": + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2)': dependencies: eslint: 9.39.2 eslint-visitor-keys: 3.4.3 - "@eslint-community/regexpp@4.12.2": {} + '@eslint-community/regexpp@4.12.2': {} - "@eslint/config-array@0.21.1": + '@eslint/config-array@0.21.1': dependencies: - "@eslint/object-schema": 2.1.7 + '@eslint/object-schema': 2.1.7 debug: 4.4.3 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - "@eslint/config-helpers@0.4.2": + '@eslint/config-helpers@0.4.2': dependencies: - "@eslint/core": 0.17.0 + '@eslint/core': 0.17.0 - "@eslint/core@0.17.0": + '@eslint/core@0.17.0': dependencies: - "@types/json-schema": 7.0.15 + '@types/json-schema': 7.0.15 - "@eslint/eslintrc@3.3.3": + '@eslint/eslintrc@3.3.3': dependencies: ajv: 6.12.6 debug: 4.4.3 @@ -10895,83 +6193,83 @@ snapshots: transitivePeerDependencies: - supports-color - "@eslint/js@9.39.2": {} + '@eslint/js@9.39.2': {} - "@eslint/object-schema@2.1.7": {} + '@eslint/object-schema@2.1.7': {} - "@eslint/plugin-kit@0.4.1": + '@eslint/plugin-kit@0.4.1': dependencies: - "@eslint/core": 0.17.0 + '@eslint/core': 0.17.0 levn: 0.4.1 - "@floating-ui/core@1.7.5": + '@floating-ui/core@1.7.5': dependencies: - "@floating-ui/utils": 0.2.11 + '@floating-ui/utils': 0.2.11 - "@floating-ui/dom@1.7.6": + '@floating-ui/dom@1.7.6': dependencies: - "@floating-ui/core": 1.7.5 - "@floating-ui/utils": 0.2.11 + '@floating-ui/core': 1.7.5 + '@floating-ui/utils': 0.2.11 - "@floating-ui/react-dom@2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": + '@floating-ui/react-dom@2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - "@floating-ui/dom": 1.7.6 + '@floating-ui/dom': 1.7.6 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - "@floating-ui/react@0.26.28(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": + '@floating-ui/react@0.26.28(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - "@floating-ui/react-dom": 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@floating-ui/utils": 0.2.11 + '@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@floating-ui/utils': 0.2.11 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) tabbable: 6.4.0 - "@floating-ui/utils@0.2.11": {} + '@floating-ui/utils@0.2.11': {} - "@graphile-contrib/pg-many-to-many@2.0.0-rc.2": {} + '@graphile-contrib/pg-many-to-many@2.0.0-rc.2': {} - "@graphile/lru@5.0.0": + '@graphile/lru@5.0.0': dependencies: tslib: 2.8.1 - "@graphiql/plugin-doc-explorer@0.4.1(@graphiql/react@0.37.3(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))": + '@graphiql/plugin-doc-explorer@0.4.1(@graphiql/react@0.37.3(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))': dependencies: - "@graphiql/react": 0.37.3(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)) - "@headlessui/react": 2.2.10(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@graphiql/react': 0.37.3(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)) + '@headlessui/react': 2.2.10(react-dom@19.2.5(react@19.2.5))(react@19.2.5) graphql: 16.13.0 react: 19.2.5 react-compiler-runtime: 19.1.0-rc.1(react@19.2.5) react-dom: 19.2.5(react@19.2.5) zustand: 5.0.12(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)) transitivePeerDependencies: - - "@types/react" + - '@types/react' - immer - use-sync-external-store - "@graphiql/plugin-history@0.4.1(@graphiql/react@0.37.3(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)))(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))": + '@graphiql/plugin-history@0.4.1(@graphiql/react@0.37.3(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)))(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))': dependencies: - "@graphiql/react": 0.37.3(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)) - "@graphiql/toolkit": 0.11.3(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0) + '@graphiql/react': 0.37.3(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)) + '@graphiql/toolkit': 0.11.3(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0) react: 19.2.5 react-compiler-runtime: 19.1.0-rc.1(react@19.2.5) react-dom: 19.2.5(react@19.2.5) zustand: 5.0.12(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)) transitivePeerDependencies: - - "@types/node" - - "@types/react" + - '@types/node' + - '@types/react' - graphql - graphql-ws - immer - use-sync-external-store - "@graphiql/react@0.37.3(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))": + '@graphiql/react@0.37.3(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))': dependencies: - "@graphiql/toolkit": 0.11.3(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0) - "@radix-ui/react-dialog": 1.1.15(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-dropdown-menu": 2.1.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-tooltip": 1.2.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-visually-hidden": 1.2.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@graphiql/toolkit': 0.11.3(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0) + '@radix-ui/react-dialog': 1.1.15(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-dropdown-menu': 2.1.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-tooltip': 1.2.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) clsx: 1.2.1 framer-motion: 12.38.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) get-value: 3.0.1 @@ -10988,73 +6286,73 @@ snapshots: set-value: 4.1.0 zustand: 5.0.12(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)) transitivePeerDependencies: - - "@emotion/is-prop-valid" - - "@types/node" - - "@types/react" - - "@types/react-dom" + - '@emotion/is-prop-valid' + - '@types/node' + - '@types/react' + - '@types/react-dom' - graphql-ws - immer - use-sync-external-store - "@graphiql/toolkit@0.11.3(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)": + '@graphiql/toolkit@0.11.3(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)': dependencies: - "@n1ru4l/push-pull-async-iterable-iterator": 3.2.0 + '@n1ru4l/push-pull-async-iterable-iterator': 3.2.0 graphql: 16.13.0 meros: 1.3.2(@types/node@22.19.17) optionalDependencies: graphql-ws: 6.0.8(graphql@16.13.0)(ws@8.20.0) transitivePeerDependencies: - - "@types/node" + - '@types/node' - "@headlessui/react@2.2.10(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": + '@headlessui/react@2.2.10(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - "@floating-ui/react": 0.26.28(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@react-aria/focus": 3.22.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@react-aria/interactions": 3.28.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@tanstack/react-virtual": 3.13.24(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@floating-ui/react': 0.26.28(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@react-aria/focus': 3.22.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@react-aria/interactions': 3.28.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@tanstack/react-virtual': 3.13.24(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) use-sync-external-store: 1.6.0(react@19.2.5) - "@humanfs/core@0.19.1": {} + '@humanfs/core@0.19.1': {} - "@humanfs/node@0.16.7": + '@humanfs/node@0.16.7': dependencies: - "@humanfs/core": 0.19.1 - "@humanwhocodes/retry": 0.4.3 + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.4.3 - "@humanwhocodes/module-importer@1.0.1": {} + '@humanwhocodes/module-importer@1.0.1': {} - "@humanwhocodes/retry@0.4.3": {} + '@humanwhocodes/retry@0.4.3': {} - "@hutson/parse-repository-url@3.0.2": {} + '@hutson/parse-repository-url@3.0.2': {} - "@inquirer/external-editor@1.0.3(@types/node@22.19.3)": + '@inquirer/external-editor@1.0.3(@types/node@22.19.3)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.1 optionalDependencies: - "@types/node": 22.19.3 + '@types/node': 22.19.3 - "@inquirerer/utils@3.3.7": + '@inquirerer/utils@3.3.7': dependencies: appstash: 0.7.0 inquirerer: 4.8.1 - semver: 7.7.4 + semver: 7.8.5 - "@internationalized/date@3.12.1": + '@internationalized/date@3.12.1': dependencies: - "@swc/helpers": 0.5.21 + '@swc/helpers': 0.5.21 - "@internationalized/number@3.6.6": + '@internationalized/number@3.6.6': dependencies: - "@swc/helpers": 0.5.21 + '@swc/helpers': 0.5.21 - "@internationalized/string@3.2.8": + '@internationalized/string@3.2.8': dependencies: - "@swc/helpers": 0.5.21 + '@swc/helpers': 0.5.21 - "@isaacs/cliui@8.0.2": + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 @@ -11063,9 +6361,9 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - "@isaacs/string-locale-compare@1.1.0": {} + '@isaacs/string-locale-compare@1.1.0': {} - "@istanbuljs/load-nyc-config@1.1.0": + '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 find-up: 4.1.0 @@ -11073,26 +6371,26 @@ snapshots: js-yaml: 3.14.2 resolve-from: 5.0.0 - "@istanbuljs/schema@0.1.3": {} + '@istanbuljs/schema@0.1.3': {} - "@jest/console@30.2.0": + '@jest/console@30.2.0': dependencies: - "@jest/types": 30.2.0 - "@types/node": 22.19.3 + '@jest/types': 30.2.0 + '@types/node': 22.19.3 chalk: 4.1.2 jest-message-util: 30.2.0 jest-util: 30.2.0 slash: 3.0.0 - "@jest/core@30.2.0(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))": + '@jest/core@30.2.0(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))': dependencies: - "@jest/console": 30.2.0 - "@jest/pattern": 30.0.1 - "@jest/reporters": 30.2.0 - "@jest/test-result": 30.2.0 - "@jest/transform": 30.2.0 - "@jest/types": 30.2.0 - "@types/node": 22.19.3 + '@jest/console': 30.2.0 + '@jest/pattern': 30.0.1 + '@jest/reporters': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.19.3 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 4.3.1 @@ -11120,60 +6418,60 @@ snapshots: - supports-color - ts-node - "@jest/diff-sequences@30.0.1": {} + '@jest/diff-sequences@30.0.1': {} - "@jest/environment@30.2.0": + '@jest/environment@30.2.0': dependencies: - "@jest/fake-timers": 30.2.0 - "@jest/types": 30.2.0 - "@types/node": 22.19.3 + '@jest/fake-timers': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.19.3 jest-mock: 30.2.0 - "@jest/expect-utils@30.2.0": + '@jest/expect-utils@30.2.0': dependencies: - "@jest/get-type": 30.1.0 + '@jest/get-type': 30.1.0 - "@jest/expect@30.2.0": + '@jest/expect@30.2.0': dependencies: expect: 30.2.0 jest-snapshot: 30.2.0 transitivePeerDependencies: - supports-color - "@jest/fake-timers@30.2.0": + '@jest/fake-timers@30.2.0': dependencies: - "@jest/types": 30.2.0 - "@sinonjs/fake-timers": 13.0.5 - "@types/node": 22.19.3 + '@jest/types': 30.2.0 + '@sinonjs/fake-timers': 13.0.5 + '@types/node': 22.19.3 jest-message-util: 30.2.0 jest-mock: 30.2.0 jest-util: 30.2.0 - "@jest/get-type@30.1.0": {} + '@jest/get-type@30.1.0': {} - "@jest/globals@30.2.0": + '@jest/globals@30.2.0': dependencies: - "@jest/environment": 30.2.0 - "@jest/expect": 30.2.0 - "@jest/types": 30.2.0 + '@jest/environment': 30.2.0 + '@jest/expect': 30.2.0 + '@jest/types': 30.2.0 jest-mock: 30.2.0 transitivePeerDependencies: - supports-color - "@jest/pattern@30.0.1": + '@jest/pattern@30.0.1': dependencies: - "@types/node": 22.19.3 + '@types/node': 22.19.3 jest-regex-util: 30.0.1 - "@jest/reporters@30.2.0": + '@jest/reporters@30.2.0': dependencies: - "@bcoe/v8-coverage": 0.2.3 - "@jest/console": 30.2.0 - "@jest/test-result": 30.2.0 - "@jest/transform": 30.2.0 - "@jest/types": 30.2.0 - "@jridgewell/trace-mapping": 0.3.31 - "@types/node": 22.19.3 + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + '@jridgewell/trace-mapping': 0.3.31 + '@types/node': 22.19.3 chalk: 4.1.2 collect-v8-coverage: 1.0.3 exit-x: 0.2.2 @@ -11193,46 +6491,46 @@ snapshots: transitivePeerDependencies: - supports-color - "@jest/schemas@29.6.3": + '@jest/schemas@29.6.3': dependencies: - "@sinclair/typebox": 0.27.8 + '@sinclair/typebox': 0.27.8 - "@jest/schemas@30.0.5": + '@jest/schemas@30.0.5': dependencies: - "@sinclair/typebox": 0.34.45 + '@sinclair/typebox': 0.34.45 - "@jest/snapshot-utils@30.2.0": + '@jest/snapshot-utils@30.2.0': dependencies: - "@jest/types": 30.2.0 + '@jest/types': 30.2.0 chalk: 4.1.2 graceful-fs: 4.2.11 natural-compare: 1.4.0 - "@jest/source-map@30.0.1": + '@jest/source-map@30.0.1': dependencies: - "@jridgewell/trace-mapping": 0.3.31 + '@jridgewell/trace-mapping': 0.3.31 callsites: 3.1.0 graceful-fs: 4.2.11 - "@jest/test-result@30.2.0": + '@jest/test-result@30.2.0': dependencies: - "@jest/console": 30.2.0 - "@jest/types": 30.2.0 - "@types/istanbul-lib-coverage": 2.0.6 + '@jest/console': 30.2.0 + '@jest/types': 30.2.0 + '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.3 - "@jest/test-sequencer@30.2.0": + '@jest/test-sequencer@30.2.0': dependencies: - "@jest/test-result": 30.2.0 + '@jest/test-result': 30.2.0 graceful-fs: 4.2.11 jest-haste-map: 30.2.0 slash: 3.0.0 - "@jest/transform@30.2.0": + '@jest/transform@30.2.0': dependencies: - "@babel/core": 7.28.5 - "@jest/types": 30.2.0 - "@jridgewell/trace-mapping": 0.3.31 + '@babel/core': 7.28.5 + '@jest/types': 30.2.0 + '@jridgewell/trace-mapping': 0.3.31 babel-plugin-istanbul: 7.0.1 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -11248,48 +6546,48 @@ snapshots: transitivePeerDependencies: - supports-color - "@jest/types@30.2.0": + '@jest/types@30.2.0': dependencies: - "@jest/pattern": 30.0.1 - "@jest/schemas": 30.0.5 - "@types/istanbul-lib-coverage": 2.0.6 - "@types/istanbul-reports": 3.0.4 - "@types/node": 22.19.3 - "@types/yargs": 17.0.35 + '@jest/pattern': 30.0.1 + '@jest/schemas': 30.0.5 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 22.19.3 + '@types/yargs': 17.0.35 chalk: 4.1.2 - "@jridgewell/gen-mapping@0.3.13": + '@jridgewell/gen-mapping@0.3.13': dependencies: - "@jridgewell/sourcemap-codec": 1.5.5 - "@jridgewell/trace-mapping": 0.3.31 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 - "@jridgewell/remapping@2.3.5": + '@jridgewell/remapping@2.3.5': dependencies: - "@jridgewell/gen-mapping": 0.3.13 - "@jridgewell/trace-mapping": 0.3.31 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 - "@jridgewell/resolve-uri@3.1.2": {} + '@jridgewell/resolve-uri@3.1.2': {} - "@jridgewell/sourcemap-codec@1.5.5": {} + '@jridgewell/sourcemap-codec@1.5.5': {} - "@jridgewell/trace-mapping@0.3.31": + '@jridgewell/trace-mapping@0.3.31': dependencies: - "@jridgewell/resolve-uri": 3.1.2 - "@jridgewell/sourcemap-codec": 1.5.5 + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 - "@jridgewell/trace-mapping@0.3.9": + '@jridgewell/trace-mapping@0.3.9': dependencies: - "@jridgewell/resolve-uri": 3.1.2 - "@jridgewell/sourcemap-codec": 1.5.5 + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 - "@lerna/create@8.2.4(@types/node@22.19.3)(encoding@0.1.13)(typescript@5.9.3)": + '@lerna/create@8.2.4(@types/node@22.19.3)(encoding@0.1.13)(typescript@5.9.3)': dependencies: - "@npmcli/arborist": 7.5.4 - "@npmcli/package-json": 5.2.0 - "@npmcli/run-script": 8.1.0 - "@nx/devkit": 20.8.3(nx@20.8.3) - "@octokit/plugin-enterprise-rest": 6.0.1 - "@octokit/rest": 20.1.2 + '@npmcli/arborist': 7.5.4 + '@npmcli/package-json': 5.2.0 + '@npmcli/run-script': 8.1.0 + '@nx/devkit': 20.8.3(nx@20.8.3) + '@octokit/plugin-enterprise-rest': 6.0.1 + '@octokit/rest': 20.1.2 aproba: 2.0.0 byte-size: 8.1.1 chalk: 4.1.0 @@ -11354,9 +6652,9 @@ snapshots: yargs: 17.7.2 yargs-parser: 21.1.1 transitivePeerDependencies: - - "@swc-node/register" - - "@swc/core" - - "@types/node" + - '@swc-node/register' + - '@swc/core' + - '@types/node' - babel-plugin-macros - bluebird - debug @@ -11364,36 +6662,34 @@ snapshots: - supports-color - typescript - "@n1ru4l/push-pull-async-iterable-iterator@3.2.0": {} + '@n1ru4l/push-pull-async-iterable-iterator@3.2.0': {} - "@napi-rs/wasm-runtime@0.2.12": + '@napi-rs/wasm-runtime@0.2.12': dependencies: - "@emnapi/core": 1.7.1 - "@emnapi/runtime": 1.7.1 - "@tybys/wasm-util": 0.10.1 + '@emnapi/core': 1.7.1 + '@emnapi/runtime': 1.7.1 + '@tybys/wasm-util': 0.10.1 optional: true - "@napi-rs/wasm-runtime@0.2.4": + '@napi-rs/wasm-runtime@0.2.4': dependencies: - "@emnapi/core": 1.7.1 - "@emnapi/runtime": 1.7.1 - "@tybys/wasm-util": 0.9.0 - - "@nodable/entities@2.1.0": {} + '@emnapi/core': 1.7.1 + '@emnapi/runtime': 1.7.1 + '@tybys/wasm-util': 0.9.0 - "@nodelib/fs.scandir@2.1.5": + '@nodelib/fs.scandir@2.1.5': dependencies: - "@nodelib/fs.stat": 2.0.5 + '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - "@nodelib/fs.stat@2.0.5": {} + '@nodelib/fs.stat@2.0.5': {} - "@nodelib/fs.walk@1.2.8": + '@nodelib/fs.walk@1.2.8': dependencies: - "@nodelib/fs.scandir": 2.1.5 + '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - "@npmcli/agent@2.2.2": + '@npmcli/agent@2.2.2': dependencies: agent-base: 7.1.4 http-proxy-agent: 7.0.2 @@ -11403,19 +6699,19 @@ snapshots: transitivePeerDependencies: - supports-color - "@npmcli/arborist@7.5.4": - dependencies: - "@isaacs/string-locale-compare": 1.1.0 - "@npmcli/fs": 3.1.1 - "@npmcli/installed-package-contents": 2.1.0 - "@npmcli/map-workspaces": 3.0.6 - "@npmcli/metavuln-calculator": 7.1.1 - "@npmcli/name-from-folder": 2.0.0 - "@npmcli/node-gyp": 3.0.0 - "@npmcli/package-json": 5.2.0 - "@npmcli/query": 3.1.0 - "@npmcli/redact": 2.0.1 - "@npmcli/run-script": 8.1.0 + '@npmcli/arborist@7.5.4': + dependencies: + '@isaacs/string-locale-compare': 1.1.0 + '@npmcli/fs': 3.1.1 + '@npmcli/installed-package-contents': 2.1.0 + '@npmcli/map-workspaces': 3.0.6 + '@npmcli/metavuln-calculator': 7.1.1 + '@npmcli/name-from-folder': 2.0.0 + '@npmcli/node-gyp': 3.0.0 + '@npmcli/package-json': 5.2.0 + '@npmcli/query': 3.1.0 + '@npmcli/redact': 2.0.1 + '@npmcli/run-script': 8.1.0 bin-links: 4.0.4 cacache: 18.0.4 common-ancestor-path: 1.0.1 @@ -11444,13 +6740,13 @@ snapshots: - bluebird - supports-color - "@npmcli/fs@3.1.1": + '@npmcli/fs@3.1.1': dependencies: semver: 7.7.4 - "@npmcli/git@5.0.8": + '@npmcli/git@5.0.8': dependencies: - "@npmcli/promise-spawn": 7.0.2 + '@npmcli/promise-spawn': 7.0.2 ini: 4.1.3 lru-cache: 10.4.3 npm-pick-manifest: 9.1.0 @@ -11462,19 +6758,19 @@ snapshots: transitivePeerDependencies: - bluebird - "@npmcli/installed-package-contents@2.1.0": + '@npmcli/installed-package-contents@2.1.0': dependencies: npm-bundled: 3.0.1 npm-normalize-package-bin: 3.0.1 - "@npmcli/map-workspaces@3.0.6": + '@npmcli/map-workspaces@3.0.6': dependencies: - "@npmcli/name-from-folder": 2.0.0 + '@npmcli/name-from-folder': 2.0.0 glob: 10.5.0 minimatch: 9.0.9 read-package-json-fast: 3.0.2 - "@npmcli/metavuln-calculator@7.1.1": + '@npmcli/metavuln-calculator@7.1.1': dependencies: cacache: 18.0.4 json-parse-even-better-errors: 3.0.2 @@ -11485,13 +6781,13 @@ snapshots: - bluebird - supports-color - "@npmcli/name-from-folder@2.0.0": {} + '@npmcli/name-from-folder@2.0.0': {} - "@npmcli/node-gyp@3.0.0": {} + '@npmcli/node-gyp@3.0.0': {} - "@npmcli/package-json@5.2.0": + '@npmcli/package-json@5.2.0': dependencies: - "@npmcli/git": 5.0.8 + '@npmcli/git': 5.0.8 glob: 10.5.0 hosted-git-info: 7.0.2 json-parse-even-better-errors: 3.0.2 @@ -11501,21 +6797,21 @@ snapshots: transitivePeerDependencies: - bluebird - "@npmcli/promise-spawn@7.0.2": + '@npmcli/promise-spawn@7.0.2': dependencies: which: 4.0.0 - "@npmcli/query@3.1.0": + '@npmcli/query@3.1.0': dependencies: postcss-selector-parser: 6.1.2 - "@npmcli/redact@2.0.1": {} + '@npmcli/redact@2.0.1': {} - "@npmcli/run-script@8.1.0": + '@npmcli/run-script@8.1.0': dependencies: - "@npmcli/node-gyp": 3.0.0 - "@npmcli/package-json": 5.2.0 - "@npmcli/promise-spawn": 7.0.2 + '@npmcli/node-gyp': 3.0.0 + '@npmcli/package-json': 5.2.0 + '@npmcli/promise-spawn': 7.0.2 node-gyp: 10.3.1 proc-log: 4.2.0 which: 4.0.0 @@ -11523,7 +6819,7 @@ snapshots: - bluebird - supports-color - "@nx/devkit@20.8.3(nx@20.8.3)": + '@nx/devkit@20.8.3(nx@20.8.3)': dependencies: ejs: 3.1.10 enquirer: 2.3.6 @@ -11535,128 +6831,107 @@ snapshots: tslib: 2.8.1 yargs-parser: 21.1.1 - "@nx/nx-darwin-arm64@20.8.3": + '@nx/nx-darwin-arm64@20.8.3': optional: true - "@nx/nx-darwin-x64@20.8.3": + '@nx/nx-darwin-x64@20.8.3': optional: true - "@nx/nx-freebsd-x64@20.8.3": + '@nx/nx-freebsd-x64@20.8.3': optional: true - "@nx/nx-linux-arm-gnueabihf@20.8.3": + '@nx/nx-linux-arm-gnueabihf@20.8.3': optional: true - "@nx/nx-linux-arm64-gnu@20.8.3": + '@nx/nx-linux-arm64-gnu@20.8.3': optional: true - "@nx/nx-linux-arm64-musl@20.8.3": + '@nx/nx-linux-arm64-musl@20.8.3': optional: true - "@nx/nx-linux-x64-gnu@20.8.3": + '@nx/nx-linux-x64-gnu@20.8.3': optional: true - "@nx/nx-linux-x64-musl@20.8.3": + '@nx/nx-linux-x64-musl@20.8.3': optional: true - "@nx/nx-win32-arm64-msvc@20.8.3": + '@nx/nx-win32-arm64-msvc@20.8.3': optional: true - "@nx/nx-win32-x64-msvc@20.8.3": + '@nx/nx-win32-x64-msvc@20.8.3': optional: true - "@octokit/auth-token@4.0.0": {} + '@octokit/auth-token@4.0.0': {} - "@octokit/core@5.2.2": + '@octokit/core@5.2.2': dependencies: - "@octokit/auth-token": 4.0.0 - "@octokit/graphql": 7.1.1 - "@octokit/request": 8.4.1 - "@octokit/request-error": 5.1.1 - "@octokit/types": 13.10.0 + '@octokit/auth-token': 4.0.0 + '@octokit/graphql': 7.1.1 + '@octokit/request': 8.4.1 + '@octokit/request-error': 5.1.1 + '@octokit/types': 13.10.0 before-after-hook: 2.2.3 universal-user-agent: 6.0.1 - "@octokit/endpoint@9.0.6": + '@octokit/endpoint@9.0.6': dependencies: - "@octokit/types": 13.10.0 + '@octokit/types': 13.10.0 universal-user-agent: 6.0.1 - "@octokit/graphql@7.1.1": + '@octokit/graphql@7.1.1': dependencies: - "@octokit/request": 8.4.1 - "@octokit/types": 13.10.0 + '@octokit/request': 8.4.1 + '@octokit/types': 13.10.0 universal-user-agent: 6.0.1 - "@octokit/openapi-types@24.2.0": {} + '@octokit/openapi-types@24.2.0': {} - "@octokit/plugin-enterprise-rest@6.0.1": {} + '@octokit/plugin-enterprise-rest@6.0.1': {} - "@octokit/plugin-paginate-rest@11.4.4-cjs.2(@octokit/core@5.2.2)": + '@octokit/plugin-paginate-rest@11.4.4-cjs.2(@octokit/core@5.2.2)': dependencies: - "@octokit/core": 5.2.2 - "@octokit/types": 13.10.0 + '@octokit/core': 5.2.2 + '@octokit/types': 13.10.0 - "@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.2)": + '@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.2)': dependencies: - "@octokit/core": 5.2.2 + '@octokit/core': 5.2.2 - "@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1(@octokit/core@5.2.2)": + '@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1(@octokit/core@5.2.2)': dependencies: - "@octokit/core": 5.2.2 - "@octokit/types": 13.10.0 + '@octokit/core': 5.2.2 + '@octokit/types': 13.10.0 - "@octokit/request-error@5.1.1": + '@octokit/request-error@5.1.1': dependencies: - "@octokit/types": 13.10.0 + '@octokit/types': 13.10.0 deprecation: 2.3.1 once: 1.4.0 - "@octokit/request@8.4.1": + '@octokit/request@8.4.1': dependencies: - "@octokit/endpoint": 9.0.6 - "@octokit/request-error": 5.1.1 - "@octokit/types": 13.10.0 + '@octokit/endpoint': 9.0.6 + '@octokit/request-error': 5.1.1 + '@octokit/types': 13.10.0 universal-user-agent: 6.0.1 - "@octokit/rest@20.1.2": + '@octokit/rest@20.1.2': dependencies: - "@octokit/core": 5.2.2 - "@octokit/plugin-paginate-rest": 11.4.4-cjs.2(@octokit/core@5.2.2) - "@octokit/plugin-request-log": 4.0.1(@octokit/core@5.2.2) - "@octokit/plugin-rest-endpoint-methods": 13.3.2-cjs.1(@octokit/core@5.2.2) + '@octokit/core': 5.2.2 + '@octokit/plugin-paginate-rest': 11.4.4-cjs.2(@octokit/core@5.2.2) + '@octokit/plugin-request-log': 4.0.1(@octokit/core@5.2.2) + '@octokit/plugin-rest-endpoint-methods': 13.3.2-cjs.1(@octokit/core@5.2.2) - "@octokit/types@13.10.0": + '@octokit/types@13.10.0': dependencies: - "@octokit/openapi-types": 24.2.0 - - "@pgpmjs/core@6.12.4": - dependencies: - "@pgpmjs/env": 2.22.1 - "@pgpmjs/logger": 2.10.1 - "@pgpmjs/server-utils": 3.10.1 - "@pgpmjs/types": 2.26.1 - csv-to-pg: 3.16.1 - genomic: 5.3.11 - glob: 13.0.6 - minimatch: 10.2.5 - parse-package-name: 1.0.0 - pg: 8.20.0 - pg-cache: 3.9.1 - pg-env: 1.13.1 - pgsql-deparser: 17.18.3 - pgsql-parser: 17.9.15 - yanse: 0.2.1 - transitivePeerDependencies: - - pg-native - - supports-color + '@octokit/openapi-types': 24.2.0 - "@pgpmjs/core@6.17.1": + '@pgpmjs/core@6.17.1': dependencies: - "@pgpmjs/env": 2.22.1 - "@pgpmjs/logger": 2.10.1 - "@pgpmjs/server-utils": 3.10.1 - "@pgpmjs/types": 2.26.1 + '@pgpmjs/env': 2.22.1 + '@pgpmjs/logger': 2.10.1 + '@pgpmjs/server-utils': 3.10.1 + '@pgpmjs/types': 2.26.1 csv-to-pg: 3.16.1 genomic: 5.3.11 glob: 13.0.6 @@ -11672,20 +6947,20 @@ snapshots: - pg-native - supports-color - "@pgpmjs/core@6.18.1": + '@pgpmjs/core@6.24.1': dependencies: - "@pgpmjs/env": 2.23.0 - "@pgpmjs/logger": 2.11.0 - "@pgpmjs/server-utils": 3.11.0 - "@pgpmjs/types": 2.27.0 - csv-to-pg: 3.17.0 - genomic: 5.3.11 + '@pgpmjs/env': 2.25.1 + '@pgpmjs/logger': 2.12.0 + '@pgpmjs/server-utils': 3.13.1 + '@pgpmjs/types': 2.29.1 + csv-to-pg: 3.18.0 + genomic: 5.6.0 glob: 13.0.6 minimatch: 10.2.5 parse-package-name: 1.0.0 - pg: 8.20.0 - pg-cache: 3.10.0 - pg-env: 1.14.0 + pg: 8.22.0 + pg-cache: 3.12.1 + pg-env: 1.16.0 pgsql-deparser: 17.18.3 pgsql-parser: 17.9.15 yanse: 0.2.1 @@ -11693,121 +6968,42 @@ snapshots: - pg-native - supports-color - "@pgpmjs/env@2.18.0": + '@pgpmjs/env@2.18.0': dependencies: - "@pgpmjs/types": 2.26.1 + '@pgpmjs/types': 2.26.1 deepmerge: 4.3.1 - "@pgpmjs/env@2.22.1": + '@pgpmjs/env@2.22.1': dependencies: - "@pgpmjs/types": 2.26.1 + '@pgpmjs/types': 2.26.1 deepmerge: 4.3.1 - "@pgpmjs/env@2.23.0": + '@pgpmjs/env@2.25.1': dependencies: - "@pgpmjs/types": 2.27.0 + '@pgpmjs/types': 2.29.1 deepmerge: 4.3.1 - "@pgpmjs/export@0.12.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0)": - dependencies: - "@pgpmjs/core": 6.17.1 - "@pgpmjs/migrate-client": 0.12.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) - "@pgpmjs/types": 2.26.1 - csv-to-pg: 3.16.1 - glob: 13.0.6 - inflekt: 0.7.1 - inquirerer: 4.8.1 - pg: 8.20.0 - pg-cache: 3.9.1 - pg-env: 1.13.1 - transitivePeerDependencies: - - "@dataplan/json" - - "@dataplan/pg" - - "@envelop/core" - - "@fastify/websocket" - - "@types/node" - - "@types/react" - - "@types/react-dom" - - "@whatwg-node/server" - - aws-crt - - bufferutil - - crossws - - grafserv - - graphile-build - - h3 - - hono - - immer - - pg-native - - pg-sql2 - - react - - react-dom - - supports-color - - tamedevil - - use-sync-external-store - - utf-8-validate - - ws - - "@pgpmjs/export@0.15.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0)": - dependencies: - "@pgpmjs/core": 6.18.1 - "@pgpmjs/migrate-client": 0.13.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) - "@pgpmjs/types": 2.27.0 - csv-to-pg: 3.17.0 - glob: 13.0.6 - inflekt: 0.7.1 - inquirerer: 4.8.1 - pg: 8.20.0 - pg-cache: 3.10.0 - pg-env: 1.14.0 - transitivePeerDependencies: - - "@dataplan/json" - - "@dataplan/pg" - - "@envelop/core" - - "@fastify/websocket" - - "@types/node" - - "@types/react" - - "@types/react-dom" - - "@whatwg-node/server" - - aws-crt - - bufferutil - - crossws - - grafserv - - graphile-build - - h3 - - hono - - immer - - pg-native - - pg-sql2 - - react - - react-dom - - supports-color - - tamedevil - - use-sync-external-store - - utf-8-validate - - ws - - "@pgpmjs/export@0.4.6(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0)": + '@pgpmjs/export@0.22.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0)': dependencies: - "@pgpmjs/core": 6.17.1 - "@pgpmjs/migrate-client": 0.6.1(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) - "@pgpmjs/types": 2.26.1 - csv-to-pg: 3.16.1 + '@pgpmjs/core': 6.24.1 + '@pgpmjs/migrate-client': 0.15.12(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(pg@8.22.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + '@pgpmjs/types': 2.29.1 + csv-to-pg: 3.18.0 glob: 13.0.6 inflekt: 0.7.1 inquirerer: 4.8.1 - pg: 8.20.0 - pg-cache: 3.9.1 - pg-env: 1.13.1 - transitivePeerDependencies: - - "@dataplan/json" - - "@dataplan/pg" - - "@envelop/core" - - "@fastify/websocket" - - "@types/node" - - "@types/react" - - "@types/react-dom" - - "@whatwg-node/server" - - aws-crt + pg: 8.22.0 + pg-cache: 3.12.1 + pg-env: 1.16.0 + transitivePeerDependencies: + - '@dataplan/json' + - '@dataplan/pg' + - '@envelop/core' + - '@fastify/websocket' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - '@whatwg-node/server' - bufferutil - crossws - grafserv @@ -11825,105 +7021,34 @@ snapshots: - utf-8-validate - ws - "@pgpmjs/logger@2.10.1": + '@pgpmjs/logger@2.10.1': dependencies: yanse: 0.2.1 - "@pgpmjs/logger@2.11.0": + '@pgpmjs/logger@2.12.0': dependencies: yanse: 0.2.1 - "@pgpmjs/logger@2.6.0": + '@pgpmjs/logger@2.6.0': dependencies: yanse: 0.2.1 - "@pgpmjs/migrate-client@0.12.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0)": - dependencies: - "@0no-co/graphql.web": 1.2.0(graphql@16.13.0) - "@constructive-io/graphql-query": 3.23.2(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) - "@constructive-io/graphql-types": 3.9.1 - gql-ast: 3.9.1 - graphql: 16.13.0 - transitivePeerDependencies: - - "@dataplan/json" - - "@dataplan/pg" - - "@envelop/core" - - "@fastify/websocket" - - "@types/node" - - "@types/react" - - "@types/react-dom" - - "@whatwg-node/server" - - aws-crt - - bufferutil - - crossws - - grafserv - - graphile-build - - h3 - - hono - - immer - - pg - - pg-native - - pg-sql2 - - react - - react-dom - - supports-color - - tamedevil - - use-sync-external-store - - utf-8-validate - - ws - - "@pgpmjs/migrate-client@0.13.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0)": - dependencies: - "@0no-co/graphql.web": 1.2.0(graphql@16.13.0) - "@constructive-io/graphql-query": 3.25.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) - "@constructive-io/graphql-types": 3.10.0 - gql-ast: 3.10.0 - graphql: 16.13.0 - transitivePeerDependencies: - - "@dataplan/json" - - "@dataplan/pg" - - "@envelop/core" - - "@fastify/websocket" - - "@types/node" - - "@types/react" - - "@types/react-dom" - - "@whatwg-node/server" - - aws-crt - - bufferutil - - crossws - - grafserv - - graphile-build - - h3 - - hono - - immer - - pg - - pg-native - - pg-sql2 - - react - - react-dom - - supports-color - - tamedevil - - use-sync-external-store - - utf-8-validate - - ws - - "@pgpmjs/migrate-client@0.6.1(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0)": + '@pgpmjs/migrate-client@0.15.12(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(pg@8.22.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0)': dependencies: - "@0no-co/graphql.web": 1.2.0(graphql@16.13.0) - "@constructive-io/graphql-query": 3.15.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) - "@constructive-io/graphql-types": 3.5.1 - gql-ast: 3.5.0 + '@0no-co/graphql.web': 1.2.0(graphql@16.13.0) + '@constructive-io/graphql-query': 3.27.11(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(pg@8.22.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + '@constructive-io/graphql-types': 3.12.1 + gql-ast: 3.11.0 graphql: 16.13.0 transitivePeerDependencies: - - "@dataplan/json" - - "@dataplan/pg" - - "@envelop/core" - - "@fastify/websocket" - - "@types/node" - - "@types/react" - - "@types/react-dom" - - "@whatwg-node/server" - - aws-crt + - '@dataplan/json' + - '@dataplan/pg' + - '@envelop/core' + - '@fastify/websocket' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - '@whatwg-node/server' - bufferutil - crossws - grafserv @@ -11942,823 +7067,539 @@ snapshots: - utf-8-validate - ws - "@pgpmjs/server-utils@3.10.1": + '@pgpmjs/server-utils@3.10.1': dependencies: - "@pgpmjs/logger": 2.10.1 - "@pgpmjs/types": 2.26.1 + '@pgpmjs/logger': 2.10.1 + '@pgpmjs/types': 2.26.1 cors: 2.8.6 express: 5.2.1 lru-cache: 11.3.5 transitivePeerDependencies: - supports-color - "@pgpmjs/server-utils@3.11.0": + '@pgpmjs/server-utils@3.13.1': dependencies: - "@pgpmjs/logger": 2.11.0 - "@pgpmjs/types": 2.27.0 + '@pgpmjs/logger': 2.12.0 + '@pgpmjs/types': 2.29.1 cors: 2.8.6 express: 5.2.1 lru-cache: 11.3.5 transitivePeerDependencies: - supports-color - "@pgpmjs/server-utils@3.6.0": + '@pgpmjs/server-utils@3.6.0': dependencies: - "@pgpmjs/logger": 2.10.1 - "@pgpmjs/types": 2.26.1 + '@pgpmjs/logger': 2.10.1 + '@pgpmjs/types': 2.26.1 cors: 2.8.6 express: 5.2.1 lru-cache: 11.3.5 transitivePeerDependencies: - supports-color - "@pgpmjs/types@2.22.0": + '@pgpmjs/types@2.22.0': dependencies: pg-env: 1.13.1 - "@pgpmjs/types@2.26.1": + '@pgpmjs/types@2.26.1': dependencies: pg-env: 1.13.1 - "@pgpmjs/types@2.27.0": + '@pgpmjs/types@2.29.1': dependencies: - pg-env: 1.14.0 + pg-env: 1.16.0 - "@pgsql/quotes@17.1.0": {} + '@pgsql/quotes@17.1.0': {} - "@pgsql/types@17.6.2": {} + '@pgsql/types@17.6.2': {} - "@pgsql/utils@17.8.16": + '@pgsql/utils@17.8.16': dependencies: - "@pgsql/types": 17.6.2 + '@pgsql/types': 17.6.2 nested-obj: 0.1.5 - "@pkgjs/parseargs@0.11.0": + '@pgsql/utils@17.8.17': + dependencies: + '@pgsql/types': 17.6.2 + nested-obj: 0.2.2 + + '@pkgjs/parseargs@0.11.0': optional: true - "@pkgr/core@0.2.9": {} + '@pkgr/core@0.2.9': {} - "@radix-ui/primitive@1.1.3": {} + '@radix-ui/primitive@1.1.3': {} - "@radix-ui/react-arrow@1.1.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": + '@radix-ui/react-arrow@1.1.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - "@radix-ui/react-primitive": 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - "@radix-ui/react-collection@1.1.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": + '@radix-ui/react-collection@1.1.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - "@radix-ui/react-compose-refs": 1.1.2(react@19.2.5) - "@radix-ui/react-context": 1.1.2(react@19.2.5) - "@radix-ui/react-primitive": 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-slot": 1.2.3(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(react@19.2.5) + '@radix-ui/react-context': 1.1.2(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - "@radix-ui/react-compose-refs@1.1.2(react@19.2.5)": + '@radix-ui/react-compose-refs@1.1.2(react@19.2.5)': dependencies: react: 19.2.5 - "@radix-ui/react-context@1.1.2(react@19.2.5)": + '@radix-ui/react-context@1.1.2(react@19.2.5)': dependencies: react: 19.2.5 - "@radix-ui/react-dialog@1.1.15(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": - dependencies: - "@radix-ui/primitive": 1.1.3 - "@radix-ui/react-compose-refs": 1.1.2(react@19.2.5) - "@radix-ui/react-context": 1.1.2(react@19.2.5) - "@radix-ui/react-dismissable-layer": 1.1.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-focus-guards": 1.1.3(react@19.2.5) - "@radix-ui/react-focus-scope": 1.1.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-id": 1.1.1(react@19.2.5) - "@radix-ui/react-portal": 1.1.9(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-presence": 1.1.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-primitive": 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-slot": 1.2.3(react@19.2.5) - "@radix-ui/react-use-controllable-state": 1.2.2(react@19.2.5) + '@radix-ui/react-dialog@1.1.15(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(react@19.2.5) + '@radix-ui/react-context': 1.1.2(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-focus-guards': 1.1.3(react@19.2.5) + '@radix-ui/react-focus-scope': 1.1.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.1(react@19.2.5) + '@radix-ui/react-portal': 1.1.9(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(react@19.2.5) aria-hidden: 1.2.6 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) react-remove-scroll: 2.7.2(react@19.2.5) - "@radix-ui/react-direction@1.1.1(react@19.2.5)": + '@radix-ui/react-direction@1.1.1(react@19.2.5)': dependencies: react: 19.2.5 - "@radix-ui/react-dismissable-layer@1.1.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": + '@radix-ui/react-dismissable-layer@1.1.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - "@radix-ui/primitive": 1.1.3 - "@radix-ui/react-compose-refs": 1.1.2(react@19.2.5) - "@radix-ui/react-primitive": 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-use-callback-ref": 1.1.1(react@19.2.5) - "@radix-ui/react-use-escape-keydown": 1.1.1(react@19.2.5) + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(react@19.2.5) + '@radix-ui/react-use-escape-keydown': 1.1.1(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - "@radix-ui/react-dropdown-menu@2.1.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": + '@radix-ui/react-dropdown-menu@2.1.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - "@radix-ui/primitive": 1.1.3 - "@radix-ui/react-compose-refs": 1.1.2(react@19.2.5) - "@radix-ui/react-context": 1.1.2(react@19.2.5) - "@radix-ui/react-id": 1.1.1(react@19.2.5) - "@radix-ui/react-menu": 2.1.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-primitive": 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-use-controllable-state": 1.2.2(react@19.2.5) + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(react@19.2.5) + '@radix-ui/react-context': 1.1.2(react@19.2.5) + '@radix-ui/react-id': 1.1.1(react@19.2.5) + '@radix-ui/react-menu': 2.1.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - "@radix-ui/react-focus-guards@1.1.3(react@19.2.5)": + '@radix-ui/react-focus-guards@1.1.3(react@19.2.5)': dependencies: react: 19.2.5 - "@radix-ui/react-focus-scope@1.1.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": + '@radix-ui/react-focus-scope@1.1.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - "@radix-ui/react-compose-refs": 1.1.2(react@19.2.5) - "@radix-ui/react-primitive": 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-use-callback-ref": 1.1.1(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - "@radix-ui/react-id@1.1.1(react@19.2.5)": + '@radix-ui/react-id@1.1.1(react@19.2.5)': dependencies: - "@radix-ui/react-use-layout-effect": 1.1.1(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(react@19.2.5) react: 19.2.5 - "@radix-ui/react-menu@2.1.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": - dependencies: - "@radix-ui/primitive": 1.1.3 - "@radix-ui/react-collection": 1.1.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-compose-refs": 1.1.2(react@19.2.5) - "@radix-ui/react-context": 1.1.2(react@19.2.5) - "@radix-ui/react-direction": 1.1.1(react@19.2.5) - "@radix-ui/react-dismissable-layer": 1.1.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-focus-guards": 1.1.3(react@19.2.5) - "@radix-ui/react-focus-scope": 1.1.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-id": 1.1.1(react@19.2.5) - "@radix-ui/react-popper": 1.2.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-portal": 1.1.9(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-presence": 1.1.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-primitive": 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-roving-focus": 1.1.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-slot": 1.2.3(react@19.2.5) - "@radix-ui/react-use-callback-ref": 1.1.1(react@19.2.5) + '@radix-ui/react-menu@2.1.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(react@19.2.5) + '@radix-ui/react-context': 1.1.2(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-focus-guards': 1.1.3(react@19.2.5) + '@radix-ui/react-focus-scope': 1.1.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.1(react@19.2.5) + '@radix-ui/react-popper': 1.2.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.9(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(react@19.2.5) aria-hidden: 1.2.6 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) react-remove-scroll: 2.7.2(react@19.2.5) - "@radix-ui/react-popper@1.2.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": - dependencies: - "@floating-ui/react-dom": 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-arrow": 1.1.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-compose-refs": 1.1.2(react@19.2.5) - "@radix-ui/react-context": 1.1.2(react@19.2.5) - "@radix-ui/react-primitive": 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-use-callback-ref": 1.1.1(react@19.2.5) - "@radix-ui/react-use-layout-effect": 1.1.1(react@19.2.5) - "@radix-ui/react-use-rect": 1.1.1(react@19.2.5) - "@radix-ui/react-use-size": 1.1.1(react@19.2.5) - "@radix-ui/rect": 1.1.1 + '@radix-ui/react-popper@1.2.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-arrow': 1.1.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(react@19.2.5) + '@radix-ui/react-context': 1.1.2(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(react@19.2.5) + '@radix-ui/react-use-rect': 1.1.1(react@19.2.5) + '@radix-ui/react-use-size': 1.1.1(react@19.2.5) + '@radix-ui/rect': 1.1.1 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - "@radix-ui/react-portal@1.1.9(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": + '@radix-ui/react-portal@1.1.9(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - "@radix-ui/react-primitive": 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-use-layout-effect": 1.1.1(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - "@radix-ui/react-presence@1.1.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": + '@radix-ui/react-presence@1.1.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - "@radix-ui/react-compose-refs": 1.1.2(react@19.2.5) - "@radix-ui/react-use-layout-effect": 1.1.1(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - "@radix-ui/react-primitive@2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": + '@radix-ui/react-primitive@2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - "@radix-ui/react-slot": 1.2.3(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - "@radix-ui/react-primitive@2.1.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": + '@radix-ui/react-primitive@2.1.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - "@radix-ui/react-slot": 1.2.4(react@19.2.5) + '@radix-ui/react-slot': 1.2.4(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - "@radix-ui/react-roving-focus@1.1.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": - dependencies: - "@radix-ui/primitive": 1.1.3 - "@radix-ui/react-collection": 1.1.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-compose-refs": 1.1.2(react@19.2.5) - "@radix-ui/react-context": 1.1.2(react@19.2.5) - "@radix-ui/react-direction": 1.1.1(react@19.2.5) - "@radix-ui/react-id": 1.1.1(react@19.2.5) - "@radix-ui/react-primitive": 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-use-callback-ref": 1.1.1(react@19.2.5) - "@radix-ui/react-use-controllable-state": 1.2.2(react@19.2.5) + '@radix-ui/react-roving-focus@1.1.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(react@19.2.5) + '@radix-ui/react-context': 1.1.2(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(react@19.2.5) + '@radix-ui/react-id': 1.1.1(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - "@radix-ui/react-slot@1.2.3(react@19.2.5)": + '@radix-ui/react-slot@1.2.3(react@19.2.5)': dependencies: - "@radix-ui/react-compose-refs": 1.1.2(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(react@19.2.5) react: 19.2.5 - "@radix-ui/react-slot@1.2.4(react@19.2.5)": + '@radix-ui/react-slot@1.2.4(react@19.2.5)': dependencies: - "@radix-ui/react-compose-refs": 1.1.2(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(react@19.2.5) react: 19.2.5 - "@radix-ui/react-tooltip@1.2.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": - dependencies: - "@radix-ui/primitive": 1.1.3 - "@radix-ui/react-compose-refs": 1.1.2(react@19.2.5) - "@radix-ui/react-context": 1.1.2(react@19.2.5) - "@radix-ui/react-dismissable-layer": 1.1.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-id": 1.1.1(react@19.2.5) - "@radix-ui/react-popper": 1.2.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-portal": 1.1.9(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-presence": 1.1.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-primitive": 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - "@radix-ui/react-slot": 1.2.3(react@19.2.5) - "@radix-ui/react-use-controllable-state": 1.2.2(react@19.2.5) - "@radix-ui/react-visually-hidden": 1.2.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-tooltip@1.2.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(react@19.2.5) + '@radix-ui/react-context': 1.1.2(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.1(react@19.2.5) + '@radix-ui/react-popper': 1.2.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.9(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - "@radix-ui/react-use-callback-ref@1.1.1(react@19.2.5)": + '@radix-ui/react-use-callback-ref@1.1.1(react@19.2.5)': dependencies: react: 19.2.5 - "@radix-ui/react-use-controllable-state@1.2.2(react@19.2.5)": + '@radix-ui/react-use-controllable-state@1.2.2(react@19.2.5)': dependencies: - "@radix-ui/react-use-effect-event": 0.0.2(react@19.2.5) - "@radix-ui/react-use-layout-effect": 1.1.1(react@19.2.5) + '@radix-ui/react-use-effect-event': 0.0.2(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(react@19.2.5) react: 19.2.5 - "@radix-ui/react-use-effect-event@0.0.2(react@19.2.5)": + '@radix-ui/react-use-effect-event@0.0.2(react@19.2.5)': dependencies: - "@radix-ui/react-use-layout-effect": 1.1.1(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(react@19.2.5) react: 19.2.5 - "@radix-ui/react-use-escape-keydown@1.1.1(react@19.2.5)": + '@radix-ui/react-use-escape-keydown@1.1.1(react@19.2.5)': dependencies: - "@radix-ui/react-use-callback-ref": 1.1.1(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(react@19.2.5) react: 19.2.5 - "@radix-ui/react-use-layout-effect@1.1.1(react@19.2.5)": + '@radix-ui/react-use-layout-effect@1.1.1(react@19.2.5)': dependencies: react: 19.2.5 - "@radix-ui/react-use-rect@1.1.1(react@19.2.5)": + '@radix-ui/react-use-rect@1.1.1(react@19.2.5)': dependencies: - "@radix-ui/rect": 1.1.1 + '@radix-ui/rect': 1.1.1 react: 19.2.5 - "@radix-ui/react-use-size@1.1.1(react@19.2.5)": + '@radix-ui/react-use-size@1.1.1(react@19.2.5)': dependencies: - "@radix-ui/react-use-layout-effect": 1.1.1(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(react@19.2.5) react: 19.2.5 - "@radix-ui/react-visually-hidden@1.2.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": + '@radix-ui/react-visually-hidden@1.2.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - "@radix-ui/react-primitive": 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - "@radix-ui/react-visually-hidden@1.2.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": + '@radix-ui/react-visually-hidden@1.2.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - "@radix-ui/react-primitive": 2.1.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - "@radix-ui/rect@1.1.1": {} + '@radix-ui/rect@1.1.1': {} - "@react-aria/focus@3.22.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": + '@react-aria/focus@3.22.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - "@swc/helpers": 0.5.21 + '@swc/helpers': 0.5.21 react: 19.2.5 react-aria: 3.48.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react-dom: 19.2.5(react@19.2.5) - "@react-aria/interactions@3.28.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": + '@react-aria/interactions@3.28.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - "@react-types/shared": 3.34.0(react@19.2.5) - "@swc/helpers": 0.5.21 + '@react-types/shared': 3.34.0(react@19.2.5) + '@swc/helpers': 0.5.21 react: 19.2.5 react-aria: 3.48.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react-dom: 19.2.5(react@19.2.5) - "@react-types/shared@3.34.0(react@19.2.5)": + '@react-types/shared@3.34.0(react@19.2.5)': dependencies: react: 19.2.5 - "@sigstore/bundle@2.3.2": + '@sigstore/bundle@2.3.2': dependencies: - "@sigstore/protobuf-specs": 0.3.3 + '@sigstore/protobuf-specs': 0.3.3 - "@sigstore/core@1.1.0": {} + '@sigstore/core@1.1.0': {} - "@sigstore/protobuf-specs@0.3.3": {} + '@sigstore/protobuf-specs@0.3.3': {} - "@sigstore/sign@2.3.2": + '@sigstore/sign@2.3.2': dependencies: - "@sigstore/bundle": 2.3.2 - "@sigstore/core": 1.1.0 - "@sigstore/protobuf-specs": 0.3.3 + '@sigstore/bundle': 2.3.2 + '@sigstore/core': 1.1.0 + '@sigstore/protobuf-specs': 0.3.3 make-fetch-happen: 13.0.1 proc-log: 4.2.0 promise-retry: 2.0.1 transitivePeerDependencies: - supports-color - "@sigstore/tuf@2.3.4": + '@sigstore/tuf@2.3.4': dependencies: - "@sigstore/protobuf-specs": 0.3.3 + '@sigstore/protobuf-specs': 0.3.3 tuf-js: 2.2.1 transitivePeerDependencies: - supports-color - "@sigstore/verify@1.2.1": + '@sigstore/verify@1.2.1': dependencies: - "@sigstore/bundle": 2.3.2 - "@sigstore/core": 1.1.0 - "@sigstore/protobuf-specs": 0.3.3 + '@sigstore/bundle': 2.3.2 + '@sigstore/core': 1.1.0 + '@sigstore/protobuf-specs': 0.3.3 - "@sinclair/typebox@0.27.8": {} + '@sinclair/typebox@0.27.8': {} - "@sinclair/typebox@0.34.45": {} + '@sinclair/typebox@0.34.45': {} - "@sinonjs/commons@3.0.1": + '@sinonjs/commons@3.0.1': dependencies: type-detect: 4.0.8 - "@sinonjs/fake-timers@13.0.5": - dependencies: - "@sinonjs/commons": 3.0.1 - - "@smithy/chunked-blob-reader-native@4.2.3": - dependencies: - "@smithy/util-base64": 4.3.2 - tslib: 2.8.1 - - "@smithy/chunked-blob-reader@5.2.2": - dependencies: - tslib: 2.8.1 - - "@smithy/config-resolver@4.4.17": + '@sinonjs/fake-timers@13.0.5': dependencies: - "@smithy/node-config-provider": 4.3.14 - "@smithy/types": 4.14.1 - "@smithy/util-config-provider": 4.2.2 - "@smithy/util-endpoints": 3.4.2 - "@smithy/util-middleware": 4.2.14 - tslib: 2.8.1 - - "@smithy/core@3.23.17": - dependencies: - "@smithy/protocol-http": 5.3.14 - "@smithy/types": 4.14.1 - "@smithy/url-parser": 4.2.14 - "@smithy/util-base64": 4.3.2 - "@smithy/util-body-length-browser": 4.2.2 - "@smithy/util-middleware": 4.2.14 - "@smithy/util-stream": 4.5.25 - "@smithy/util-utf8": 4.2.2 - "@smithy/uuid": 1.1.2 - tslib: 2.8.1 - - "@smithy/credential-provider-imds@4.2.14": - dependencies: - "@smithy/node-config-provider": 4.3.14 - "@smithy/property-provider": 4.2.14 - "@smithy/types": 4.14.1 - "@smithy/url-parser": 4.2.14 - tslib: 2.8.1 - - "@smithy/eventstream-codec@4.2.14": - dependencies: - "@aws-crypto/crc32": 5.2.0 - "@smithy/types": 4.14.1 - "@smithy/util-hex-encoding": 4.2.2 - tslib: 2.8.1 - - "@smithy/eventstream-serde-browser@4.2.14": - dependencies: - "@smithy/eventstream-serde-universal": 4.2.14 - "@smithy/types": 4.14.1 - tslib: 2.8.1 - - "@smithy/eventstream-serde-config-resolver@4.3.14": - dependencies: - "@smithy/types": 4.14.1 - tslib: 2.8.1 - - "@smithy/eventstream-serde-node@4.2.14": - dependencies: - "@smithy/eventstream-serde-universal": 4.2.14 - "@smithy/types": 4.14.1 - tslib: 2.8.1 - - "@smithy/eventstream-serde-universal@4.2.14": - dependencies: - "@smithy/eventstream-codec": 4.2.14 - "@smithy/types": 4.14.1 - tslib: 2.8.1 - - "@smithy/fetch-http-handler@5.3.17": - dependencies: - "@smithy/protocol-http": 5.3.14 - "@smithy/querystring-builder": 4.2.14 - "@smithy/types": 4.14.1 - "@smithy/util-base64": 4.3.2 - tslib: 2.8.1 - - "@smithy/hash-blob-browser@4.2.15": - dependencies: - "@smithy/chunked-blob-reader": 5.2.2 - "@smithy/chunked-blob-reader-native": 4.2.3 - "@smithy/types": 4.14.1 - tslib: 2.8.1 - - "@smithy/hash-node@4.2.14": - dependencies: - "@smithy/types": 4.14.1 - "@smithy/util-buffer-from": 4.2.2 - "@smithy/util-utf8": 4.2.2 - tslib: 2.8.1 - - "@smithy/hash-stream-node@4.2.14": - dependencies: - "@smithy/types": 4.14.1 - "@smithy/util-utf8": 4.2.2 - tslib: 2.8.1 - - "@smithy/invalid-dependency@4.2.14": - dependencies: - "@smithy/types": 4.14.1 - tslib: 2.8.1 - - "@smithy/is-array-buffer@2.2.0": - dependencies: - tslib: 2.8.1 - - "@smithy/is-array-buffer@4.2.2": - dependencies: - tslib: 2.8.1 - - "@smithy/md5-js@4.2.14": - dependencies: - "@smithy/types": 4.14.1 - "@smithy/util-utf8": 4.2.2 - tslib: 2.8.1 - - "@smithy/middleware-content-length@4.2.14": - dependencies: - "@smithy/protocol-http": 5.3.14 - "@smithy/types": 4.14.1 - tslib: 2.8.1 - - "@smithy/middleware-endpoint@4.4.32": - dependencies: - "@smithy/core": 3.23.17 - "@smithy/middleware-serde": 4.2.20 - "@smithy/node-config-provider": 4.3.14 - "@smithy/shared-ini-file-loader": 4.4.9 - "@smithy/types": 4.14.1 - "@smithy/url-parser": 4.2.14 - "@smithy/util-middleware": 4.2.14 - tslib: 2.8.1 - - "@smithy/middleware-retry@4.5.7": - dependencies: - "@smithy/core": 3.23.17 - "@smithy/node-config-provider": 4.3.14 - "@smithy/protocol-http": 5.3.14 - "@smithy/service-error-classification": 4.3.1 - "@smithy/smithy-client": 4.12.13 - "@smithy/types": 4.14.1 - "@smithy/util-middleware": 4.2.14 - "@smithy/util-retry": 4.3.6 - "@smithy/uuid": 1.1.2 - tslib: 2.8.1 - - "@smithy/middleware-serde@4.2.20": - dependencies: - "@smithy/core": 3.23.17 - "@smithy/protocol-http": 5.3.14 - "@smithy/types": 4.14.1 - tslib: 2.8.1 - - "@smithy/middleware-stack@4.2.14": - dependencies: - "@smithy/types": 4.14.1 - tslib: 2.8.1 - - "@smithy/node-config-provider@4.3.14": - dependencies: - "@smithy/property-provider": 4.2.14 - "@smithy/shared-ini-file-loader": 4.4.9 - "@smithy/types": 4.14.1 - tslib: 2.8.1 - - "@smithy/node-http-handler@4.6.1": - dependencies: - "@smithy/protocol-http": 5.3.14 - "@smithy/querystring-builder": 4.2.14 - "@smithy/types": 4.14.1 - tslib: 2.8.1 - - "@smithy/property-provider@4.2.14": - dependencies: - "@smithy/types": 4.14.1 - tslib: 2.8.1 - - "@smithy/protocol-http@5.3.14": - dependencies: - "@smithy/types": 4.14.1 - tslib: 2.8.1 - - "@smithy/querystring-builder@4.2.14": - dependencies: - "@smithy/types": 4.14.1 - "@smithy/util-uri-escape": 4.2.2 - tslib: 2.8.1 - - "@smithy/querystring-parser@4.2.14": - dependencies: - "@smithy/types": 4.14.1 - tslib: 2.8.1 - - "@smithy/service-error-classification@4.3.1": - dependencies: - "@smithy/types": 4.14.1 - - "@smithy/shared-ini-file-loader@4.4.9": - dependencies: - "@smithy/types": 4.14.1 - tslib: 2.8.1 - - "@smithy/signature-v4@5.3.14": - dependencies: - "@smithy/is-array-buffer": 4.2.2 - "@smithy/protocol-http": 5.3.14 - "@smithy/types": 4.14.1 - "@smithy/util-hex-encoding": 4.2.2 - "@smithy/util-middleware": 4.2.14 - "@smithy/util-uri-escape": 4.2.2 - "@smithy/util-utf8": 4.2.2 - tslib: 2.8.1 - - "@smithy/smithy-client@4.12.13": - dependencies: - "@smithy/core": 3.23.17 - "@smithy/middleware-endpoint": 4.4.32 - "@smithy/middleware-stack": 4.2.14 - "@smithy/protocol-http": 5.3.14 - "@smithy/types": 4.14.1 - "@smithy/util-stream": 4.5.25 - tslib: 2.8.1 - - "@smithy/types@4.14.1": - dependencies: - tslib: 2.8.1 - - "@smithy/url-parser@4.2.14": - dependencies: - "@smithy/querystring-parser": 4.2.14 - "@smithy/types": 4.14.1 - tslib: 2.8.1 - - "@smithy/util-base64@4.3.2": - dependencies: - "@smithy/util-buffer-from": 4.2.2 - "@smithy/util-utf8": 4.2.2 - tslib: 2.8.1 - - "@smithy/util-body-length-browser@4.2.2": - dependencies: - tslib: 2.8.1 - - "@smithy/util-body-length-node@4.2.3": - dependencies: - tslib: 2.8.1 - - "@smithy/util-buffer-from@2.2.0": - dependencies: - "@smithy/is-array-buffer": 2.2.0 - tslib: 2.8.1 - - "@smithy/util-buffer-from@4.2.2": - dependencies: - "@smithy/is-array-buffer": 4.2.2 - tslib: 2.8.1 - - "@smithy/util-config-provider@4.2.2": - dependencies: - tslib: 2.8.1 + '@sinonjs/commons': 3.0.1 - "@smithy/util-defaults-mode-browser@4.3.49": + '@smithy/core@3.26.0': dependencies: - "@smithy/property-provider": 4.2.14 - "@smithy/smithy-client": 4.12.13 - "@smithy/types": 4.14.1 + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - "@smithy/util-defaults-mode-node@4.2.54": + '@smithy/credential-provider-imds@4.4.2': dependencies: - "@smithy/config-resolver": 4.4.17 - "@smithy/credential-provider-imds": 4.2.14 - "@smithy/node-config-provider": 4.3.14 - "@smithy/property-provider": 4.2.14 - "@smithy/smithy-client": 4.12.13 - "@smithy/types": 4.14.1 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - "@smithy/util-endpoints@3.4.2": + '@smithy/fetch-http-handler@5.5.2': dependencies: - "@smithy/node-config-provider": 4.3.14 - "@smithy/types": 4.14.1 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - "@smithy/util-hex-encoding@4.2.2": + '@smithy/is-array-buffer@2.2.0': dependencies: tslib: 2.8.1 - "@smithy/util-middleware@4.2.14": + '@smithy/node-http-handler@4.8.2': dependencies: - "@smithy/types": 4.14.1 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - "@smithy/util-retry@4.3.6": + '@smithy/signature-v4@5.5.2': dependencies: - "@smithy/service-error-classification": 4.3.1 - "@smithy/types": 4.14.1 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - "@smithy/util-stream@4.5.25": + '@smithy/types@4.15.0': dependencies: - "@smithy/fetch-http-handler": 5.3.17 - "@smithy/node-http-handler": 4.6.1 - "@smithy/types": 4.14.1 - "@smithy/util-base64": 4.3.2 - "@smithy/util-buffer-from": 4.2.2 - "@smithy/util-hex-encoding": 4.2.2 - "@smithy/util-utf8": 4.2.2 tslib: 2.8.1 - "@smithy/util-uri-escape@4.2.2": + '@smithy/util-buffer-from@2.2.0': dependencies: + '@smithy/is-array-buffer': 2.2.0 tslib: 2.8.1 - "@smithy/util-utf8@2.3.0": + '@smithy/util-utf8@2.3.0': dependencies: - "@smithy/util-buffer-from": 2.2.0 + '@smithy/util-buffer-from': 2.2.0 tslib: 2.8.1 - "@smithy/util-utf8@4.2.2": + '@swc/helpers@0.5.21': dependencies: - "@smithy/util-buffer-from": 4.2.2 tslib: 2.8.1 - "@smithy/util-waiter@4.3.0": + '@tanstack/react-virtual@3.13.24(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - "@smithy/types": 4.14.1 - tslib: 2.8.1 - - "@smithy/uuid@1.1.2": - dependencies: - tslib: 2.8.1 - - "@swc/helpers@0.5.21": - dependencies: - tslib: 2.8.1 - - "@tanstack/react-virtual@3.13.24(react-dom@19.2.5(react@19.2.5))(react@19.2.5)": - dependencies: - "@tanstack/virtual-core": 3.14.0 + '@tanstack/virtual-core': 3.14.0 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - "@tanstack/virtual-core@3.14.0": {} + '@tanstack/virtual-core@3.14.0': {} - "@tsconfig/node10@1.0.12": {} + '@tsconfig/node10@1.0.12': {} - "@tsconfig/node12@1.0.11": {} + '@tsconfig/node12@1.0.11': {} - "@tsconfig/node14@1.0.3": {} + '@tsconfig/node14@1.0.3': {} - "@tsconfig/node16@1.0.4": {} + '@tsconfig/node16@1.0.4': {} - "@tufjs/canonical-json@2.0.0": {} + '@tufjs/canonical-json@2.0.0': {} - "@tufjs/models@2.0.1": + '@tufjs/models@2.0.1': dependencies: - "@tufjs/canonical-json": 2.0.0 + '@tufjs/canonical-json': 2.0.0 minimatch: 9.0.9 - "@tybys/wasm-util@0.10.1": + '@tybys/wasm-util@0.10.1': dependencies: tslib: 2.8.1 optional: true - "@tybys/wasm-util@0.9.0": + '@tybys/wasm-util@0.9.0': dependencies: tslib: 2.8.1 - "@types/babel__core@7.20.5": + '@types/babel__core@7.20.5': dependencies: - "@babel/parser": 7.28.5 - "@babel/types": 7.28.5 - "@types/babel__generator": 7.27.0 - "@types/babel__template": 7.4.4 - "@types/babel__traverse": 7.28.0 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 - "@types/babel__generator@7.27.0": + '@types/babel__generator@7.27.0': dependencies: - "@babel/types": 7.28.5 + '@babel/types': 7.28.5 - "@types/babel__template@7.4.4": + '@types/babel__template@7.4.4': dependencies: - "@babel/parser": 7.28.5 - "@babel/types": 7.28.5 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 - "@types/babel__traverse@7.28.0": + '@types/babel__traverse@7.28.0': dependencies: - "@babel/types": 7.28.5 - - "@types/estree@1.0.8": {} + '@babel/types': 7.28.5 - "@types/interpret@1.1.4": - dependencies: - "@types/node": 22.19.17 + '@types/estree@1.0.8': {} - "@types/istanbul-lib-coverage@2.0.6": {} + '@types/istanbul-lib-coverage@2.0.6': {} - "@types/istanbul-lib-report@3.0.3": + '@types/istanbul-lib-report@3.0.3': dependencies: - "@types/istanbul-lib-coverage": 2.0.6 + '@types/istanbul-lib-coverage': 2.0.6 - "@types/istanbul-reports@3.0.4": + '@types/istanbul-reports@3.0.4': dependencies: - "@types/istanbul-lib-report": 3.0.3 + '@types/istanbul-lib-report': 3.0.3 - "@types/jest-in-case@1.0.9": + '@types/jest-in-case@1.0.9': dependencies: - "@types/jest": 30.0.0 - "@types/node": 22.19.3 + '@types/jest': 30.0.0 + '@types/node': 22.19.3 - "@types/jest@30.0.0": + '@types/jest@30.0.0': dependencies: expect: 30.2.0 pretty-format: 30.2.0 - "@types/json-schema@7.0.15": {} + '@types/json-schema@7.0.15': {} - "@types/minimatch@3.0.5": {} + '@types/minimatch@3.0.5': {} - "@types/minimist@1.2.5": {} + '@types/minimist@1.2.5': {} - "@types/node@22.19.17": + '@types/node@22.19.17': dependencies: undici-types: 6.21.0 - "@types/node@22.19.3": + '@types/node@22.19.3': dependencies: undici-types: 6.21.0 - "@types/normalize-package-data@2.4.4": {} + '@types/normalize-package-data@2.4.4': {} - "@types/pg@8.20.0": + '@types/pg@8.20.0': dependencies: - "@types/node": 22.19.17 + '@types/node': 22.19.17 pg-protocol: 1.13.0 pg-types: 2.2.0 - "@types/pluralize@0.0.33": {} + '@types/pluralize@0.0.33': {} - "@types/semver@7.7.1": {} + '@types/semver@7.7.1': {} - "@types/stack-utils@2.0.3": {} + '@types/stack-utils@2.0.3': {} - "@types/yargs-parser@21.0.3": {} + '@types/yargs-parser@21.0.3': {} - "@types/yargs@17.0.35": + '@types/yargs@17.0.35': dependencies: - "@types/yargs-parser": 21.0.3 + '@types/yargs-parser': 21.0.3 - "@typescript-eslint/eslint-plugin@8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)": + '@typescript-eslint/eslint-plugin@8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': dependencies: - "@eslint-community/regexpp": 4.12.2 - "@typescript-eslint/parser": 8.50.1(eslint@9.39.2)(typescript@5.9.3) - "@typescript-eslint/scope-manager": 8.50.1 - "@typescript-eslint/type-utils": 8.50.1(eslint@9.39.2)(typescript@5.9.3) - "@typescript-eslint/utils": 8.50.1(eslint@9.39.2)(typescript@5.9.3) - "@typescript-eslint/visitor-keys": 8.50.1 + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.50.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.50.1 + '@typescript-eslint/type-utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.50.1 eslint: 9.39.2 ignore: 7.0.5 natural-compare: 1.4.0 @@ -12767,41 +7608,41 @@ snapshots: transitivePeerDependencies: - supports-color - "@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3)": + '@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3)': dependencies: - "@typescript-eslint/scope-manager": 8.50.1 - "@typescript-eslint/types": 8.50.1 - "@typescript-eslint/typescript-estree": 8.50.1(typescript@5.9.3) - "@typescript-eslint/visitor-keys": 8.50.1 + '@typescript-eslint/scope-manager': 8.50.1 + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.50.1 debug: 4.4.3 eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/project-service@8.50.1(typescript@5.9.3)": + '@typescript-eslint/project-service@8.50.1(typescript@5.9.3)': dependencies: - "@typescript-eslint/tsconfig-utils": 8.50.1(typescript@5.9.3) - "@typescript-eslint/types": 8.50.1 + '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) + '@typescript-eslint/types': 8.50.1 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/scope-manager@8.50.1": + '@typescript-eslint/scope-manager@8.50.1': dependencies: - "@typescript-eslint/types": 8.50.1 - "@typescript-eslint/visitor-keys": 8.50.1 + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/visitor-keys': 8.50.1 - "@typescript-eslint/tsconfig-utils@8.50.1(typescript@5.9.3)": + '@typescript-eslint/tsconfig-utils@8.50.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 - "@typescript-eslint/type-utils@8.50.1(eslint@9.39.2)(typescript@5.9.3)": + '@typescript-eslint/type-utils@8.50.1(eslint@9.39.2)(typescript@5.9.3)': dependencies: - "@typescript-eslint/types": 8.50.1 - "@typescript-eslint/typescript-estree": 8.50.1(typescript@5.9.3) - "@typescript-eslint/utils": 8.50.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.2 ts-api-utils: 2.1.0(typescript@5.9.3) @@ -12809,14 +7650,14 @@ snapshots: transitivePeerDependencies: - supports-color - "@typescript-eslint/types@8.50.1": {} + '@typescript-eslint/types@8.50.1': {} - "@typescript-eslint/typescript-estree@8.50.1(typescript@5.9.3)": + '@typescript-eslint/typescript-estree@8.50.1(typescript@5.9.3)': dependencies: - "@typescript-eslint/project-service": 8.50.1(typescript@5.9.3) - "@typescript-eslint/tsconfig-utils": 8.50.1(typescript@5.9.3) - "@typescript-eslint/types": 8.50.1 - "@typescript-eslint/visitor-keys": 8.50.1 + '@typescript-eslint/project-service': 8.50.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/visitor-keys': 8.50.1 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.4 @@ -12826,91 +7667,91 @@ snapshots: transitivePeerDependencies: - supports-color - "@typescript-eslint/utils@8.50.1(eslint@9.39.2)(typescript@5.9.3)": + '@typescript-eslint/utils@8.50.1(eslint@9.39.2)(typescript@5.9.3)': dependencies: - "@eslint-community/eslint-utils": 4.9.0(eslint@9.39.2) - "@typescript-eslint/scope-manager": 8.50.1 - "@typescript-eslint/types": 8.50.1 - "@typescript-eslint/typescript-estree": 8.50.1(typescript@5.9.3) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) + '@typescript-eslint/scope-manager': 8.50.1 + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/visitor-keys@8.50.1": + '@typescript-eslint/visitor-keys@8.50.1': dependencies: - "@typescript-eslint/types": 8.50.1 + '@typescript-eslint/types': 8.50.1 eslint-visitor-keys: 4.2.1 - "@ungap/structured-clone@1.3.0": {} + '@ungap/structured-clone@1.3.0': {} - "@unrs/resolver-binding-android-arm-eabi@1.11.1": + '@unrs/resolver-binding-android-arm-eabi@1.11.1': optional: true - "@unrs/resolver-binding-android-arm64@1.11.1": + '@unrs/resolver-binding-android-arm64@1.11.1': optional: true - "@unrs/resolver-binding-darwin-arm64@1.11.1": + '@unrs/resolver-binding-darwin-arm64@1.11.1': optional: true - "@unrs/resolver-binding-darwin-x64@1.11.1": + '@unrs/resolver-binding-darwin-x64@1.11.1': optional: true - "@unrs/resolver-binding-freebsd-x64@1.11.1": + '@unrs/resolver-binding-freebsd-x64@1.11.1': optional: true - "@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1": + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': optional: true - "@unrs/resolver-binding-linux-arm-musleabihf@1.11.1": + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': optional: true - "@unrs/resolver-binding-linux-arm64-gnu@1.11.1": + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': optional: true - "@unrs/resolver-binding-linux-arm64-musl@1.11.1": + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': optional: true - "@unrs/resolver-binding-linux-ppc64-gnu@1.11.1": + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': optional: true - "@unrs/resolver-binding-linux-riscv64-gnu@1.11.1": + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': optional: true - "@unrs/resolver-binding-linux-riscv64-musl@1.11.1": + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': optional: true - "@unrs/resolver-binding-linux-s390x-gnu@1.11.1": + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': optional: true - "@unrs/resolver-binding-linux-x64-gnu@1.11.1": + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': optional: true - "@unrs/resolver-binding-linux-x64-musl@1.11.1": + '@unrs/resolver-binding-linux-x64-musl@1.11.1': optional: true - "@unrs/resolver-binding-wasm32-wasi@1.11.1": + '@unrs/resolver-binding-wasm32-wasi@1.11.1': dependencies: - "@napi-rs/wasm-runtime": 0.2.12 + '@napi-rs/wasm-runtime': 0.2.12 optional: true - "@unrs/resolver-binding-win32-arm64-msvc@1.11.1": + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': optional: true - "@unrs/resolver-binding-win32-ia32-msvc@1.11.1": + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': optional: true - "@unrs/resolver-binding-win32-x64-msvc@1.11.1": + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - "@yarnpkg/lockfile@1.1.0": {} + '@yarnpkg/lockfile@1.1.0': {} - "@yarnpkg/parsers@3.0.2": + '@yarnpkg/parsers@3.0.2': dependencies: js-yaml: 3.14.2 tslib: 2.8.1 - "@zkochan/js-yaml@0.0.7": + '@zkochan/js-yaml@0.0.7': dependencies: argparse: 2.0.1 @@ -12921,6 +7762,8 @@ snapshots: abbrev@2.0.0: {} + accept-language-parser@1.5.0: {} + accepts@2.0.0: dependencies: mime-types: 3.0.2 @@ -13022,9 +7865,9 @@ snapshots: babel-jest@30.2.0(@babel/core@7.28.5): dependencies: - "@babel/core": 7.28.5 - "@jest/transform": 30.2.0 - "@types/babel__core": 7.20.5 + '@babel/core': 7.28.5 + '@jest/transform': 30.2.0 + '@types/babel__core': 7.20.5 babel-plugin-istanbul: 7.0.1 babel-preset-jest: 30.2.0(@babel/core@7.28.5) chalk: 4.1.2 @@ -13035,9 +7878,9 @@ snapshots: babel-plugin-istanbul@7.0.1: dependencies: - "@babel/helper-plugin-utils": 7.27.1 - "@istanbuljs/load-nyc-config": 1.1.0 - "@istanbuljs/schema": 0.1.3 + '@babel/helper-plugin-utils': 7.27.1 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 6.0.3 test-exclude: 6.0.0 transitivePeerDependencies: @@ -13045,30 +7888,30 @@ snapshots: babel-plugin-jest-hoist@30.2.0: dependencies: - "@types/babel__core": 7.20.5 + '@types/babel__core': 7.20.5 babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.5): dependencies: - "@babel/core": 7.28.5 - "@babel/plugin-syntax-async-generators": 7.8.4(@babel/core@7.28.5) - "@babel/plugin-syntax-bigint": 7.8.3(@babel/core@7.28.5) - "@babel/plugin-syntax-class-properties": 7.12.13(@babel/core@7.28.5) - "@babel/plugin-syntax-class-static-block": 7.14.5(@babel/core@7.28.5) - "@babel/plugin-syntax-import-attributes": 7.27.1(@babel/core@7.28.5) - "@babel/plugin-syntax-import-meta": 7.10.4(@babel/core@7.28.5) - "@babel/plugin-syntax-json-strings": 7.8.3(@babel/core@7.28.5) - "@babel/plugin-syntax-logical-assignment-operators": 7.10.4(@babel/core@7.28.5) - "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3(@babel/core@7.28.5) - "@babel/plugin-syntax-numeric-separator": 7.10.4(@babel/core@7.28.5) - "@babel/plugin-syntax-object-rest-spread": 7.8.3(@babel/core@7.28.5) - "@babel/plugin-syntax-optional-catch-binding": 7.8.3(@babel/core@7.28.5) - "@babel/plugin-syntax-optional-chaining": 7.8.3(@babel/core@7.28.5) - "@babel/plugin-syntax-private-property-in-object": 7.14.5(@babel/core@7.28.5) - "@babel/plugin-syntax-top-level-await": 7.14.5(@babel/core@7.28.5) + '@babel/core': 7.28.5 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.5) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.5) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.5) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.5) babel-preset-jest@30.2.0(@babel/core@7.28.5): dependencies: - "@babel/core": 7.28.5 + '@babel/core': 7.28.5 babel-plugin-jest-hoist: 30.2.0 babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5) @@ -13173,7 +8016,7 @@ snapshots: cacache@18.0.4: dependencies: - "@npmcli/fs": 3.1.1 + '@npmcli/fs': 3.1.1 fs-minipass: 3.0.3 glob: 10.5.0 lru-cache: 10.4.3 @@ -13401,20 +8244,22 @@ snapshots: csv-parser@3.2.0: {} + csv-parser@3.2.1: {} + csv-to-pg@3.16.1: dependencies: - "@pgsql/types": 17.6.2 - "@pgsql/utils": 17.8.16 + '@pgsql/types': 17.6.2 + '@pgsql/utils': 17.8.16 csv-parser: 3.2.0 inquirerer: 4.8.1 js-yaml: 4.1.1 pgsql-deparser: 17.18.3 - csv-to-pg@3.17.0: + csv-to-pg@3.18.0: dependencies: - "@pgsql/types": 17.6.2 - "@pgsql/utils": 17.8.16 - csv-parser: 3.2.0 + '@pgsql/types': 17.6.2 + '@pgsql/utils': 17.8.17 + csv-parser: 3.2.1 inquirerer: 4.8.1 js-yaml: 4.1.1 pgsql-deparser: 17.18.3 @@ -13566,7 +8411,7 @@ snapshots: dependencies: eslint: 9.39.2 optionalDependencies: - "@typescript-eslint/eslint-plugin": 8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) eslint-scope@8.4.0: dependencies: @@ -13579,18 +8424,18 @@ snapshots: eslint@9.39.2: dependencies: - "@eslint-community/eslint-utils": 4.9.0(eslint@9.39.2) - "@eslint-community/regexpp": 4.12.2 - "@eslint/config-array": 0.21.1 - "@eslint/config-helpers": 0.4.2 - "@eslint/core": 0.17.0 - "@eslint/eslintrc": 3.3.3 - "@eslint/js": 9.39.2 - "@eslint/plugin-kit": 0.4.1 - "@humanfs/node": 0.16.7 - "@humanwhocodes/module-importer": 1.0.1 - "@humanwhocodes/retry": 0.4.3 - "@types/estree": 1.0.8 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.1 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.3 + '@eslint/js': 9.39.2 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.7 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 @@ -13636,11 +8481,7 @@ snapshots: esutils@2.0.3: {} - etag-hash@2.12.0: {} - - etag-hash@2.16.1: {} - - etag-hash@2.17.0: {} + etag-hash@2.18.0: {} etag@1.8.1: {} @@ -13678,8 +8519,8 @@ snapshots: expect@30.2.0: dependencies: - "@jest/expect-utils": 30.2.0 - "@jest/get-type": 30.1.0 + '@jest/expect-utils': 30.2.0 + '@jest/get-type': 30.1.0 jest-matcher-utils: 30.2.0 jest-message-util: 30.2.0 jest-mock: 30.2.0 @@ -13724,8 +8565,8 @@ snapshots: fast-glob@3.3.3: dependencies: - "@nodelib/fs.stat": 2.0.5 - "@nodelib/fs.walk": 1.2.8 + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.8 @@ -13736,17 +8577,6 @@ snapshots: fast-uri@3.1.0: {} - fast-xml-builder@1.1.5: - dependencies: - path-expression-matcher: 1.5.0 - - fast-xml-parser@5.7.2: - dependencies: - "@nodable/entities": 2.1.0 - fast-xml-builder: 1.1.5 - path-expression-matcher: 1.5.0 - strnum: 2.2.3 - fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -13838,7 +8668,7 @@ snapshots: motion-utils: 12.36.0 tslib: 2.8.1 optionalDependencies: - "@emotion/is-prop-valid": 1.4.0 + '@emotion/is-prop-valid': 1.4.0 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) @@ -13876,6 +8706,11 @@ snapshots: appstash: 0.7.0 inquirerer: 4.8.1 + genomic@5.6.0: + dependencies: + appstash: 0.7.0 + inquirerer: 4.8.1 + gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} @@ -13899,7 +8734,7 @@ snapshots: get-pkg-repo@4.2.1: dependencies: - "@hutson/parse-repository-url": 3.0.2 + '@hutson/parse-repository-url': 3.0.2 hosted-git-info: 4.1.0 through2: 2.0.5 yargs: 16.2.0 @@ -13991,51 +8826,43 @@ snapshots: gopd@1.2.0: {} - gql-ast@3.10.0: - dependencies: - graphql: 16.13.0 - - gql-ast@3.5.0: - dependencies: - graphql: 16.13.0 - - gql-ast@3.9.1: + gql-ast@3.11.0: dependencies: graphql: 16.13.0 graceful-fs@4.2.11: {} - grafast@1.0.0(graphql@16.13.0): + grafast@1.0.2(graphql@16.13.0): dependencies: - "@graphile/lru": 5.0.0 + '@graphile/lru': 5.0.0 chalk: 4.1.2 debug: 4.4.3 eventemitter3: 5.0.4 - graphile-config: 1.0.0 + graphile-config: 1.0.1 graphql: 16.13.0 iterall: 1.3.0 tslib: 2.8.1 transitivePeerDependencies: - supports-color - grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0): + grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0): dependencies: - "@graphile/lru": 5.0.0 + '@graphile/lru': 5.0.0 debug: 4.4.3 eventemitter3: 5.0.4 - grafast: 1.0.0(graphql@16.13.0) - graphile-config: 1.0.0 + grafast: 1.0.2(graphql@16.13.0) + graphile-config: 1.0.1 graphql: 16.13.0 graphql-ws: 6.0.8(graphql@16.13.0)(ws@8.20.0) - ruru: 2.0.0(@types/node@22.19.17)(debug@4.4.3)(graphile-config@1.0.0)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)) + ruru: 2.0.0(@types/node@22.19.17)(debug@4.4.3)(graphile-config@1.0.1)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)) tslib: 2.8.1 optionalDependencies: ws: 8.20.0 transitivePeerDependencies: - - "@fastify/websocket" - - "@types/node" - - "@types/react" - - "@types/react-dom" + - '@fastify/websocket' + - '@types/node' + - '@types/react' + - '@types/react-dom' - crossws - immer - react @@ -14043,512 +8870,308 @@ snapshots: - supports-color - use-sync-external-store - graphile-bucket-provisioner-plugin@0.10.1(5f0f392d8f0d9efe4bb0ac60be0ac4d3): + graphile-bucket-provisioner-plugin@0.12.0(e63c2d4465dc2c4d1c4125a5ade8dc18): dependencies: - "@constructive-io/bucket-provisioner": 0.10.1 - "@pgpmjs/logger": 2.10.1 - "@pgsql/quotes": 17.1.0 - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphile-utils: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(tamedevil@0.1.0) - graphql: 16.13.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) - transitivePeerDependencies: - - aws-crt - - graphile-bucket-provisioner-plugin@0.11.0(5f0f392d8f0d9efe4bb0ac60be0ac4d3): - dependencies: - "@constructive-io/bucket-provisioner": 0.11.0 - "@pgpmjs/logger": 2.11.0 - "@pgsql/quotes": 17.1.0 - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphile-utils: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(tamedevil@0.1.0) + '@constructive-io/bucket-provisioner': 0.12.0 + '@pgpmjs/logger': 2.12.0 + '@pgsql/quotes': 17.1.0 + grafast: 1.0.2(graphql@16.13.0) + graphile-build: 5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0) + graphile-build-pg: 5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 + graphile-utils: 5.0.1(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(tamedevil@0.1.1) graphql: 16.13.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) - transitivePeerDependencies: - - aws-crt - - graphile-bucket-provisioner-plugin@0.4.2(5f0f392d8f0d9efe4bb0ac60be0ac4d3): - dependencies: - "@constructive-io/bucket-provisioner": 0.4.1 - "@pgpmjs/logger": 2.10.1 - "@pgsql/quotes": 17.1.0 - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphile-utils: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(tamedevil@0.1.0) - graphql: 16.13.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) - transitivePeerDependencies: - - aws-crt + postgraphile: 5.0.3(2814a1f7ecc203c5cbd501e32669b7b6) - graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0): + graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1): dependencies: - "@dataplan/pg": 1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0) - "@types/node": 22.19.17 + '@dataplan/pg': 1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0) + '@types/node': 22.19.17 debug: 4.4.3 - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-config: 1.0.0 + grafast: 1.0.2(graphql@16.13.0) + graphile-build: 5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0) + graphile-config: 1.0.1 graphql: 16.13.0 jsonwebtoken: 9.0.3 pg-introspection: 1.0.1 - pg-sql2: 5.0.0 - tamedevil: 0.1.0 + pg-sql2: 5.0.1 + tamedevil: 0.1.1 tslib: 2.8.1 optionalDependencies: - pg: 8.20.0 + pg: 8.22.0 transitivePeerDependencies: - supports-color - graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0): + graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0): dependencies: - "@types/node": 22.19.17 - "@types/pluralize": 0.0.33 - "@types/semver": 7.7.1 + '@types/node': 22.19.17 + '@types/pluralize': 0.0.33 + '@types/semver': 7.7.1 chalk: 4.1.2 debug: 4.4.3 - grafast: 1.0.0(graphql@16.13.0) - graphile-config: 1.0.0 + grafast: 1.0.2(graphql@16.13.0) + graphile-config: 1.0.1 graphql: 16.13.0 lodash: 4.18.1 pluralize: 7.0.0 - semver: 7.7.4 - tamedevil: 0.1.0 + semver: 7.8.5 + tamedevil: 0.1.1 transliteration: 2.6.1 tslib: 2.8.1 transitivePeerDependencies: - supports-color - graphile-bulk-mutations@0.3.1(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)): + graphile-bulk-mutations@0.5.5(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(postgraphile@5.0.3(2814a1f7ecc203c5cbd501e32669b7b6)): dependencies: - "@dataplan/pg": 1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0) - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 + '@dataplan/pg': 1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0) + grafast: 1.0.2(graphql@16.13.0) + graphile-build: 5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0) + graphile-build-pg: 5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) + pg-sql2: 5.0.1 + postgraphile: 5.0.3(2814a1f7ecc203c5cbd501e32669b7b6) + + graphile-cache@3.13.2(6413d1a9de55fcfeddea8ca0646a891b): + dependencies: + '@pgpmjs/logger': 2.12.0 + express: 5.2.1 + grafserv: 1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + graphile-realtime-subscriptions: 0.8.1(e63c2d4465dc2c4d1c4125a5ade8dc18) + lru-cache: 11.3.5 + pg-cache: 3.12.1 + postgraphile: 5.0.3(2814a1f7ecc203c5cbd501e32669b7b6) + transitivePeerDependencies: + - '@dataplan/json' + - '@dataplan/pg' + - '@envelop/core' + - '@fastify/websocket' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - '@whatwg-node/server' + - bufferutil + - crossws + - grafast + - graphile-build + - graphile-build-pg + - graphile-config + - graphile-utils + - graphql + - h3 + - hono + - immer + - pg + - pg-native + - pg-sql2 + - react + - react-dom + - supports-color + - tamedevil + - use-sync-external-store + - utf-8-validate + - ws - graphile-config@1.0.0: + graphile-config@1.0.1: dependencies: - "@types/interpret": 1.1.4 - "@types/node": 22.19.17 - "@types/semver": 7.7.1 chalk: 4.1.2 debug: 4.4.3 interpret: 3.1.1 - semver: 7.7.4 + semver: 7.8.5 tslib: 2.8.1 yargs: 17.7.2 transitivePeerDependencies: - supports-color - graphile-connection-filter@1.10.1(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)): - dependencies: - "@dataplan/pg": 1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) - - graphile-connection-filter@1.5.5(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)): - dependencies: - "@dataplan/pg": 1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) - - graphile-connection-filter@1.9.1(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)): + graphile-connection-filter@1.12.5(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(postgraphile@5.0.3(2814a1f7ecc203c5cbd501e32669b7b6)): dependencies: - "@dataplan/pg": 1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 + '@dataplan/pg': 1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0) + graphile-build: 5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0) + graphile-build-pg: 5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) + pg-sql2: 5.0.1 + postgraphile: 5.0.3(2814a1f7ecc203c5cbd501e32669b7b6) - graphile-ltree@1.6.1(4faf70654d1761fdcd3e0ec8e3b70790): + graphile-i18n@1.2.6(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(postgraphile@5.0.3(2814a1f7ecc203c5cbd501e32669b7b6)): dependencies: - "@dataplan/pg": 1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0) - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 + '@dataplan/pg': 1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0) + accept-language-parser: 1.5.0 + grafast: 1.0.2(graphql@16.13.0) + graphile-build: 5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0) + graphile-build-pg: 5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) - optionalDependencies: - graphile-connection-filter: 1.9.1(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)) - - graphile-ltree@1.7.1(ba152f8214cef09bccae96437a001126): - dependencies: - "@dataplan/pg": 1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0) - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 + pg-sql2: 5.0.1 + postgraphile: 5.0.3(2814a1f7ecc203c5cbd501e32669b7b6) + + graphile-llm@0.12.2(66278cdfe11e9688284eafa7c4e4b0db): + dependencies: + '@agentic-kit/ollama': 2.1.0 + '@constructive-io/express-context': 0.6.1(express@5.2.1) + '@constructive-io/llm-env': 0.1.1 + '@dataplan/pg': 1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0) + grafast: 1.0.2(graphql@16.13.0) + graphile-build: 5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0) + graphile-build-pg: 5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1) + graphile-cache: 3.13.2(6413d1a9de55fcfeddea8ca0646a891b) + graphile-config: 1.0.1 graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) + pg-sql2: 5.0.1 + postgraphile: 5.0.3(2814a1f7ecc203c5cbd501e32669b7b6) optionalDependencies: - graphile-connection-filter: 1.10.1(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)) - - graphile-pg-aggregates@1.2.1(4faf70654d1761fdcd3e0ec8e3b70790): - dependencies: - "@dataplan/pg": 1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0) - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphile-connection-filter: 1.9.1(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)) - graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) - - graphile-pg-aggregates@1.3.1(ba152f8214cef09bccae96437a001126): - dependencies: - "@dataplan/pg": 1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0) - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphile-connection-filter: 1.10.1(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)) - graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) + graphile-search: 1.17.1(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(postgraphile@5.0.3(2814a1f7ecc203c5cbd501e32669b7b6)) + graphile-utils: 5.0.1(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(tamedevil@0.1.1) + transitivePeerDependencies: + - '@dataplan/json' + - '@envelop/core' + - '@fastify/websocket' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - '@whatwg-node/server' + - bufferutil + - crossws + - express + - h3 + - hono + - immer + - pg + - pg-native + - react + - react-dom + - supports-color + - tamedevil + - use-sync-external-store + - utf-8-validate + - ws - graphile-postgis@2.11.6(0c09c7a5250822c771d08fe2008d95a0): + graphile-ltree@1.9.6(0a9b096f087dccea097813a24b6ec707): dependencies: - "@dataplan/pg": 1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0) - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 + '@dataplan/pg': 1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0) + grafast: 1.0.2(graphql@16.13.0) + graphile-build: 5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0) + graphile-build-pg: 5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) + pg-sql2: 5.0.1 + postgraphile: 5.0.3(2814a1f7ecc203c5cbd501e32669b7b6) optionalDependencies: - graphile-connection-filter: 1.5.5(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)) + graphile-connection-filter: 1.12.5(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(postgraphile@5.0.3(2814a1f7ecc203c5cbd501e32669b7b6)) - graphile-postgis@2.15.1(4faf70654d1761fdcd3e0ec8e3b70790): + graphile-pg-aggregates@1.5.5(0a9b096f087dccea097813a24b6ec707): dependencies: - "@dataplan/pg": 1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0) - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 + '@dataplan/pg': 1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0) + grafast: 1.0.2(graphql@16.13.0) + graphile-build: 5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0) + graphile-build-pg: 5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 + graphile-connection-filter: 1.12.5(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(postgraphile@5.0.3(2814a1f7ecc203c5cbd501e32669b7b6)) graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) - optionalDependencies: - graphile-connection-filter: 1.9.1(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)) + pg-sql2: 5.0.1 + postgraphile: 5.0.3(2814a1f7ecc203c5cbd501e32669b7b6) - graphile-postgis@2.16.1(ba152f8214cef09bccae96437a001126): + graphile-postgis@2.18.5(0a9b096f087dccea097813a24b6ec707): dependencies: - "@dataplan/pg": 1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0) - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 + '@dataplan/pg': 1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0) + grafast: 1.0.2(graphql@16.13.0) + graphile-build: 5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0) + graphile-build-pg: 5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) + pg-sql2: 5.0.1 + postgraphile: 5.0.3(2814a1f7ecc203c5cbd501e32669b7b6) optionalDependencies: - graphile-connection-filter: 1.10.1(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)) - - graphile-presigned-url-plugin@0.17.1(5f0f392d8f0d9efe4bb0ac60be0ac4d3): - dependencies: - "@aws-sdk/client-s3": 3.1038.0 - "@aws-sdk/s3-request-presigner": 3.1038.0 - "@pgpmjs/logger": 2.10.1 - "@pgsql/quotes": 17.1.0 - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphile-utils: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(tamedevil@0.1.0) - graphql: 16.13.0 - lru-cache: 11.3.5 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) - transitivePeerDependencies: - - aws-crt - - graphile-presigned-url-plugin@0.19.0(5f0f392d8f0d9efe4bb0ac60be0ac4d3): - dependencies: - "@aws-sdk/client-s3": 3.1038.0 - "@aws-sdk/s3-request-presigner": 3.1038.0 - "@pgpmjs/logger": 2.11.0 - "@pgsql/quotes": 17.1.0 - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphile-utils: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(tamedevil@0.1.0) + graphile-connection-filter: 1.12.5(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(postgraphile@5.0.3(2814a1f7ecc203c5cbd501e32669b7b6)) + + graphile-presigned-url-plugin@0.20.2(e63c2d4465dc2c4d1c4125a5ade8dc18): + dependencies: + '@aws-sdk/client-s3': 3.1075.0 + '@aws-sdk/s3-request-presigner': 3.1075.0 + '@pgpmjs/logger': 2.12.0 + '@pgsql/quotes': 17.1.0 + grafast: 1.0.2(graphql@16.13.0) + graphile-build: 5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0) + graphile-build-pg: 5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 + graphile-utils: 5.0.1(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(tamedevil@0.1.1) graphql: 16.13.0 lru-cache: 11.3.5 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) - transitivePeerDependencies: - - aws-crt - - graphile-presigned-url-plugin@0.7.0(5f0f392d8f0d9efe4bb0ac60be0ac4d3): - dependencies: - "@aws-sdk/client-s3": 3.1038.0 - "@aws-sdk/s3-request-presigner": 3.1038.0 - "@pgpmjs/logger": 2.10.1 - "@pgsql/quotes": 17.1.0 - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphile-utils: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(tamedevil@0.1.0) - graphql: 16.13.0 - lru-cache: 11.3.5 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) - transitivePeerDependencies: - - aws-crt + postgraphile: 5.0.3(2814a1f7ecc203c5cbd501e32669b7b6) - graphile-realtime-subscriptions@0.5.2(5f0f392d8f0d9efe4bb0ac60be0ac4d3): + graphile-realtime-subscriptions@0.8.1(e63c2d4465dc2c4d1c4125a5ade8dc18): dependencies: - "@pgpmjs/logger": 2.10.1 - "@pgsql/quotes": 17.1.0 - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphile-utils: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(tamedevil@0.1.0) + '@pgpmjs/logger': 2.12.0 + '@pgsql/quotes': 17.1.0 + grafast: 1.0.2(graphql@16.13.0) + graphile-build: 5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0) + graphile-build-pg: 5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 + graphile-utils: 5.0.1(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(tamedevil@0.1.1) graphql: 16.13.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) + postgraphile: 5.0.3(2814a1f7ecc203c5cbd501e32669b7b6) - graphile-realtime-subscriptions@0.7.0(5f0f392d8f0d9efe4bb0ac60be0ac4d3): + graphile-search@1.17.1(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(postgraphile@5.0.3(2814a1f7ecc203c5cbd501e32669b7b6)): dependencies: - "@pgpmjs/logger": 2.11.0 - "@pgsql/quotes": 17.1.0 - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphile-utils: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(tamedevil@0.1.0) - graphql: 16.13.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) - - graphile-search@1.11.1(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)): - dependencies: - "@dataplan/pg": 1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) - - graphile-search@1.12.1(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)): - dependencies: - "@dataplan/pg": 1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) - - graphile-search@1.7.5(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)): - dependencies: - "@dataplan/pg": 1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphql: 16.13.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) - - graphile-settings@4.22.3(@types/node@22.19.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0): - dependencies: - "@aws-sdk/client-s3": 3.1038.0 - "@constructive-io/bucket-provisioner": 0.4.1 - "@constructive-io/graphql-env": 3.6.1 - "@constructive-io/graphql-types": 3.5.1 - "@constructive-io/s3-streamer": 2.19.1 - "@constructive-io/s3-utils": 2.12.1 - "@constructive-io/upload-names": 2.11.0 - "@dataplan/json": 1.0.0(grafast@1.0.0(graphql@16.13.0)) - "@dataplan/pg": 1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0) - "@graphile-contrib/pg-many-to-many": 2.0.0-rc.2 - "@pgpmjs/logger": 2.10.1 - "@pgpmjs/types": 2.26.1 - "@pgsql/quotes": 17.1.0 - cors: 2.8.6 - express: 5.2.1 - grafast: 1.0.0(graphql@16.13.0) - grafserv: 1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) - graphile-bucket-provisioner-plugin: 0.4.2(5f0f392d8f0d9efe4bb0ac60be0ac4d3) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphile-connection-filter: 1.5.5(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)) - graphile-postgis: 2.11.6(0c09c7a5250822c771d08fe2008d95a0) - graphile-presigned-url-plugin: 0.7.0(5f0f392d8f0d9efe4bb0ac60be0ac4d3) - graphile-search: 1.7.5(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)) - graphile-sql-expression-validator: 2.7.0(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-upload-plugin: 2.6.0(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)) - graphile-utils: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(tamedevil@0.1.0) - graphql: 16.13.0 - inflekt: 0.7.1 - lru-cache: 11.3.5 - pg: 8.20.0 - pg-query-context: 2.10.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) - request-ip: 3.3.0 - tamedevil: 0.1.0 - transitivePeerDependencies: - - "@envelop/core" - - "@fastify/websocket" - - "@types/node" - - "@types/react" - - "@types/react-dom" - - "@whatwg-node/server" - - aws-crt - - bufferutil - - crossws - - h3 - - hono - - immer - - pg-native - - react - - react-dom - - supports-color - - use-sync-external-store - - utf-8-validate - - ws - - graphile-settings@4.33.1(@types/node@22.19.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0): - dependencies: - "@aws-sdk/client-s3": 3.1038.0 - "@constructive-io/bucket-provisioner": 0.10.1 - "@constructive-io/graphql-env": 3.10.1 - "@constructive-io/graphql-types": 3.9.1 - "@constructive-io/s3-streamer": 2.23.1 - "@constructive-io/s3-utils": 2.16.1 - "@constructive-io/upload-names": 2.15.1 - "@dataplan/json": 1.0.0(grafast@1.0.0(graphql@16.13.0)) - "@dataplan/pg": 1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0) - "@graphile-contrib/pg-many-to-many": 2.0.0-rc.2 - "@pgpmjs/logger": 2.10.1 - "@pgpmjs/types": 2.26.1 - "@pgsql/quotes": 17.1.0 - cors: 2.8.6 - express: 5.2.1 - grafast: 1.0.0(graphql@16.13.0) - grafserv: 1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) - graphile-bucket-provisioner-plugin: 0.10.1(5f0f392d8f0d9efe4bb0ac60be0ac4d3) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphile-connection-filter: 1.9.1(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)) - graphile-ltree: 1.6.1(4faf70654d1761fdcd3e0ec8e3b70790) - graphile-pg-aggregates: 1.2.1(4faf70654d1761fdcd3e0ec8e3b70790) - graphile-postgis: 2.15.1(4faf70654d1761fdcd3e0ec8e3b70790) - graphile-presigned-url-plugin: 0.17.1(5f0f392d8f0d9efe4bb0ac60be0ac4d3) - graphile-realtime-subscriptions: 0.5.2(5f0f392d8f0d9efe4bb0ac60be0ac4d3) - graphile-search: 1.11.1(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)) - graphile-sql-expression-validator: 2.11.1(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-upload-plugin: 2.10.1(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)) - graphile-utils: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(tamedevil@0.1.0) + '@dataplan/pg': 1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0) + graphile-build: 5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0) + graphile-build-pg: 5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 graphql: 16.13.0 - inflekt: 0.7.1 - lru-cache: 11.3.5 - pg: 8.20.0 - pg-query-context: 2.14.1 - pg-sql2: 5.0.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) - request-ip: 3.3.0 - tamedevil: 0.1.0 - transitivePeerDependencies: - - "@envelop/core" - - "@fastify/websocket" - - "@types/node" - - "@types/react" - - "@types/react-dom" - - "@whatwg-node/server" - - aws-crt - - bufferutil - - crossws - - h3 - - hono - - immer - - pg-native - - react - - react-dom - - supports-color - - use-sync-external-store - - utf-8-validate - - ws - - graphile-settings@5.2.1(@types/node@22.19.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0): - dependencies: - "@aws-sdk/client-s3": 3.1038.0 - "@constructive-io/bucket-provisioner": 0.11.0 - "@constructive-io/graphql-env": 3.11.0 - "@constructive-io/graphql-types": 3.10.0 - "@constructive-io/s3-streamer": 2.24.0 - "@constructive-io/s3-utils": 2.17.0 - "@constructive-io/upload-names": 2.16.0 - "@dataplan/json": 1.0.0(grafast@1.0.0(graphql@16.13.0)) - "@dataplan/pg": 1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0) - "@graphile-contrib/pg-many-to-many": 2.0.0-rc.2 - "@pgpmjs/logger": 2.11.0 - "@pgpmjs/types": 2.27.0 - "@pgsql/quotes": 17.1.0 + pg-sql2: 5.0.1 + postgraphile: 5.0.3(2814a1f7ecc203c5cbd501e32669b7b6) + + graphile-settings@5.8.2(@types/node@22.19.17)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0): + dependencies: + '@aws-sdk/client-s3': 3.1075.0 + '@constructive-io/bucket-provisioner': 0.12.0 + '@constructive-io/graphql-env': 3.13.1 + '@constructive-io/graphql-types': 3.12.1 + '@constructive-io/s3-streamer': 2.26.1 + '@constructive-io/s3-utils': 2.18.0 + '@constructive-io/upload-names': 2.17.0 + '@dataplan/json': 1.0.0(grafast@1.0.2(graphql@16.13.0)) + '@dataplan/pg': 1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0) + '@graphile-contrib/pg-many-to-many': 2.0.0-rc.2 + '@pgpmjs/logger': 2.12.0 + '@pgpmjs/types': 2.29.1 + '@pgsql/quotes': 17.1.0 cors: 2.8.6 express: 5.2.1 - grafast: 1.0.0(graphql@16.13.0) - grafserv: 1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) - graphile-bucket-provisioner-plugin: 0.11.0(5f0f392d8f0d9efe4bb0ac60be0ac4d3) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-bulk-mutations: 0.3.1(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)) - graphile-config: 1.0.0 - graphile-connection-filter: 1.10.1(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)) - graphile-ltree: 1.7.1(ba152f8214cef09bccae96437a001126) - graphile-pg-aggregates: 1.3.1(ba152f8214cef09bccae96437a001126) - graphile-postgis: 2.16.1(ba152f8214cef09bccae96437a001126) - graphile-presigned-url-plugin: 0.19.0(5f0f392d8f0d9efe4bb0ac60be0ac4d3) - graphile-realtime-subscriptions: 0.7.0(5f0f392d8f0d9efe4bb0ac60be0ac4d3) - graphile-search: 1.12.1(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)) - graphile-sql-expression-validator: 2.13.0(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-upload-plugin: 2.11.0(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)) - graphile-utils: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(tamedevil@0.1.0) + grafast: 1.0.2(graphql@16.13.0) + grafserv: 1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + graphile-bucket-provisioner-plugin: 0.12.0(e63c2d4465dc2c4d1c4125a5ade8dc18) + graphile-build: 5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0) + graphile-build-pg: 5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1) + graphile-bulk-mutations: 0.5.5(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(postgraphile@5.0.3(2814a1f7ecc203c5cbd501e32669b7b6)) + graphile-config: 1.0.1 + graphile-connection-filter: 1.12.5(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(postgraphile@5.0.3(2814a1f7ecc203c5cbd501e32669b7b6)) + graphile-i18n: 1.2.6(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(postgraphile@5.0.3(2814a1f7ecc203c5cbd501e32669b7b6)) + graphile-llm: 0.12.2(66278cdfe11e9688284eafa7c4e4b0db) + graphile-ltree: 1.9.6(0a9b096f087dccea097813a24b6ec707) + graphile-pg-aggregates: 1.5.5(0a9b096f087dccea097813a24b6ec707) + graphile-postgis: 2.18.5(0a9b096f087dccea097813a24b6ec707) + graphile-presigned-url-plugin: 0.20.2(e63c2d4465dc2c4d1c4125a5ade8dc18) + graphile-realtime-subscriptions: 0.8.1(e63c2d4465dc2c4d1c4125a5ade8dc18) + graphile-search: 1.17.1(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(postgraphile@5.0.3(2814a1f7ecc203c5cbd501e32669b7b6)) + graphile-upload-plugin: 2.12.2(graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(postgraphile@5.0.3(2814a1f7ecc203c5cbd501e32669b7b6)) + graphile-utils: 5.0.1(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(tamedevil@0.1.1) graphql: 16.13.0 inflekt: 0.7.1 lru-cache: 11.3.5 - pg: 8.20.0 - pg-query-context: 2.15.0 - pg-sql2: 5.0.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) + pg: 8.22.0 + pg-query-context: 2.17.0 + pg-sql2: 5.0.1 + postgraphile: 5.0.3(2814a1f7ecc203c5cbd501e32669b7b6) request-ip: 3.3.0 - tamedevil: 0.1.0 - transitivePeerDependencies: - - "@envelop/core" - - "@fastify/websocket" - - "@types/node" - - "@types/react" - - "@types/react-dom" - - "@whatwg-node/server" - - aws-crt + tamedevil: 0.1.1 + transitivePeerDependencies: + - '@envelop/core' + - '@fastify/websocket' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - '@whatwg-node/server' - bufferutil - crossws - h3 @@ -14562,106 +9185,44 @@ snapshots: - utf-8-validate - ws - graphile-sql-expression-validator@2.11.1(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0): - dependencies: - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphql: 16.13.0 - pgsql-deparser: 17.18.3 - pgsql-parser: 17.9.15 - - graphile-sql-expression-validator@2.13.0(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0): - dependencies: - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphql: 16.13.0 - pgsql-deparser: 17.18.3 - pgsql-parser: 17.9.15 - - graphile-sql-expression-validator@2.7.0(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0): - dependencies: - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphql: 16.13.0 - pgsql-deparser: 17.18.3 - pgsql-parser: 17.9.15 - - graphile-upload-plugin@2.10.1(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)): - dependencies: - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphql: 16.13.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) - - graphile-upload-plugin@2.11.0(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)): - dependencies: - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphql: 16.13.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) - - graphile-upload-plugin@2.6.0(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b)): - dependencies: - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphql: 16.13.0 - postgraphile: 5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b) - - graphile-utils@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(tamedevil@0.1.0): + graphile-upload-plugin@2.12.2(graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(postgraphile@5.0.3(2814a1f7ecc203c5cbd501e32669b7b6)): dependencies: - "@dataplan/pg": 1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0) - debug: 4.4.3 - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-config: 1.0.0 + graphile-build: 5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0) + graphile-build-pg: 5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 graphql: 16.13.0 - json5: 2.2.3 - tamedevil: 0.1.0 - tslib: 2.8.1 - optionalDependencies: - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - transitivePeerDependencies: - - supports-color + postgraphile: 5.0.3(2814a1f7ecc203c5cbd501e32669b7b6) - graphile-utils@5.0.1(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(tamedevil@0.1.0): + graphile-utils@5.0.1(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(tamedevil@0.1.1): dependencies: - "@dataplan/pg": 1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0) + '@dataplan/pg': 1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0) debug: 4.4.3 - grafast: 1.0.0(graphql@16.13.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-config: 1.0.0 + grafast: 1.0.2(graphql@16.13.0) + graphile-build: 5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0) + graphile-config: 1.0.1 graphql: 16.13.0 json5: 2.2.3 - tamedevil: 0.1.0 + tamedevil: 0.1.1 tslib: 2.8.1 optionalDependencies: - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) + graphile-build-pg: 5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1) transitivePeerDependencies: - supports-color graphiql@5.2.2(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)): dependencies: - "@graphiql/plugin-doc-explorer": 0.4.1(@graphiql/react@0.37.3(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)) - "@graphiql/plugin-history": 0.4.1(@graphiql/react@0.37.3(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)))(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)) - "@graphiql/react": 0.37.3(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)) + '@graphiql/plugin-doc-explorer': 0.4.1(@graphiql/react@0.37.3(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)) + '@graphiql/plugin-history': 0.4.1(@graphiql/react@0.37.3(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)))(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)) + '@graphiql/react': 0.37.3(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-compiler-runtime@19.1.0-rc.1(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)) graphql: 16.13.0 react: 19.2.5 react-compiler-runtime: 19.1.0-rc.1(react@19.2.5) react-dom: 19.2.5(react@19.2.5) transitivePeerDependencies: - - "@emotion/is-prop-valid" - - "@types/node" - - "@types/react" - - "@types/react-dom" + - '@emotion/is-prop-valid' + - '@types/node' + - '@types/react' + - '@types/react-dom' - graphql-ws - immer - use-sync-external-store @@ -14814,7 +9375,7 @@ snapshots: init-package-json@6.0.3: dependencies: - "@npmcli/package-json": 5.2.0 + '@npmcli/package-json': 5.2.0 npm-package-arg: 11.0.2 promzard: 1.0.2 read: 3.0.1 @@ -14826,7 +9387,7 @@ snapshots: inquirer@8.2.7(@types/node@22.19.3): dependencies: - "@inquirer/external-editor": 1.0.3(@types/node@22.19.3) + '@inquirer/external-editor': 1.0.3(@types/node@22.19.3) ansi-escapes: 4.3.2 chalk: 4.1.2 cli-cursor: 3.1.0 @@ -14842,7 +9403,7 @@ snapshots: through: 2.3.8 wrap-ansi: 6.2.0 transitivePeerDependencies: - - "@types/node" + - '@types/node' inquirerer@4.8.1: dependencies: @@ -14927,9 +9488,9 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - "@babel/core": 7.28.5 - "@babel/parser": 7.28.5 - "@istanbuljs/schema": 0.1.3 + '@babel/core': 7.28.5 + '@babel/parser': 7.28.5 + '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.7.4 transitivePeerDependencies: @@ -14943,7 +9504,7 @@ snapshots: istanbul-lib-source-maps@5.0.6: dependencies: - "@jridgewell/trace-mapping": 0.3.31 + '@jridgewell/trace-mapping': 0.3.31 debug: 4.4.3 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: @@ -14958,9 +9519,9 @@ snapshots: jackspeak@3.4.3: dependencies: - "@isaacs/cliui": 8.0.2 + '@isaacs/cliui': 8.0.2 optionalDependencies: - "@pkgjs/parseargs": 0.11.0 + '@pkgjs/parseargs': 0.11.0 jake@10.9.4: dependencies: @@ -14976,11 +9537,11 @@ snapshots: jest-circus@30.2.0: dependencies: - "@jest/environment": 30.2.0 - "@jest/expect": 30.2.0 - "@jest/test-result": 30.2.0 - "@jest/types": 30.2.0 - "@types/node": 22.19.3 + '@jest/environment': 30.2.0 + '@jest/expect': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.19.3 chalk: 4.1.2 co: 4.6.0 dedent: 1.7.1 @@ -15002,9 +9563,9 @@ snapshots: jest-cli@30.2.0(@types/node@22.19.3)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)): dependencies: - "@jest/core": 30.2.0(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)) - "@jest/test-result": 30.2.0 - "@jest/types": 30.2.0 + '@jest/core': 30.2.0(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)) + '@jest/test-result': 30.2.0 + '@jest/types': 30.2.0 chalk: 4.1.2 exit-x: 0.2.2 import-local: 3.2.0 @@ -15013,7 +9574,7 @@ snapshots: jest-validate: 30.2.0 yargs: 17.7.2 transitivePeerDependencies: - - "@types/node" + - '@types/node' - babel-plugin-macros - esbuild-register - supports-color @@ -15021,11 +9582,11 @@ snapshots: jest-config@30.2.0(@types/node@22.19.3)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)): dependencies: - "@babel/core": 7.28.5 - "@jest/get-type": 30.1.0 - "@jest/pattern": 30.0.1 - "@jest/test-sequencer": 30.2.0 - "@jest/types": 30.2.0 + '@babel/core': 7.28.5 + '@jest/get-type': 30.1.0 + '@jest/pattern': 30.0.1 + '@jest/test-sequencer': 30.2.0 + '@jest/types': 30.2.0 babel-jest: 30.2.0(@babel/core@7.28.5) chalk: 4.1.2 ci-info: 4.3.1 @@ -15046,7 +9607,7 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - "@types/node": 22.19.3 + '@types/node': 22.19.3 ts-node: 10.9.2(@types/node@22.19.3)(typescript@5.9.3) transitivePeerDependencies: - babel-plugin-macros @@ -15061,8 +9622,8 @@ snapshots: jest-diff@30.2.0: dependencies: - "@jest/diff-sequences": 30.0.1 - "@jest/get-type": 30.1.0 + '@jest/diff-sequences': 30.0.1 + '@jest/get-type': 30.1.0 chalk: 4.1.2 pretty-format: 30.2.0 @@ -15072,18 +9633,18 @@ snapshots: jest-each@30.2.0: dependencies: - "@jest/get-type": 30.1.0 - "@jest/types": 30.2.0 + '@jest/get-type': 30.1.0 + '@jest/types': 30.2.0 chalk: 4.1.2 jest-util: 30.2.0 pretty-format: 30.2.0 jest-environment-node@30.2.0: dependencies: - "@jest/environment": 30.2.0 - "@jest/fake-timers": 30.2.0 - "@jest/types": 30.2.0 - "@types/node": 22.19.3 + '@jest/environment': 30.2.0 + '@jest/fake-timers': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.19.3 jest-mock: 30.2.0 jest-util: 30.2.0 jest-validate: 30.2.0 @@ -15092,8 +9653,8 @@ snapshots: jest-haste-map@30.2.0: dependencies: - "@jest/types": 30.2.0 - "@types/node": 22.19.3 + '@jest/types': 30.2.0 + '@types/node': 22.19.3 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -15109,21 +9670,21 @@ snapshots: jest-leak-detector@30.2.0: dependencies: - "@jest/get-type": 30.1.0 + '@jest/get-type': 30.1.0 pretty-format: 30.2.0 jest-matcher-utils@30.2.0: dependencies: - "@jest/get-type": 30.1.0 + '@jest/get-type': 30.1.0 chalk: 4.1.2 jest-diff: 30.2.0 pretty-format: 30.2.0 jest-message-util@30.2.0: dependencies: - "@babel/code-frame": 7.27.1 - "@jest/types": 30.2.0 - "@types/stack-utils": 2.0.3 + '@babel/code-frame': 7.27.1 + '@jest/types': 30.2.0 + '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 micromatch: 4.0.8 @@ -15133,8 +9694,8 @@ snapshots: jest-mock@30.2.0: dependencies: - "@jest/types": 30.2.0 - "@types/node": 22.19.3 + '@jest/types': 30.2.0 + '@types/node': 22.19.3 jest-util: 30.2.0 jest-pnp-resolver@1.2.3(jest-resolve@30.2.0): @@ -15163,12 +9724,12 @@ snapshots: jest-runner@30.2.0: dependencies: - "@jest/console": 30.2.0 - "@jest/environment": 30.2.0 - "@jest/test-result": 30.2.0 - "@jest/transform": 30.2.0 - "@jest/types": 30.2.0 - "@types/node": 22.19.3 + '@jest/console': 30.2.0 + '@jest/environment': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.19.3 chalk: 4.1.2 emittery: 0.13.1 exit-x: 0.2.2 @@ -15190,14 +9751,14 @@ snapshots: jest-runtime@30.2.0: dependencies: - "@jest/environment": 30.2.0 - "@jest/fake-timers": 30.2.0 - "@jest/globals": 30.2.0 - "@jest/source-map": 30.0.1 - "@jest/test-result": 30.2.0 - "@jest/transform": 30.2.0 - "@jest/types": 30.2.0 - "@types/node": 22.19.3 + '@jest/environment': 30.2.0 + '@jest/fake-timers': 30.2.0 + '@jest/globals': 30.2.0 + '@jest/source-map': 30.0.1 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.19.3 chalk: 4.1.2 cjs-module-lexer: 2.1.1 collect-v8-coverage: 1.0.3 @@ -15217,16 +9778,16 @@ snapshots: jest-snapshot@30.2.0: dependencies: - "@babel/core": 7.28.5 - "@babel/generator": 7.28.5 - "@babel/plugin-syntax-jsx": 7.27.1(@babel/core@7.28.5) - "@babel/plugin-syntax-typescript": 7.27.1(@babel/core@7.28.5) - "@babel/types": 7.28.5 - "@jest/expect-utils": 30.2.0 - "@jest/get-type": 30.1.0 - "@jest/snapshot-utils": 30.2.0 - "@jest/transform": 30.2.0 - "@jest/types": 30.2.0 + '@babel/core': 7.28.5 + '@babel/generator': 7.28.5 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) + '@babel/types': 7.28.5 + '@jest/expect-utils': 30.2.0 + '@jest/get-type': 30.1.0 + '@jest/snapshot-utils': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5) chalk: 4.1.2 expect: 30.2.0 @@ -15243,8 +9804,8 @@ snapshots: jest-util@30.2.0: dependencies: - "@jest/types": 30.2.0 - "@types/node": 22.19.3 + '@jest/types': 30.2.0 + '@types/node': 22.19.3 chalk: 4.1.2 ci-info: 4.3.1 graceful-fs: 4.2.11 @@ -15252,8 +9813,8 @@ snapshots: jest-validate@30.2.0: dependencies: - "@jest/get-type": 30.1.0 - "@jest/types": 30.2.0 + '@jest/get-type': 30.1.0 + '@jest/types': 30.2.0 camelcase: 6.3.0 chalk: 4.1.2 leven: 3.1.0 @@ -15261,9 +9822,9 @@ snapshots: jest-watcher@30.2.0: dependencies: - "@jest/test-result": 30.2.0 - "@jest/types": 30.2.0 - "@types/node": 22.19.3 + '@jest/test-result': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.19.3 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -15272,20 +9833,20 @@ snapshots: jest-worker@30.2.0: dependencies: - "@types/node": 22.19.3 - "@ungap/structured-clone": 1.3.0 + '@types/node': 22.19.3 + '@ungap/structured-clone': 1.3.0 jest-util: 30.2.0 merge-stream: 2.0.0 supports-color: 8.1.1 jest@30.2.0(@types/node@22.19.3)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)): dependencies: - "@jest/core": 30.2.0(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)) - "@jest/types": 30.2.0 + '@jest/core': 30.2.0(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)) + '@jest/types': 30.2.0 import-local: 3.2.0 jest-cli: 30.2.0(@types/node@22.19.3)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)) transitivePeerDependencies: - - "@types/node" + - '@types/node' - babel-plugin-macros - esbuild-register - supports-color @@ -15351,7 +9912,7 @@ snapshots: lodash.isstring: 4.0.1 lodash.once: 4.1.1 ms: 2.1.3 - semver: 7.7.4 + semver: 7.8.5 just-diff-apply@5.5.0: {} @@ -15378,13 +9939,13 @@ snapshots: lerna@8.2.4(@types/node@22.19.3)(encoding@0.1.13): dependencies: - "@lerna/create": 8.2.4(@types/node@22.19.3)(encoding@0.1.13)(typescript@5.9.3) - "@npmcli/arborist": 7.5.4 - "@npmcli/package-json": 5.2.0 - "@npmcli/run-script": 8.1.0 - "@nx/devkit": 20.8.3(nx@20.8.3) - "@octokit/plugin-enterprise-rest": 6.0.1 - "@octokit/rest": 20.1.2 + '@lerna/create': 8.2.4(@types/node@22.19.3)(encoding@0.1.13)(typescript@5.9.3) + '@npmcli/arborist': 7.5.4 + '@npmcli/package-json': 5.2.0 + '@npmcli/run-script': 8.1.0 + '@nx/devkit': 20.8.3(nx@20.8.3) + '@octokit/plugin-enterprise-rest': 6.0.1 + '@octokit/rest': 20.1.2 aproba: 2.0.0 byte-size: 8.1.1 chalk: 4.1.0 @@ -15458,9 +10019,9 @@ snapshots: yargs: 17.7.2 yargs-parser: 21.1.1 transitivePeerDependencies: - - "@swc-node/register" - - "@swc/core" - - "@types/node" + - '@swc-node/register' + - '@swc/core' + - '@types/node' - babel-plugin-macros - bluebird - debug @@ -15496,7 +10057,7 @@ snapshots: libpg-query@17.7.3: dependencies: - "@pgsql/types": 17.6.2 + '@pgsql/types': 17.6.2 lines-and-columns@1.2.4: {} @@ -15587,7 +10148,7 @@ snapshots: make-fetch-happen@13.0.1: dependencies: - "@npmcli/agent": 2.2.2 + '@npmcli/agent': 2.2.2 cacache: 18.0.4 http-cache-semantics: 4.2.0 is-lambda: 1.0.1 @@ -15627,7 +10188,7 @@ snapshots: meow@8.1.2: dependencies: - "@types/minimist": 1.2.5 + '@types/minimist': 1.2.5 camelcase-keys: 6.2.2 decamelize-keys: 1.1.1 hard-rejection: 2.1.0 @@ -15647,18 +10208,14 @@ snapshots: meros@1.3.2(@types/node@22.19.17): optionalDependencies: - "@types/node": 22.19.17 + '@types/node': 22.19.17 micromatch@4.0.8: dependencies: braces: 3.0.3 picomatch: 2.3.1 - mime-bytes@0.12.0: {} - - mime-bytes@0.16.1: {} - - mime-bytes@0.17.0: {} + mime-bytes@0.18.0: {} mime-db@1.52.0: {} @@ -15785,7 +10342,7 @@ snapshots: multimatch@5.0.0: dependencies: - "@types/minimatch": 3.0.5 + '@types/minimatch': 3.0.5 array-differ: 3.0.0 array-union: 2.1.0 arrify: 2.0.1 @@ -15807,6 +10364,8 @@ snapshots: nested-obj@0.1.5: {} + nested-obj@0.2.2: {} + node-fetch@2.6.7(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 @@ -15890,7 +10449,7 @@ snapshots: npm-registry-fetch@17.1.0: dependencies: - "@npmcli/redact": 2.0.1 + '@npmcli/redact': 2.0.1 jsonparse: 1.3.1 make-fetch-happen: 13.0.1 minipass: 7.1.2 @@ -15909,10 +10468,10 @@ snapshots: nx@20.8.3: dependencies: - "@napi-rs/wasm-runtime": 0.2.4 - "@yarnpkg/lockfile": 1.1.0 - "@yarnpkg/parsers": 3.0.2 - "@zkochan/js-yaml": 0.0.7 + '@napi-rs/wasm-runtime': 0.2.4 + '@yarnpkg/lockfile': 1.1.0 + '@yarnpkg/parsers': 3.0.2 + '@zkochan/js-yaml': 0.0.7 axios: 1.13.2 chalk: 4.1.0 cli-cursor: 3.1.0 @@ -15944,16 +10503,16 @@ snapshots: yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - "@nx/nx-darwin-arm64": 20.8.3 - "@nx/nx-darwin-x64": 20.8.3 - "@nx/nx-freebsd-x64": 20.8.3 - "@nx/nx-linux-arm-gnueabihf": 20.8.3 - "@nx/nx-linux-arm64-gnu": 20.8.3 - "@nx/nx-linux-arm64-musl": 20.8.3 - "@nx/nx-linux-x64-gnu": 20.8.3 - "@nx/nx-linux-x64-musl": 20.8.3 - "@nx/nx-win32-arm64-msvc": 20.8.3 - "@nx/nx-win32-x64-msvc": 20.8.3 + '@nx/nx-darwin-arm64': 20.8.3 + '@nx/nx-darwin-x64': 20.8.3 + '@nx/nx-freebsd-x64': 20.8.3 + '@nx/nx-linux-arm-gnueabihf': 20.8.3 + '@nx/nx-linux-arm64-gnu': 20.8.3 + '@nx/nx-linux-arm64-musl': 20.8.3 + '@nx/nx-linux-x64-gnu': 20.8.3 + '@nx/nx-linux-x64-musl': 20.8.3 + '@nx/nx-win32-arm64-msvc': 20.8.3 + '@nx/nx-win32-x64-msvc': 20.8.3 transitivePeerDependencies: - debug @@ -16068,11 +10627,11 @@ snapshots: pacote@18.0.6: dependencies: - "@npmcli/git": 5.0.8 - "@npmcli/installed-package-contents": 2.1.0 - "@npmcli/package-json": 5.2.0 - "@npmcli/promise-spawn": 7.0.2 - "@npmcli/run-script": 8.1.0 + '@npmcli/git': 5.0.8 + '@npmcli/installed-package-contents': 2.1.0 + '@npmcli/package-json': 5.2.0 + '@npmcli/promise-spawn': 7.0.2 + '@npmcli/run-script': 8.1.0 cacache: 18.0.4 fs-minipass: 3.0.3 minipass: 7.1.2 @@ -16106,7 +10665,7 @@ snapshots: parse-json@5.2.0: dependencies: - "@babel/code-frame": 7.27.1 + '@babel/code-frame': 7.27.1 error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -16127,8 +10686,6 @@ snapshots: path-exists@4.0.0: {} - path-expression-matcher@1.5.0: {} - path-is-absolute@1.0.1: {} path-key@3.1.1: {} @@ -16151,20 +10708,20 @@ snapshots: dependencies: pify: 3.0.0 - pg-cache@3.10.0: + pg-cache@3.12.1: dependencies: - "@pgpmjs/logger": 2.11.0 - "@pgpmjs/types": 2.27.0 + '@pgpmjs/logger': 2.12.0 + '@pgpmjs/types': 2.29.1 lru-cache: 11.3.5 - pg: 8.20.0 - pg-env: 1.14.0 + pg: 8.22.0 + pg-env: 1.16.0 transitivePeerDependencies: - pg-native pg-cache@3.5.0: dependencies: - "@pgpmjs/logger": 2.10.1 - "@pgpmjs/types": 2.26.1 + '@pgpmjs/logger': 2.10.1 + '@pgpmjs/types': 2.26.1 lru-cache: 11.3.5 pg: 8.20.0 pg-env: 1.13.1 @@ -16173,8 +10730,8 @@ snapshots: pg-cache@3.9.1: dependencies: - "@pgpmjs/logger": 2.10.1 - "@pgpmjs/types": 2.26.1 + '@pgpmjs/logger': 2.10.1 + '@pgpmjs/types': 2.26.1 lru-cache: 11.3.5 pg: 8.20.0 pg-env: 1.13.1 @@ -16184,13 +10741,18 @@ snapshots: pg-cloudflare@1.3.0: optional: true + pg-cloudflare@1.4.0: + optional: true + pg-connection-string@2.12.0: {} + pg-connection-string@2.14.0: {} + pg-copy-streams@7.0.0: {} pg-env@1.13.1: {} - pg-env@1.14.0: {} + pg-env@1.16.0: {} pg-env@1.9.0: {} @@ -16204,23 +10766,17 @@ snapshots: dependencies: pg: 8.20.0 - pg-protocol@1.13.0: {} - - pg-query-context@2.10.0: + pg-pool@3.14.0(pg@8.22.0): dependencies: - pg: 8.20.0 - transitivePeerDependencies: - - pg-native + pg: 8.22.0 - pg-query-context@2.14.1: - dependencies: - pg: 8.20.0 - transitivePeerDependencies: - - pg-native + pg-protocol@1.13.0: {} - pg-query-context@2.15.0: + pg-protocol@1.15.0: {} + + pg-query-context@2.17.0: dependencies: - pg: 8.20.0 + pg: 8.22.0 transitivePeerDependencies: - pg-native @@ -16232,9 +10788,9 @@ snapshots: transitivePeerDependencies: - pg-native - pg-sql2@5.0.0: + pg-sql2@5.0.1: dependencies: - "@graphile/lru": 5.0.0 + '@graphile/lru': 5.0.0 tslib: 2.8.1 pg-types@2.2.0: @@ -16255,134 +10811,49 @@ snapshots: optionalDependencies: pg-cloudflare: 1.3.0 - pgpass@1.0.5: - dependencies: - split2: 4.2.0 - - pgpm@4.16.6(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0): + pg@8.22.0: dependencies: - "@inquirerer/utils": 3.3.7 - "@pgpmjs/core": 6.12.4 - "@pgpmjs/env": 2.18.0 - "@pgpmjs/export": 0.4.6(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) - "@pgpmjs/logger": 2.6.0 - "@pgpmjs/types": 2.22.0 - "@pgsql/quotes": 17.1.0 - appstash: 0.7.0 - find-and-require-package-json: 0.9.1 - genomic: 5.3.11 - inquirerer: 4.8.1 - js-yaml: 4.1.1 - pg-cache: 3.5.0 - pg-env: 1.9.0 - pgsql-deparser: 17.18.3 - semver: 7.7.4 - shelljs: 0.10.0 - yanse: 0.2.1 - transitivePeerDependencies: - - "@dataplan/json" - - "@dataplan/pg" - - "@envelop/core" - - "@fastify/websocket" - - "@types/node" - - "@types/react" - - "@types/react-dom" - - "@whatwg-node/server" - - aws-crt - - bufferutil - - crossws - - grafserv - - graphile-build - - h3 - - hono - - immer - - pg-native - - pg-sql2 - - react - - react-dom - - supports-color - - tamedevil - - use-sync-external-store - - utf-8-validate - - ws + pg-connection-string: 2.14.0 + pg-pool: 3.14.0(pg@8.22.0) + pg-protocol: 1.15.0 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.4.0 - pgpm@4.23.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0): + pgpass@1.0.5: dependencies: - "@inquirerer/utils": 3.3.7 - "@pgpmjs/core": 6.17.1 - "@pgpmjs/env": 2.22.1 - "@pgpmjs/export": 0.12.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) - "@pgpmjs/logger": 2.10.1 - "@pgpmjs/types": 2.26.1 - "@pgsql/quotes": 17.1.0 - appstash: 0.7.0 - find-and-require-package-json: 0.9.1 - genomic: 5.3.11 - inquirerer: 4.8.1 - js-yaml: 4.1.1 - pg-cache: 3.9.1 - pg-env: 1.13.1 - pgsql-deparser: 17.18.3 - semver: 7.7.4 - shelljs: 0.10.0 - yanse: 0.2.1 - transitivePeerDependencies: - - "@dataplan/json" - - "@dataplan/pg" - - "@envelop/core" - - "@fastify/websocket" - - "@types/node" - - "@types/react" - - "@types/react-dom" - - "@whatwg-node/server" - - aws-crt - - bufferutil - - crossws - - grafserv - - graphile-build - - h3 - - hono - - immer - - pg-native - - pg-sql2 - - react - - react-dom - - supports-color - - tamedevil - - use-sync-external-store - - utf-8-validate - - ws + split2: 4.2.0 - pgpm@4.24.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0): + pgpm@4.28.8(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0): dependencies: - "@inquirerer/utils": 3.3.7 - "@pgpmjs/core": 6.18.1 - "@pgpmjs/env": 2.23.0 - "@pgpmjs/export": 0.15.3(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(pg-sql2@5.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.0)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) - "@pgpmjs/logger": 2.11.0 - "@pgpmjs/types": 2.27.0 - "@pgsql/quotes": 17.1.0 + '@inquirerer/utils': 3.3.7 + '@pgpmjs/core': 6.24.1 + '@pgpmjs/env': 2.25.1 + '@pgpmjs/export': 0.22.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(@types/node@22.19.17)(grafserv@1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(pg-sql2@5.0.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + '@pgpmjs/logger': 2.12.0 + '@pgpmjs/types': 2.29.1 + '@pgsql/quotes': 17.1.0 appstash: 0.7.0 find-and-require-package-json: 0.9.1 - genomic: 5.3.11 + genomic: 5.6.0 inquirerer: 4.8.1 js-yaml: 4.1.1 - pg-cache: 3.10.0 - pg-env: 1.14.0 + pg-cache: 3.12.1 + pg-env: 1.16.0 pgsql-deparser: 17.18.3 - semver: 7.7.4 + semver: 7.8.5 shelljs: 0.10.0 yanse: 0.2.1 transitivePeerDependencies: - - "@dataplan/json" - - "@dataplan/pg" - - "@envelop/core" - - "@fastify/websocket" - - "@types/node" - - "@types/react" - - "@types/react-dom" - - "@whatwg-node/server" - - aws-crt + - '@dataplan/json' + - '@dataplan/pg' + - '@envelop/core' + - '@fastify/websocket' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - '@whatwg-node/server' - bufferutil - crossws - grafserv @@ -16402,9 +10873,9 @@ snapshots: pgsql-client@3.9.4: dependencies: - "@pgpmjs/core": 6.17.1 - "@pgpmjs/logger": 2.10.1 - "@pgpmjs/types": 2.26.1 + '@pgpmjs/core': 6.17.1 + '@pgpmjs/logger': 2.10.1 + '@pgpmjs/types': 2.26.1 pg: 8.20.0 pg-env: 1.13.1 transitivePeerDependencies: @@ -16413,19 +10884,19 @@ snapshots: pgsql-deparser@17.18.3: dependencies: - "@pgsql/quotes": 17.1.0 - "@pgsql/types": 17.6.2 + '@pgsql/quotes': 17.1.0 + '@pgsql/types': 17.6.2 pgsql-parser@17.9.15: dependencies: - "@pgsql/types": 17.6.2 + '@pgsql/types': 17.6.2 libpg-query: 17.7.3 pgsql-deparser: 17.18.3 pgsql-seed@2.9.4: dependencies: - "@pgpmjs/core": 6.17.1 - "@pgpmjs/env": 2.22.1 + '@pgpmjs/core': 6.17.1 + '@pgpmjs/env': 2.22.1 pg: 8.20.0 pg-env: 1.13.1 pg-seed: 0.9.0 @@ -16435,10 +10906,10 @@ snapshots: pgsql-test@4.9.4: dependencies: - "@pgpmjs/env": 2.18.0 - "@pgpmjs/logger": 2.6.0 - "@pgpmjs/server-utils": 3.6.0 - "@pgpmjs/types": 2.22.0 + '@pgpmjs/env': 2.18.0 + '@pgpmjs/logger': 2.6.0 + '@pgpmjs/server-utils': 3.6.0 + '@pgpmjs/types': 2.22.0 pg: 8.20.0 pg-cache: 3.5.0 pg-env: 1.9.0 @@ -16477,26 +10948,26 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postgraphile@5.0.0(1e17dbe2f8dbe5f8c9eae991b27c0c1b): + postgraphile@5.0.3(2814a1f7ecc203c5cbd501e32669b7b6): dependencies: - "@dataplan/json": 1.0.0(grafast@1.0.0(graphql@16.13.0)) - "@dataplan/pg": 1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0) - "@graphile/lru": 5.0.0 - "@types/node": 22.19.17 - "@types/pg": 8.20.0 + '@dataplan/json': 1.0.0(grafast@1.0.2(graphql@16.13.0)) + '@dataplan/pg': 1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0) + '@graphile/lru': 5.0.0 + '@types/node': 22.19.17 + '@types/pg': 8.20.0 debug: 4.4.3 - grafast: 1.0.0(graphql@16.13.0) - grafserv: 1.0.0(@types/node@22.19.17)(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) - graphile-build: 5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0) - graphile-build-pg: 5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0) - graphile-config: 1.0.0 - graphile-utils: 5.0.1(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build-pg@5.0.0(@dataplan/pg@1.0.0(@dataplan/json@1.0.0(grafast@1.0.0(graphql@16.13.0)))(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0))(grafast@1.0.0(graphql@16.13.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(pg-sql2@5.0.0)(pg@8.20.0)(tamedevil@0.1.0))(graphile-build@5.0.0(grafast@1.0.0(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0))(graphile-config@1.0.0)(graphql@16.13.0)(tamedevil@0.1.0) + grafast: 1.0.2(graphql@16.13.0) + grafserv: 1.0.0(@types/node@22.19.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5))(ws@8.20.0) + graphile-build: 5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0) + graphile-build-pg: 5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 + graphile-utils: 5.0.1(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build-pg@5.0.2(@dataplan/pg@1.0.3(@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0)))(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0))(grafast@1.0.2(graphql@16.13.0))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(pg-sql2@5.0.1)(pg@8.22.0)(tamedevil@0.1.1))(graphile-build@5.0.2(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(tamedevil@0.1.1) graphql: 16.13.0 iterall: 1.3.0 jsonwebtoken: 9.0.3 - pg: 8.20.0 - pg-sql2: 5.0.0 - tamedevil: 0.1.0 + pg: 8.22.0 + pg-sql2: 5.0.1 + tamedevil: 0.1.1 tslib: 2.8.1 ws: 8.20.0 transitivePeerDependencies: @@ -16526,13 +10997,13 @@ snapshots: pretty-format@29.7.0: dependencies: - "@jest/schemas": 29.6.3 + '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.3.1 pretty-format@30.2.0: dependencies: - "@jest/schemas": 30.0.5 + '@jest/schemas': 30.0.5 ansi-styles: 5.2.0 react-is: 18.3.1 @@ -16591,11 +11062,11 @@ snapshots: react-aria@3.48.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - "@internationalized/date": 3.12.1 - "@internationalized/number": 3.6.6 - "@internationalized/string": 3.2.8 - "@react-types/shared": 3.34.0(react@19.2.5) - "@swc/helpers": 0.5.21 + '@internationalized/date': 3.12.1 + '@internationalized/number': 3.6.6 + '@internationalized/string': 3.2.8 + '@react-types/shared': 3.34.0(react@19.2.5) + '@swc/helpers': 0.5.21 aria-hidden: 1.2.6 clsx: 2.1.1 react: 19.2.5 @@ -16631,11 +11102,11 @@ snapshots: react-stately@3.46.0(react@19.2.5): dependencies: - "@internationalized/date": 3.12.1 - "@internationalized/number": 3.6.6 - "@internationalized/string": 3.2.8 - "@react-types/shared": 3.34.0(react@19.2.5) - "@swc/helpers": 0.5.21 + '@internationalized/date': 3.12.1 + '@internationalized/number': 3.6.6 + '@internationalized/string': 3.2.8 + '@react-types/shared': 3.34.0(react@19.2.5) + '@swc/helpers': 0.5.21 react: 19.2.5 use-sync-external-store: 1.6.0(react@19.2.5) @@ -16673,7 +11144,7 @@ snapshots: read-pkg@5.2.0: dependencies: - "@types/normalize-package-data": 2.4.4 + '@types/normalize-package-data': 2.4.4 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 @@ -16758,25 +11229,25 @@ snapshots: ruru-types@2.0.0(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)): dependencies: - "@graphiql/toolkit": 0.11.3(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0) + '@graphiql/toolkit': 0.11.3(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0) graphiql: 5.2.2(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)) graphql: 16.13.0 optionalDependencies: react: 19.2.5 react-dom: 19.2.5(react@19.2.5) transitivePeerDependencies: - - "@emotion/is-prop-valid" - - "@types/node" - - "@types/react" - - "@types/react-dom" + - '@emotion/is-prop-valid' + - '@types/node' + - '@types/react' + - '@types/react-dom' - graphql-ws - immer - use-sync-external-store - ruru@2.0.0(@types/node@22.19.17)(debug@4.4.3)(graphile-config@1.0.0)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)): + ruru@2.0.0(@types/node@22.19.17)(debug@4.4.3)(graphile-config@1.0.1)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)): dependencies: - "@emotion/is-prop-valid": 1.4.0 - graphile-config: 1.0.0 + '@emotion/is-prop-valid': 1.4.0 + graphile-config: 1.0.1 graphql: 16.13.0 http-proxy: 1.18.1(debug@4.4.3) ruru-types: 2.0.0(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.20.0))(graphql@16.13.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)) @@ -16786,9 +11257,9 @@ snapshots: react: 19.2.5 react-dom: 19.2.5(react@19.2.5) transitivePeerDependencies: - - "@types/node" - - "@types/react" - - "@types/react-dom" + - '@types/node' + - '@types/react' + - '@types/react-dom' - debug - graphql-ws - immer @@ -16814,6 +11285,8 @@ snapshots: semver@7.7.4: {} + semver@7.8.5: {} + send@1.2.1: dependencies: debug: 4.4.3 @@ -16897,12 +11370,12 @@ snapshots: sigstore@2.3.1: dependencies: - "@sigstore/bundle": 2.3.2 - "@sigstore/core": 1.1.0 - "@sigstore/protobuf-specs": 0.3.3 - "@sigstore/sign": 2.3.2 - "@sigstore/tuf": 2.3.4 - "@sigstore/verify": 1.2.1 + '@sigstore/bundle': 2.3.2 + '@sigstore/core': 1.1.0 + '@sigstore/protobuf-specs': 0.3.3 + '@sigstore/sign': 2.3.2 + '@sigstore/tuf': 2.3.4 + '@sigstore/verify': 1.2.1 transitivePeerDependencies: - supports-color @@ -17020,8 +11493,6 @@ snapshots: strip-json-comments@3.1.1: {} - strnum@2.2.3: {} - supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -17034,13 +11505,13 @@ snapshots: synckit@0.11.11: dependencies: - "@pkgr/core": 0.2.9 + '@pkgr/core': 0.2.9 tabbable@6.4.0: {} - tamedevil@0.1.0: + tamedevil@0.1.1: dependencies: - "@graphile/lru": 5.0.0 + '@graphile/lru': 5.0.0 tslib: 2.8.1 tar-stream@2.2.0: @@ -17064,7 +11535,7 @@ snapshots: test-exclude@6.0.0: dependencies: - "@istanbuljs/schema": 0.1.3 + '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.5 @@ -17123,20 +11594,20 @@ snapshots: typescript: 5.9.3 yargs-parser: 21.1.1 optionalDependencies: - "@babel/core": 7.28.5 - "@jest/transform": 30.2.0 - "@jest/types": 30.2.0 + '@babel/core': 7.28.5 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 babel-jest: 30.2.0(@babel/core@7.28.5) jest-util: 30.2.0 ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3): dependencies: - "@cspotcode/source-map-support": 0.8.1 - "@tsconfig/node10": 1.0.12 - "@tsconfig/node12": 1.0.11 - "@tsconfig/node14": 1.0.3 - "@tsconfig/node16": 1.0.4 - "@types/node": 22.19.3 + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.12 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.19.3 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -17157,7 +11628,7 @@ snapshots: tuf-js@2.2.1: dependencies: - "@tufjs/models": 2.0.1 + '@tufjs/models': 2.0.1 debug: 4.4.3 make-fetch-happen: 13.0.1 transitivePeerDependencies: @@ -17216,25 +11687,25 @@ snapshots: dependencies: napi-postinstall: 0.3.4 optionalDependencies: - "@unrs/resolver-binding-android-arm-eabi": 1.11.1 - "@unrs/resolver-binding-android-arm64": 1.11.1 - "@unrs/resolver-binding-darwin-arm64": 1.11.1 - "@unrs/resolver-binding-darwin-x64": 1.11.1 - "@unrs/resolver-binding-freebsd-x64": 1.11.1 - "@unrs/resolver-binding-linux-arm-gnueabihf": 1.11.1 - "@unrs/resolver-binding-linux-arm-musleabihf": 1.11.1 - "@unrs/resolver-binding-linux-arm64-gnu": 1.11.1 - "@unrs/resolver-binding-linux-arm64-musl": 1.11.1 - "@unrs/resolver-binding-linux-ppc64-gnu": 1.11.1 - "@unrs/resolver-binding-linux-riscv64-gnu": 1.11.1 - "@unrs/resolver-binding-linux-riscv64-musl": 1.11.1 - "@unrs/resolver-binding-linux-s390x-gnu": 1.11.1 - "@unrs/resolver-binding-linux-x64-gnu": 1.11.1 - "@unrs/resolver-binding-linux-x64-musl": 1.11.1 - "@unrs/resolver-binding-wasm32-wasi": 1.11.1 - "@unrs/resolver-binding-win32-arm64-msvc": 1.11.1 - "@unrs/resolver-binding-win32-ia32-msvc": 1.11.1 - "@unrs/resolver-binding-win32-x64-msvc": 1.11.1 + '@unrs/resolver-binding-android-arm-eabi': 1.11.1 + '@unrs/resolver-binding-android-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-x64': 1.11.1 + '@unrs/resolver-binding-freebsd-x64': 1.11.1 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-arm64-musl': 1.11.1 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1 + '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-musl': 1.11.1 + '@unrs/resolver-binding-wasm32-wasi': 1.11.1 + '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1 + '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 + '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 upath@2.0.1: {} @@ -17265,11 +11736,7 @@ snapshots: util-deprecate@1.0.2: {} - uuid-hash@2.11.0: {} - - uuid-hash@2.15.1: {} - - uuid-hash@2.16.0: {} + uuid-hash@2.17.0: {} uuid@10.0.0: {} @@ -17277,8 +11744,8 @@ snapshots: v8-to-istanbul@9.3.0: dependencies: - "@jridgewell/trace-mapping": 0.3.31 - "@types/istanbul-lib-coverage": 2.0.6 + '@jridgewell/trace-mapping': 0.3.31 + '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 validate-npm-package-license@3.0.4: From cdd91e9b3a9f18bf8e1898e4a731f33b37d81fce Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Fri, 26 Jun 2026 04:29:50 +0000 Subject: [PATCH 03/12] fix: restore test files and snapshots to match deployed SQL - Restore database-jobs test to use JWT config (procedure has no db_id param) - Restore encrypted-secrets-table snapshot with uuidv7() default - Restore services test files removed by sync - Fix metaschema-schema verify: remove non-existent module column --- packages/database-jobs/__tests__/jobs.test.ts | 35 ++- .../__snapshots__/secrets-table.test.ts.snap | 2 +- .../metaschema_public/tables/view/table.sql | 2 +- .../__snapshots__/services.test.ts.snap | 147 ++++++++++++ packages/services/__tests__/services.test.ts | 210 ++++++++++++++++++ packages/services/jest.config.js | 15 ++ 6 files changed, 391 insertions(+), 20 deletions(-) create mode 100644 packages/services/__tests__/__snapshots__/services.test.ts.snap create mode 100644 packages/services/__tests__/services.test.ts create mode 100644 packages/services/jest.config.js diff --git a/packages/database-jobs/__tests__/jobs.test.ts b/packages/database-jobs/__tests__/jobs.test.ts index 453de4c04..44297918a 100644 --- a/packages/database-jobs/__tests__/jobs.test.ts +++ b/packages/database-jobs/__tests__/jobs.test.ts @@ -65,19 +65,20 @@ describe('scheduled jobs', () => { const start = new Date(Date.now() + 10000); // 10s const end = new Date(start.getTime() + 180000); // +3min + // Set JWT claims for the session (required by add_scheduled_job) + await pg.any(`SELECT set_config('jwt.claims.database_id', $1, false)`, [database_id]); + const [result] = await pg.any( `SELECT * FROM app_jobs.add_scheduled_job( - db_id := $1::uuid, - identifier := $2::text, - payload := $3::json, - schedule_info := $4::json, - job_key := $5::text, - queue_name := $6::text, - max_attempts := $7::integer, - priority := $8::integer + identifier := $1::text, + payload := $2::json, + schedule_info := $3::json, + job_key := $4::text, + queue_name := $5::text, + max_attempts := $6::integer, + priority := $7::integer )`, [ - database_id, 'my_job', { just: 'run it' }, { start, end, rule: '*/1 * * * *' }, @@ -101,17 +102,15 @@ describe('scheduled jobs', () => { const [result2] = await pg.any( `SELECT * FROM app_jobs.add_scheduled_job( - db_id := $1, - identifier := $2, - payload := $3, - schedule_info := $4, - job_key := $5, - queue_name := $6, - max_attempts := $7, - priority := $8 + identifier := $1, + payload := $2, + schedule_info := $3, + job_key := $4, + queue_name := $5, + max_attempts := $6, + priority := $7 )`, [ - database_id, 'my_job', { just: 'run it' }, { start, end, rule: '*/1 * * * *' }, diff --git a/packages/encrypted-secrets-table/__tests__/__snapshots__/secrets-table.test.ts.snap b/packages/encrypted-secrets-table/__tests__/__snapshots__/secrets-table.test.ts.snap index bb2e1d3b3..aa6ea3076 100644 --- a/packages/encrypted-secrets-table/__tests__/__snapshots__/secrets-table.test.ts.snap +++ b/packages/encrypted-secrets-table/__tests__/__snapshots__/secrets-table.test.ts.snap @@ -4,7 +4,7 @@ exports[`encrypted secrets table should have secrets_table with correct structur { "columns": [ { - "column_default": "uuid_generate_v4()", + "column_default": "uuidv7()", "column_name": "id", "data_type": "uuid", "is_nullable": "NO", diff --git a/packages/metaschema-schema/verify/schemas/metaschema_public/tables/view/table.sql b/packages/metaschema-schema/verify/schemas/metaschema_public/tables/view/table.sql index b35e8ab28..e7bb61dc3 100644 --- a/packages/metaschema-schema/verify/schemas/metaschema_public/tables/view/table.sql +++ b/packages/metaschema-schema/verify/schemas/metaschema_public/tables/view/table.sql @@ -3,7 +3,7 @@ BEGIN; SELECT id, database_id, schema_id, name, view_type, data, filter_type, filter_data, - security_invoker, is_read_only, smart_tags, category, module, scope, tags + security_invoker, is_read_only, smart_tags, category, scope, tags FROM metaschema_public.view WHERE FALSE; diff --git a/packages/services/__tests__/__snapshots__/services.test.ts.snap b/packages/services/__tests__/__snapshots__/services.test.ts.snap new file mode 100644 index 000000000..892a7a901 --- /dev/null +++ b/packages/services/__tests__/__snapshots__/services.test.ts.snap @@ -0,0 +1,147 @@ +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing + +exports[`services functionality should handle complete meta workflow with services 1`] = ` +{ + "created_at": "[DATE]", + "hash": null, + "id": "[ID]", + "label": null, + "name": "my-meta-db", + "owner_id": "[ID]", + "schema_hash": null, + "updated_at": "[DATE]", +} +`; + +exports[`services functionality should handle complete meta workflow with services 2`] = ` +{ + "anon_role": "anonymous", + "database_id": "[ID]", + "dbname": "test-database", + "id": "[ID]", + "is_public": true, + "name": "public", + "role_name": "authenticated", +} +`; + +exports[`services functionality should handle complete meta workflow with services 3`] = ` +{ + "anon_role": "administrator", + "database_id": "[ID]", + "dbname": "test-database", + "id": "[ID]", + "is_public": true, + "name": "admin", + "role_name": "administrator", +} +`; + +exports[`services functionality should handle complete meta workflow with services 4`] = ` +{ + "apple_touch_icon": null, + "database_id": "[ID]", + "dbname": "test-database", + "description": "Website Description", + "favicon": null, + "id": "[ID]", + "logo": null, + "og_image": null, + "title": "Website Title", +} +`; + +exports[`services functionality should handle complete meta workflow with services 5`] = ` +{ + "api_id": "[ID]", + "database_id": "[ID]", + "domain": "pgpm.io", + "id": "[ID]", + "site_id": null, + "subdomain": "api", +} +`; + +exports[`services functionality should handle complete meta workflow with services 6`] = ` +{ + "api_id": null, + "database_id": "[ID]", + "domain": "pgpm.io", + "id": "[ID]", + "site_id": "[ID]", + "subdomain": "app", +} +`; + +exports[`services functionality should handle complete meta workflow with services 7`] = ` +{ + "api_id": "[ID]", + "database_id": "[ID]", + "domain": "pgpm.io", + "id": "[ID]", + "site_id": null, + "subdomain": "admin", +} +`; + +exports[`services functionality should handle complete meta workflow with services 8`] = ` +{ + "data": { + "supportEmail": "support@interweb.co", + }, + "database_id": "[ID]", + "id": "[ID]", + "name": "legal-emails", + "site_id": "[ID]", +} +`; + +exports[`services functionality should handle complete meta workflow with services 9`] = ` +{ + "api_id": "[ID]", + "data": { + "authenticate": "authenticate", + "authenticate_schema": "services_private", + }, + "database_id": "[ID]", + "id": "[ID]", + "name": "rls_module", +} +`; + +exports[`services functionality should handle complete meta workflow with services 10`] = ` +{ + "data": { + "auth_schema": "services_public", + "forgot_password": "forgot_password", + "reset_password": "reset_password", + "send_verification_email": "send_verification_email", + "set_password": "set_password", + "sign_in": "login", + "sign_up": "register", + "verify_email": "verify_email", + }, + "database_id": "[ID]", + "id": "[ID]", + "name": "user_auth_module", + "site_id": "[ID]", +} +`; + +exports[`services functionality should handle complete meta workflow with services 11`] = ` +{ + "api_id": "[ID]", + "database_id": "[ID]", + "id": "[ID]", + "schema_id": "[ID]", +} +`; + +exports[`services functionality should handle complete meta workflow with services 12`] = ` +{ + "api_id": "[ID]", + "database_id": "[ID]", + "id": "[ID]", + "schema_id": "[ID]", +} +`; diff --git a/packages/services/__tests__/services.test.ts b/packages/services/__tests__/services.test.ts new file mode 100644 index 000000000..f722a512a --- /dev/null +++ b/packages/services/__tests__/services.test.ts @@ -0,0 +1,210 @@ +import { getConnections, PgTestClient, snapshot } from 'pgsql-test'; + +let pg: PgTestClient; +let teardown: () => Promise; + +describe('services functionality', () => { + beforeAll(async () => { + ({ pg, teardown } = await getConnections()); + }); + + afterAll(async () => { + await teardown(); + }); + + beforeEach(async () => { + await pg.beforeEach(); + await pg.any(`GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO public`); + }); + + afterEach(async () => { + await pg.afterEach(); + }); + + it('should handle complete meta workflow with services', async () => { + const objs: Record = { + tables: {}, + domains: {}, + apis: {}, + sites: {} + }; + + const owner_id = '07281002-1699-4762-57e3-ab1b92243120'; + + const snap = (obj: any) => { + expect(snapshot(obj)).toMatchSnapshot(); + }; + + const snapWithNormalizedDbname = (obj: any) => { + const normalized = { + ...obj, + dbname: 'test-database' + }; + expect(snapshot(normalized)).toMatchSnapshot(); + }; + + // Step 1: Create database + const [database] = await pg.any( + `INSERT INTO metaschema_public.database (owner_id, name) + VALUES ($1, $2) + RETURNING *`, + [owner_id, 'my-meta-db'] + ); + objs.db = database; + const database_id = database.id; + expect(snapshot(database)).toMatchSnapshot(); + + // Step 2: Create APIs first (since domains reference them) + const [publicApi] = await pg.any( + `INSERT INTO services_public.apis (database_id, name, role_name, anon_role) + VALUES ($1, $2, $3, $4) + RETURNING *`, + [database_id, 'public', 'authenticated', 'anonymous'] + ); + objs.apis.public = publicApi; + snapWithNormalizedDbname(publicApi); + + const [adminApi] = await pg.any( + `INSERT INTO services_public.apis (database_id, name, role_name, anon_role) + VALUES ($1, $2, $3, $4) + RETURNING *`, + [database_id, 'admin', 'administrator', 'administrator'] + ); + objs.apis.admin = adminApi; + snapWithNormalizedDbname(adminApi); + + // Step 3: Create sites + const [appSite] = await pg.any( + `INSERT INTO services_public.sites (database_id, title, description) + VALUES ($1, $2, $3) + RETURNING *`, + [database_id, 'Website Title', 'Website Description'] + ); + objs.sites.app = appSite; + snapWithNormalizedDbname(appSite); + + // Step 4: Register domains (linking to APIs and sites) + const [apiDomain] = await pg.any( + `INSERT INTO services_public.domains (database_id, api_id, domain, subdomain) + VALUES ($1, $2, $3, $4) + RETURNING *`, + [database_id, objs.apis.public.id, 'pgpm.io', 'api'] + ); + objs.domains.api = apiDomain; + expect(snapshot(apiDomain)).toMatchSnapshot(); + + const [appDomain] = await pg.any( + `INSERT INTO services_public.domains (database_id, site_id, domain, subdomain) + VALUES ($1, $2, $3, $4) + RETURNING *`, + [database_id, objs.sites.app.id, 'pgpm.io', 'app'] + ); + objs.domains.app = appDomain; + expect(snapshot(appDomain)).toMatchSnapshot(); + + const [adminDomain] = await pg.any( + `INSERT INTO services_public.domains (database_id, api_id, domain, subdomain) + VALUES ($1, $2, $3, $4) + RETURNING *`, + [database_id, objs.apis.admin.id, 'pgpm.io', 'admin'] + ); + objs.domains.admin = adminDomain; + expect(snapshot(adminDomain)).toMatchSnapshot(); + + const [baseDomain] = await pg.any( + `INSERT INTO services_public.domains (database_id, domain) + VALUES ($1, $2) + RETURNING *`, + [database_id, 'pgpm.io'] + ); + objs.domains.base = baseDomain; + + // Step 5: Register modules + const [siteModule1] = await pg.any( + `INSERT INTO services_public.site_modules (database_id, site_id, name, data) + VALUES ($1, $2, $3, $4::jsonb) + RETURNING *`, + [database_id, objs.sites.app.id, 'legal-emails', JSON.stringify({ + supportEmail: 'support@interweb.co' + })] + ); + expect(snapshot(siteModule1)).toMatchSnapshot(); + + const [apiModule] = await pg.any( + `INSERT INTO services_public.api_modules (database_id, api_id, name, data) + VALUES ($1, $2, $3, $4::jsonb) + RETURNING *`, + [database_id, objs.apis.public.id, 'rls_module', JSON.stringify({ + authenticate_schema: 'services_private', + authenticate: 'authenticate' + })] + ); + expect(snapshot(apiModule)).toMatchSnapshot(); + + const [siteModule2] = await pg.any( + `INSERT INTO services_public.site_modules (database_id, site_id, name, data) + VALUES ($1, $2, $3, $4::jsonb) + RETURNING *`, + [database_id, objs.sites.app.id, 'user_auth_module', JSON.stringify({ + auth_schema: 'services_public', + sign_in: 'login', + sign_up: 'register', + set_password: 'set_password', + reset_password: 'reset_password', + forgot_password: 'forgot_password', + send_verification_email: 'send_verification_email', + verify_email: 'verify_email' + })] + ); + expect(snapshot(siteModule2)).toMatchSnapshot(); + + // Step 6: Schema associations + const [schema] = await pg.any( + `INSERT INTO metaschema_public.schema (database_id, schema_name, name) + VALUES ($1, $2, $3) + RETURNING *`, + [database_id, 'brand-public', 'public'] + ); + + const [publicAssoc] = await pg.any( + `INSERT INTO services_public.api_schemas (database_id, schema_id, api_id) + VALUES ($1, $2, $3) + RETURNING *`, + [database_id, schema.id, objs.apis.public.id] + ); + + const [adminAssoc] = await pg.any( + `INSERT INTO services_public.api_schemas (database_id, schema_id, api_id) + VALUES ($1, $2, $3) + RETURNING *`, + [database_id, schema.id, objs.apis.admin.id] + ); + + snap(publicAssoc); + snap(adminAssoc); + }); + + it('should register domain independently', async () => { + const owner_id = '07281002-1699-4762-57e3-ab1b92243120'; + + // Create database first + const [database] = await pg.any( + `INSERT INTO metaschema_public.database (owner_id, name) + VALUES ($1, $2) + RETURNING *`, + [owner_id, 'test-db-for-domain'] + ); + + // Then create domain + const [domain] = await pg.any( + `INSERT INTO services_public.domains (database_id, domain, subdomain) + VALUES ($1, $2, $3) + RETURNING *`, + [database.id, 'example.com', 'api'] + ); + + expect(domain.database_id).toBe(database.id); + expect(domain.domain).toBe('example.com'); + expect(domain.subdomain).toBe('api'); + }); +}); diff --git a/packages/services/jest.config.js b/packages/services/jest.config.js new file mode 100644 index 000000000..e20e7efb5 --- /dev/null +++ b/packages/services/jest.config.js @@ -0,0 +1,15 @@ +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', + + // Match both __tests__ and colocated test files + testMatch: ['**/?(*.)+(test|spec).{ts,tsx,js,jsx}'], + + // Ignore build artifacts and type declarations + testPathIgnorePatterns: ['/dist/', '\\.d\\.ts$'], + modulePathIgnorePatterns: ['/dist/'], + watchPathIgnorePatterns: ['/dist/'], + + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], +}; From c3e291e97b100afacf48f3a95843dba09fe32e03 Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Fri, 26 Jun 2026 04:33:42 +0000 Subject: [PATCH 04/12] fix: restore missing revert/verify files deleted by sync - Restore 10 services revert files (site_themes, apis, apps, etc.) - Restore 6 metaschema-modules revert + 6 verify files (agent_module, graph_module, etc.) - These files exist on main but were absent in constructive-db/pgpm-modules/ --- .../tables/agent_module/table.sql | 7 +++++++ .../tables/config_secrets_org_module/table.sql | 7 +++++++ .../tables/entity_type_provision/table.sql | 7 +++++++ .../tables/graph_module/table.sql | 7 +++++++ .../tables/merkle_store_module/table.sql | 7 +++++++ .../tables/session_secrets_module/table.sql | 7 +++++++ .../tables/agent_module/table.sql | 7 +++++++ .../tables/config_secrets_org_module/table.sql | 7 +++++++ .../tables/entity_type_provision/table.sql | 7 +++++++ .../tables/graph_module/table.sql | 7 +++++++ .../tables/merkle_store_module/table.sql | 7 +++++++ .../tables/session_secrets_module/table.sql | 7 +++++++ .../services/revert/schemas/services_private/schema.sql | 7 +++++++ .../services/revert/schemas/services_public/schema.sql | 7 +++++++ .../schemas/services_public/tables/api_modules/table.sql | 7 +++++++ .../schemas/services_public/tables/api_schemas/table.sql | 7 +++++++ .../revert/schemas/services_public/tables/apis/table.sql | 7 +++++++ .../revert/schemas/services_public/tables/apps/table.sql | 7 +++++++ .../schemas/services_public/tables/domains/table.sql | 7 +++++++ .../schemas/services_public/tables/site_metadata/table.sql | 7 +++++++ .../schemas/services_public/tables/site_modules/table.sql | 7 +++++++ .../schemas/services_public/tables/site_themes/table.sql | 7 +++++++ .../revert/schemas/services_public/tables/sites/table.sql | 7 +++++++ 23 files changed, 161 insertions(+) create mode 100644 packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/agent_module/table.sql create mode 100644 packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/config_secrets_org_module/table.sql create mode 100644 packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/entity_type_provision/table.sql create mode 100644 packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/graph_module/table.sql create mode 100644 packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/merkle_store_module/table.sql create mode 100644 packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/session_secrets_module/table.sql create mode 100644 packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/agent_module/table.sql create mode 100644 packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/config_secrets_org_module/table.sql create mode 100644 packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/entity_type_provision/table.sql create mode 100644 packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/graph_module/table.sql create mode 100644 packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/merkle_store_module/table.sql create mode 100644 packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/session_secrets_module/table.sql create mode 100644 packages/services/revert/schemas/services_private/schema.sql create mode 100644 packages/services/revert/schemas/services_public/schema.sql create mode 100644 packages/services/revert/schemas/services_public/tables/api_modules/table.sql create mode 100644 packages/services/revert/schemas/services_public/tables/api_schemas/table.sql create mode 100644 packages/services/revert/schemas/services_public/tables/apis/table.sql create mode 100644 packages/services/revert/schemas/services_public/tables/apps/table.sql create mode 100644 packages/services/revert/schemas/services_public/tables/domains/table.sql create mode 100644 packages/services/revert/schemas/services_public/tables/site_metadata/table.sql create mode 100644 packages/services/revert/schemas/services_public/tables/site_modules/table.sql create mode 100644 packages/services/revert/schemas/services_public/tables/site_themes/table.sql create mode 100644 packages/services/revert/schemas/services_public/tables/sites/table.sql diff --git a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/agent_module/table.sql b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/agent_module/table.sql new file mode 100644 index 000000000..28c795254 --- /dev/null +++ b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/agent_module/table.sql @@ -0,0 +1,7 @@ +-- Revert schemas/metaschema_modules_public/tables/agent_module/table from pg + +BEGIN; + +DROP TABLE metaschema_modules_public.agent_module; + +COMMIT; diff --git a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/config_secrets_org_module/table.sql b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/config_secrets_org_module/table.sql new file mode 100644 index 000000000..d16a1759a --- /dev/null +++ b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/config_secrets_org_module/table.sql @@ -0,0 +1,7 @@ +-- Revert schemas/metaschema_modules_public/tables/config_secrets_org_module/table from pg + +BEGIN; + +DROP TABLE metaschema_modules_public.config_secrets_org_module; + +COMMIT; diff --git a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/entity_type_provision/table.sql b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/entity_type_provision/table.sql new file mode 100644 index 000000000..4af431276 --- /dev/null +++ b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/entity_type_provision/table.sql @@ -0,0 +1,7 @@ +-- Revert schemas/metaschema_modules_public/tables/entity_type_provision/table from pg + +BEGIN; + +DROP TABLE metaschema_modules_public.entity_type_provision; + +COMMIT; diff --git a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/graph_module/table.sql b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/graph_module/table.sql new file mode 100644 index 000000000..735fc8f55 --- /dev/null +++ b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/graph_module/table.sql @@ -0,0 +1,7 @@ +-- Revert schemas/metaschema_modules_public/tables/graph_module/table from pg + +BEGIN; + +DROP TABLE metaschema_modules_public.graph_module; + +COMMIT; diff --git a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/merkle_store_module/table.sql b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/merkle_store_module/table.sql new file mode 100644 index 000000000..34afce6ff --- /dev/null +++ b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/merkle_store_module/table.sql @@ -0,0 +1,7 @@ +-- Revert schemas/metaschema_modules_public/tables/merkle_store_module/table from pg + +BEGIN; + +DROP TABLE metaschema_modules_public.merkle_store_module; + +COMMIT; diff --git a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/session_secrets_module/table.sql b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/session_secrets_module/table.sql new file mode 100644 index 000000000..fbb4553b6 --- /dev/null +++ b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/session_secrets_module/table.sql @@ -0,0 +1,7 @@ +-- Revert schemas/metaschema_modules_public/tables/session_secrets_module/table from pg + +BEGIN; + +DROP TABLE metaschema_modules_public.session_secrets_module; + +COMMIT; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/agent_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/agent_module/table.sql new file mode 100644 index 000000000..aa3519ff8 --- /dev/null +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/agent_module/table.sql @@ -0,0 +1,7 @@ +-- Verify schemas/metaschema_modules_public/tables/agent_module/table on pg + +BEGIN; + +SELECT verify_table ('metaschema_modules_public.agent_module'); + +ROLLBACK; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/config_secrets_org_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/config_secrets_org_module/table.sql new file mode 100644 index 000000000..b85512867 --- /dev/null +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/config_secrets_org_module/table.sql @@ -0,0 +1,7 @@ +-- Verify schemas/metaschema_modules_public/tables/config_secrets_org_module/table on pg + +BEGIN; + +SELECT verify_table ('metaschema_modules_public.config_secrets_org_module'); + +ROLLBACK; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/entity_type_provision/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/entity_type_provision/table.sql new file mode 100644 index 000000000..f5d77396a --- /dev/null +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/entity_type_provision/table.sql @@ -0,0 +1,7 @@ +-- Verify schemas/metaschema_modules_public/tables/entity_type_provision/table on pg + +BEGIN; + +SELECT verify_table ('metaschema_modules_public.entity_type_provision'); + +ROLLBACK; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/graph_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/graph_module/table.sql new file mode 100644 index 000000000..0c4e161a8 --- /dev/null +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/graph_module/table.sql @@ -0,0 +1,7 @@ +-- Verify schemas/metaschema_modules_public/tables/graph_module/table on pg + +BEGIN; + +SELECT verify_table ('metaschema_modules_public.graph_module'); + +ROLLBACK; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/merkle_store_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/merkle_store_module/table.sql new file mode 100644 index 000000000..8b8a33f70 --- /dev/null +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/merkle_store_module/table.sql @@ -0,0 +1,7 @@ +-- Verify schemas/metaschema_modules_public/tables/merkle_store_module/table on pg + +BEGIN; + +SELECT verify_table ('metaschema_modules_public.merkle_store_module'); + +ROLLBACK; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/session_secrets_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/session_secrets_module/table.sql new file mode 100644 index 000000000..5cf6fc68b --- /dev/null +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/session_secrets_module/table.sql @@ -0,0 +1,7 @@ +-- Verify schemas/metaschema_modules_public/tables/session_secrets_module/table on pg + +BEGIN; + +SELECT verify_table ('metaschema_modules_public.session_secrets_module'); + +ROLLBACK; diff --git a/packages/services/revert/schemas/services_private/schema.sql b/packages/services/revert/schemas/services_private/schema.sql new file mode 100644 index 000000000..710f99c94 --- /dev/null +++ b/packages/services/revert/schemas/services_private/schema.sql @@ -0,0 +1,7 @@ +-- Revert schemas/services_private/schema from pg + +BEGIN; + +DROP SCHEMA services_private; + +COMMIT; diff --git a/packages/services/revert/schemas/services_public/schema.sql b/packages/services/revert/schemas/services_public/schema.sql new file mode 100644 index 000000000..3fd696ac3 --- /dev/null +++ b/packages/services/revert/schemas/services_public/schema.sql @@ -0,0 +1,7 @@ +-- Revert schemas/services_public/schema from pg + +BEGIN; + +DROP SCHEMA services_public; + +COMMIT; diff --git a/packages/services/revert/schemas/services_public/tables/api_modules/table.sql b/packages/services/revert/schemas/services_public/tables/api_modules/table.sql new file mode 100644 index 000000000..65543be14 --- /dev/null +++ b/packages/services/revert/schemas/services_public/tables/api_modules/table.sql @@ -0,0 +1,7 @@ +-- Revert schemas/services_public/tables/api_modules/table from pg + +BEGIN; + +DROP TABLE services_public.api_modules; + +COMMIT; diff --git a/packages/services/revert/schemas/services_public/tables/api_schemas/table.sql b/packages/services/revert/schemas/services_public/tables/api_schemas/table.sql new file mode 100644 index 000000000..8a310db7c --- /dev/null +++ b/packages/services/revert/schemas/services_public/tables/api_schemas/table.sql @@ -0,0 +1,7 @@ +-- Revert schemas/services_public/tables/api_schemas/table from pg + +BEGIN; + +DROP TABLE services_public.api_schemas; + +COMMIT; diff --git a/packages/services/revert/schemas/services_public/tables/apis/table.sql b/packages/services/revert/schemas/services_public/tables/apis/table.sql new file mode 100644 index 000000000..2feff0a6e --- /dev/null +++ b/packages/services/revert/schemas/services_public/tables/apis/table.sql @@ -0,0 +1,7 @@ +-- Revert schemas/services_public/tables/apis/table from pg + +BEGIN; + +DROP TABLE services_public.apis; + +COMMIT; diff --git a/packages/services/revert/schemas/services_public/tables/apps/table.sql b/packages/services/revert/schemas/services_public/tables/apps/table.sql new file mode 100644 index 000000000..816bf6d3b --- /dev/null +++ b/packages/services/revert/schemas/services_public/tables/apps/table.sql @@ -0,0 +1,7 @@ +-- Revert schemas/services_public/tables/apps/table from pg + +BEGIN; + +DROP TABLE services_public.apps; + +COMMIT; diff --git a/packages/services/revert/schemas/services_public/tables/domains/table.sql b/packages/services/revert/schemas/services_public/tables/domains/table.sql new file mode 100644 index 000000000..44b47a3e7 --- /dev/null +++ b/packages/services/revert/schemas/services_public/tables/domains/table.sql @@ -0,0 +1,7 @@ +-- Revert schemas/services_public/tables/domains/table from pg + +BEGIN; + +DROP TABLE services_public.domains; + +COMMIT; diff --git a/packages/services/revert/schemas/services_public/tables/site_metadata/table.sql b/packages/services/revert/schemas/services_public/tables/site_metadata/table.sql new file mode 100644 index 000000000..cef080d5a --- /dev/null +++ b/packages/services/revert/schemas/services_public/tables/site_metadata/table.sql @@ -0,0 +1,7 @@ +-- Revert schemas/services_public/tables/site_metadata/table from pg + +BEGIN; + +DROP TABLE services_public.site_metadata; + +COMMIT; diff --git a/packages/services/revert/schemas/services_public/tables/site_modules/table.sql b/packages/services/revert/schemas/services_public/tables/site_modules/table.sql new file mode 100644 index 000000000..a63f20426 --- /dev/null +++ b/packages/services/revert/schemas/services_public/tables/site_modules/table.sql @@ -0,0 +1,7 @@ +-- Revert schemas/services_public/tables/site_modules/table from pg + +BEGIN; + +DROP TABLE services_public.site_modules; + +COMMIT; diff --git a/packages/services/revert/schemas/services_public/tables/site_themes/table.sql b/packages/services/revert/schemas/services_public/tables/site_themes/table.sql new file mode 100644 index 000000000..21f2965cd --- /dev/null +++ b/packages/services/revert/schemas/services_public/tables/site_themes/table.sql @@ -0,0 +1,7 @@ +-- Revert schemas/services_public/tables/site_themes/table from pg + +BEGIN; + +DROP TABLE services_public.site_themes; + +COMMIT; diff --git a/packages/services/revert/schemas/services_public/tables/sites/table.sql b/packages/services/revert/schemas/services_public/tables/sites/table.sql new file mode 100644 index 000000000..913178bb1 --- /dev/null +++ b/packages/services/revert/schemas/services_public/tables/sites/table.sql @@ -0,0 +1,7 @@ +-- Revert schemas/services_public/tables/sites/table from pg + +BEGIN; + +DROP TABLE services_public.sites; + +COMMIT; From 7d13120d34cde8689fca7f13332e576824942478 Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Fri, 26 Jun 2026 04:36:10 +0000 Subject: [PATCH 05/12] fix: restore set_props_and_commit drop in object-tree revert The deploy creates both set_and_commit and set_props_and_commit functions, so the revert must drop both to allow schema drop. --- .../schemas/object_tree_public/procedures/set_and_commit.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/object-tree/revert/schemas/object_tree_public/procedures/set_and_commit.sql b/packages/object-tree/revert/schemas/object_tree_public/procedures/set_and_commit.sql index f8447ee3a..c3f1724b2 100644 --- a/packages/object-tree/revert/schemas/object_tree_public/procedures/set_and_commit.sql +++ b/packages/object-tree/revert/schemas/object_tree_public/procedures/set_and_commit.sql @@ -2,6 +2,7 @@ BEGIN; +DROP FUNCTION object_tree_public.set_props_and_commit; DROP FUNCTION object_tree_public.set_and_commit; COMMIT; From f97236d09ea51d15f2382508407522912a01007e Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Fri, 26 Jun 2026 04:40:48 +0000 Subject: [PATCH 06/12] fix: restore metaschema-modules verify files from main, remove orphan agent_chat_module Synced verify files from constructive-db referenced columns not present in the deploy files (e.g. blueprint.status, blueprint.constructed_at). Restored verify files to match the deployed schema. Removed agent_chat_module verify/revert which had no corresponding deploy. --- .../tables/agent_chat_module/table.sql | 3 --- .../tables/agent_chat_module/table.sql | 20 ------------------- .../tables/blueprint/table.sql | 5 ----- .../tables/compute_log_module/table.sql | 3 +-- .../tables/db_usage_module/table.sql | 9 +++++---- .../function_invocation_module/table.sql | 10 +--------- .../tables/inference_log_module/table.sql | 3 +-- .../tables/namespace_module/table.sql | 4 +++- .../tables/profiles_module/table.sql | 3 ++- .../tables/relation_provision/table.sql | 5 +++-- .../tables/secure_table_provision/table.sql | 3 +-- .../tables/storage_log_module/table.sql | 2 +- .../tables/transfer_log_module/table.sql | 2 +- .../tables/user_settings_module/table.sql | 2 +- 14 files changed, 20 insertions(+), 54 deletions(-) delete mode 100644 packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/agent_chat_module/table.sql delete mode 100644 packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/agent_chat_module/table.sql diff --git a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/agent_chat_module/table.sql b/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/agent_chat_module/table.sql deleted file mode 100644 index c5a40cd97..000000000 --- a/packages/metaschema-modules/revert/schemas/metaschema_modules_public/tables/agent_chat_module/table.sql +++ /dev/null @@ -1,3 +0,0 @@ --- Revert schemas/metaschema_modules_public/tables/agent_module/table from pg - -DROP TABLE IF EXISTS metaschema_modules_public.agent_module; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/agent_chat_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/agent_chat_module/table.sql deleted file mode 100644 index 133d78496..000000000 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/agent_chat_module/table.sql +++ /dev/null @@ -1,20 +0,0 @@ --- Verify schemas/metaschema_modules_public/tables/agent_module/table on pg - -BEGIN; - -SELECT - id, - database_id, - schema_id, - private_schema_id, - thread_table_id, - thread_table_name, - message_table_id, - message_table_name, - task_table_id, - task_table_name, - prefix -FROM metaschema_modules_public.agent_module -WHERE FALSE; - -ROLLBACK; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/blueprint/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/blueprint/table.sql index 7a71abb5b..d5683b397 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/blueprint/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/blueprint/table.sql @@ -11,11 +11,6 @@ SELECT description, definition, template_id, - status, - constructed_at, - error_details, - ref_map, - constructed_definition, definition_hash, table_hashes, created_at, diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/compute_log_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/compute_log_module/table.sql index be41a8348..de44722ab 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/compute_log_module/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/compute_log_module/table.sql @@ -3,8 +3,7 @@ SELECT id, database_id, schema_id, private_schema_id, compute_log_table_id, compute_log_table_name, usage_daily_table_id, usage_daily_table_name, - "interval", retention, premake, - include_database_id, actor_fk_table_id, entity_fk_table_id, + retention, scope, actor_fk_table_id, entity_fk_table_id, prefix FROM metaschema_modules_public.compute_log_module WHERE FALSE; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/db_usage_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/db_usage_module/table.sql index 71ec5bdd0..57f884feb 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/db_usage_module/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/db_usage_module/table.sql @@ -1,9 +1,10 @@ -- Verify schemas/metaschema_modules_public/tables/db_usage_module/table on pg SELECT id, database_id, schema_id, private_schema_id, - db_usage_log_table_id, db_usage_log_table_name, - usage_daily_table_id, usage_daily_table_name, - "interval", retention, premake, - prefix + table_stats_log_table_id, table_stats_log_table_name, + table_stats_daily_table_id, table_stats_daily_table_name, + query_stats_log_table_id, query_stats_log_table_name, + query_stats_daily_table_id, query_stats_daily_table_name, + retention, scope, prefix FROM metaschema_modules_public.db_usage_module WHERE FALSE; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/function_invocation_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/function_invocation_module/table.sql index a4fa95db3..dd5d24f5e 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/function_invocation_module/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/function_invocation_module/table.sql @@ -2,14 +2,6 @@ BEGIN; -SELECT id, database_id, schema_id, private_schema_id, - public_schema_name, private_schema_name, - invocations_table_id, execution_logs_table_id, - invocations_table_name, execution_logs_table_name, - api_name, private_api_name, - scope, prefix, entity_table_id, - policies, provisions, default_permissions -FROM metaschema_modules_public.function_invocation_module -WHERE false; +SELECT verify_table ('metaschema_modules_public.function_invocation_module'); ROLLBACK; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/inference_log_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/inference_log_module/table.sql index f30ebac19..eaf4c39cb 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/inference_log_module/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/inference_log_module/table.sql @@ -11,9 +11,8 @@ SELECT inference_log_table_name, usage_daily_table_id, usage_daily_table_name, - "interval", retention, - premake, + scope, actor_fk_table_id, entity_fk_table_id, prefix diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/namespace_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/namespace_module/table.sql index 5dbc2e9a3..8cfe54042 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/namespace_module/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/namespace_module/table.sql @@ -3,9 +3,11 @@ BEGIN; SELECT id, database_id, schema_id, private_schema_id, + public_schema_name, private_schema_name, namespaces_table_id, namespace_events_table_id, namespaces_table_name, namespace_events_table_name, - membership_type, entity_table_id, policies + api_name, private_api_name, scope, prefix, + entity_table_id, policies, provisions, default_permissions FROM metaschema_modules_public.namespace_module WHERE false; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/profiles_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/profiles_module/table.sql index 64810749e..9c52869fe 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/profiles_module/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/profiles_module/table.sql @@ -6,7 +6,8 @@ SELECT id, database_id, schema_id, private_schema_id, table_id, table_name, profile_permissions_table_id, profile_permissions_table_name, profile_grants_table_id, profile_grants_table_name, profile_definition_grants_table_id, profile_definition_grants_table_name, - membership_type, entity_table_id, actor_table_id, + profile_templates_table_id, profile_templates_table_name, + entity_table_id, actor_table_id, permissions_table_id, memberships_table_id, prefix FROM metaschema_modules_public.profiles_module WHERE FALSE; diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/relation_provision/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/relation_provision/table.sql index d6bf096f3..0caae8560 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/relation_provision/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/relation_provision/table.sql @@ -18,8 +18,9 @@ SELECT source_field_name, target_field_name, use_composite_key, - node_type, - node_data, + create_index, + expose_in_api, + nodes, grants, policies, out_field_id, diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/secure_table_provision/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/secure_table_provision/table.sql index b22b45203..f953e5071 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/secure_table_provision/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/secure_table_provision/table.sql @@ -8,9 +8,8 @@ SELECT schema_id, table_id, table_name, - node_type, + nodes, use_rls, - node_data, fields, grants, policies, diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/storage_log_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/storage_log_module/table.sql index c9e95f6c8..adbf9ac7c 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/storage_log_module/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/storage_log_module/table.sql @@ -3,7 +3,7 @@ SELECT id, database_id, schema_id, private_schema_id, storage_log_table_id, storage_log_table_name, usage_daily_table_id, usage_daily_table_name, - "interval", retention, premake, + retention, scope, actor_fk_table_id, entity_fk_table_id, prefix FROM metaschema_modules_public.storage_log_module diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/transfer_log_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/transfer_log_module/table.sql index d5a0419e9..6a17ba161 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/transfer_log_module/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/transfer_log_module/table.sql @@ -3,7 +3,7 @@ SELECT id, database_id, schema_id, private_schema_id, transfer_log_table_id, transfer_log_table_name, usage_daily_table_id, usage_daily_table_name, - "interval", retention, premake, + retention, scope, actor_fk_table_id, entity_fk_table_id, prefix FROM metaschema_modules_public.transfer_log_module diff --git a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/user_settings_module/table.sql b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/user_settings_module/table.sql index 2ed6c6a98..7a56d8ee0 100644 --- a/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/user_settings_module/table.sql +++ b/packages/metaschema-modules/verify/schemas/metaschema_modules_public/tables/user_settings_module/table.sql @@ -2,6 +2,6 @@ BEGIN; -SELECT verify_table ('metaschema_modules_public.user_settings_module'); +SELECT verify_table('metaschema_modules_public.user_settings_module'); ROLLBACK; From efd50d47bf6a074638a934ddb15cff4fa199571c Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Fri, 26 Jun 2026 04:49:25 +0000 Subject: [PATCH 07/12] fix: regenerate metaschema-modules snapshots and restore test timeout Updated snapshots to match new deploy file state after sync. Restored 30s timeout on FK constraint test that was removed by sync. --- .../__snapshots__/modules.test.ts.snap | 283 ++++++++++++++++++ .../__tests__/modules.test.ts | 2 +- 2 files changed, 284 insertions(+), 1 deletion(-) create mode 100644 packages/metaschema-modules/__tests__/__snapshots__/modules.test.ts.snap diff --git a/packages/metaschema-modules/__tests__/__snapshots__/modules.test.ts.snap b/packages/metaschema-modules/__tests__/__snapshots__/modules.test.ts.snap new file mode 100644 index 000000000..c1e080023 --- /dev/null +++ b/packages/metaschema-modules/__tests__/__snapshots__/modules.test.ts.snap @@ -0,0 +1,283 @@ +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing + +exports[`db_meta_modules should have all expected module tables 1`] = ` +{ + "moduleNames": [ + "agent_module", + "billing_module", + "billing_provider_module", + "compute_log_module", + "config_secrets_module", + "config_secrets_org_module", + "config_secrets_user_module", + "connected_accounts_module", + "crypto_addresses_module", + "crypto_auth_module", + "db_usage_module", + "default_ids_module", + "devices_module", + "emails_module", + "events_module", + "function_deployment_module", + "function_invocation_module", + "function_module", + "graph_execution_module", + "graph_module", + "hierarchy_module", + "i18n_module", + "identity_providers_module", + "inference_log_module", + "invites_module", + "limits_module", + "membership_types_module", + "memberships_module", + "merkle_store_module", + "namespace_module", + "notifications_module", + "permissions_module", + "phone_numbers_module", + "plans_module", + "profiles_module", + "rate_limit_meters_module", + "rate_limits_module", + "realtime_module", + "rls_module", + "session_secrets_module", + "sessions_module", + "storage_log_module", + "storage_module", + "transfer_log_module", + "user_auth_module", + "user_credentials_module", + "user_settings_module", + "user_state_module", + "users_module", + "webauthn_auth_module", + "webauthn_credentials_module", + ], +} +`; + +exports[`db_meta_modules should verify all module tables exist in metaschema_modules_public schema 1`] = ` +{ + "moduleTablesCount": 51, + "totalTables": 58, +} +`; + +exports[`db_meta_modules should verify emails_module table structure 1`] = ` +{ + "columns": [ + { + "column_default": "uuidv7()", + "column_name": "id", + "data_type": "uuid", + "is_nullable": "NO", + }, + { + "column_default": null, + "column_name": "database_id", + "data_type": "uuid", + "is_nullable": "NO", + }, + { + "column_default": "uuid_nil()", + "column_name": "schema_id", + "data_type": "uuid", + "is_nullable": "NO", + }, + { + "column_default": "uuid_nil()", + "column_name": "private_schema_id", + "data_type": "uuid", + "is_nullable": "NO", + }, + { + "column_default": "uuid_nil()", + "column_name": "table_id", + "data_type": "uuid", + "is_nullable": "NO", + }, + { + "column_default": "uuid_nil()", + "column_name": "owner_table_id", + "data_type": "uuid", + "is_nullable": "NO", + }, + { + "column_default": null, + "column_name": "table_name", + "data_type": "text", + "is_nullable": "NO", + }, + { + "column_default": "'auth'::text", + "column_name": "api_name", + "data_type": "text", + "is_nullable": "YES", + }, + { + "column_default": null, + "column_name": "private_api_name", + "data_type": "text", + "is_nullable": "YES", + }, + ], +} +`; + +exports[`db_meta_modules should verify module table structures have database_id foreign keys 1`] = ` +{ + "constraintCount": 310683, +} +`; + +exports[`db_meta_modules should verify module tables have proper foreign key relationships 1`] = ` +{ + "constraintCount": 459911, + "foreignTables": [ + "database", + "field", + "function_module", + "graph_module", + "merkle_store_module", + "namespace_module", + "schema", + "table", + ], +} +`; + +exports[`db_meta_modules should verify sessions_module table structure 1`] = ` +{ + "columns": [ + { + "column_default": "uuidv7()", + "column_name": "id", + "data_type": "uuid", + "is_nullable": "NO", + }, + { + "column_default": null, + "column_name": "database_id", + "data_type": "uuid", + "is_nullable": "NO", + }, + { + "column_default": "uuid_nil()", + "column_name": "schema_id", + "data_type": "uuid", + "is_nullable": "NO", + }, + { + "column_default": "uuid_nil()", + "column_name": "sessions_table_id", + "data_type": "uuid", + "is_nullable": "NO", + }, + { + "column_default": "uuid_nil()", + "column_name": "session_credentials_table_id", + "data_type": "uuid", + "is_nullable": "NO", + }, + { + "column_default": "uuid_nil()", + "column_name": "auth_settings_table_id", + "data_type": "uuid", + "is_nullable": "NO", + }, + { + "column_default": "uuid_nil()", + "column_name": "users_table_id", + "data_type": "uuid", + "is_nullable": "NO", + }, + { + "column_default": "'30 days'::interval", + "column_name": "sessions_default_expiration", + "data_type": "interval", + "is_nullable": "NO", + }, + { + "column_default": "'sessions'::text", + "column_name": "sessions_table", + "data_type": "text", + "is_nullable": "NO", + }, + { + "column_default": "'session_credentials'::text", + "column_name": "session_credentials_table", + "data_type": "text", + "is_nullable": "NO", + }, + { + "column_default": "'app_settings_auth'::text", + "column_name": "auth_settings_table", + "data_type": "text", + "is_nullable": "NO", + }, + ], +} +`; + +exports[`db_meta_modules should verify users_module table structure 1`] = ` +{ + "columns": [ + { + "column_default": "uuidv7()", + "column_name": "id", + "data_type": "uuid", + "is_nullable": "NO", + }, + { + "column_default": null, + "column_name": "database_id", + "data_type": "uuid", + "is_nullable": "NO", + }, + { + "column_default": "uuid_nil()", + "column_name": "schema_id", + "data_type": "uuid", + "is_nullable": "NO", + }, + { + "column_default": "uuid_nil()", + "column_name": "table_id", + "data_type": "uuid", + "is_nullable": "NO", + }, + { + "column_default": "'users'::text", + "column_name": "table_name", + "data_type": "text", + "is_nullable": "NO", + }, + { + "column_default": "uuid_nil()", + "column_name": "type_table_id", + "data_type": "uuid", + "is_nullable": "NO", + }, + { + "column_default": "'role_types'::text", + "column_name": "type_table_name", + "data_type": "text", + "is_nullable": "NO", + }, + { + "column_default": "'auth'::text", + "column_name": "api_name", + "data_type": "text", + "is_nullable": "YES", + }, + { + "column_default": null, + "column_name": "private_api_name", + "data_type": "text", + "is_nullable": "YES", + }, + ], +} +`; diff --git a/packages/metaschema-modules/__tests__/modules.test.ts b/packages/metaschema-modules/__tests__/modules.test.ts index 05c1b3a81..147aab3ac 100644 --- a/packages/metaschema-modules/__tests__/modules.test.ts +++ b/packages/metaschema-modules/__tests__/modules.test.ts @@ -171,7 +171,7 @@ describe('db_meta_modules', () => { } expect(snapshot({ constraintCount: constraints.length })).toMatchSnapshot(); - }); + }, 30000); it('should verify all module tables exist in metaschema_modules_public schema', async () => { const tables = await pg.any(` From 8e7a423698e9b4bed5a2ba5414c348d4083ca333 Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Fri, 26 Jun 2026 04:53:11 +0000 Subject: [PATCH 08/12] fix: increase FK query timeouts for metaschema-modules tests More module tables from the sync make information_schema FK queries slower, increasing timeouts from 30s to 60s. --- packages/metaschema-modules/__tests__/modules.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/metaschema-modules/__tests__/modules.test.ts b/packages/metaschema-modules/__tests__/modules.test.ts index 147aab3ac..ba247ed37 100644 --- a/packages/metaschema-modules/__tests__/modules.test.ts +++ b/packages/metaschema-modules/__tests__/modules.test.ts @@ -171,7 +171,7 @@ describe('db_meta_modules', () => { } expect(snapshot({ constraintCount: constraints.length })).toMatchSnapshot(); - }, 30000); + }, 60000); it('should verify all module tables exist in metaschema_modules_public schema', async () => { const tables = await pg.any(` @@ -222,7 +222,7 @@ describe('db_meta_modules', () => { constraintCount: fkConstraints.length, foreignTables: foreignTables.sort() })).toMatchSnapshot(); - }, 30000); + }, 60000); it('should verify specific module table column defaults', async () => { // Check that modules have sensible defaults From 97d0ed5de09df550b76f96ec8ea60e7aaab56784 Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Fri, 26 Jun 2026 04:58:00 +0000 Subject: [PATCH 09/12] fix: add missing column defaults snapshot for metaschema-modules --- .../__snapshots__/modules.test.ts.snap | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/packages/metaschema-modules/__tests__/__snapshots__/modules.test.ts.snap b/packages/metaschema-modules/__tests__/__snapshots__/modules.test.ts.snap index c1e080023..ff8204ea0 100644 --- a/packages/metaschema-modules/__tests__/__snapshots__/modules.test.ts.snap +++ b/packages/metaschema-modules/__tests__/__snapshots__/modules.test.ts.snap @@ -221,6 +221,83 @@ exports[`db_meta_modules should verify sessions_module table structure 1`] = ` } `; +exports[`db_meta_modules should verify specific module table column defaults 1`] = ` +{ + "sessionsDefaults": [ + { + "column_default": "'app_settings_auth'::text", + "column_name": "auth_settings_table", + }, + { + "column_default": "uuid_nil()", + "column_name": "auth_settings_table_id", + }, + { + "column_default": "uuidv7()", + "column_name": "id", + }, + { + "column_default": "uuid_nil()", + "column_name": "schema_id", + }, + { + "column_default": "'session_credentials'::text", + "column_name": "session_credentials_table", + }, + { + "column_default": "uuid_nil()", + "column_name": "session_credentials_table_id", + }, + { + "column_default": "'30 days'::interval", + "column_name": "sessions_default_expiration", + }, + { + "column_default": "'sessions'::text", + "column_name": "sessions_table", + }, + { + "column_default": "uuid_nil()", + "column_name": "sessions_table_id", + }, + { + "column_default": "uuid_nil()", + "column_name": "users_table_id", + }, + ], + "usersDefaults": [ + { + "column_default": "'auth'::text", + "column_name": "api_name", + }, + { + "column_default": "uuidv7()", + "column_name": "id", + }, + { + "column_default": "uuid_nil()", + "column_name": "schema_id", + }, + { + "column_default": "uuid_nil()", + "column_name": "table_id", + }, + { + "column_default": "'users'::text", + "column_name": "table_name", + }, + { + "column_default": "uuid_nil()", + "column_name": "type_table_id", + }, + { + "column_default": "'role_types'::text", + "column_name": "type_table_name", + }, + ], +} +`; + exports[`db_meta_modules should verify users_module table structure 1`] = ` { "columns": [ From 8833f2d0c42cbeeb2602cf16eb787e30927537c4 Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Fri, 26 Jun 2026 05:14:59 +0000 Subject: [PATCH 10/12] fix: restore package versions to 0.28.3 The sync from constructive-db downgraded versions (0.28.3 -> 0.15.5 etc) which would overwrite published versions. Restore all to 0.28.3 while keeping the synced code and pgpm devDependency updates. --- packages/achievements/package.json | 2 +- packages/base32/package.json | 2 +- packages/database-jobs/package.json | 2 +- packages/defaults/package.json | 2 +- packages/encrypted-secrets-table/package.json | 2 +- packages/encrypted-secrets/package.json | 2 +- packages/faker/package.json | 2 +- packages/geotypes/package.json | 2 +- packages/inflection-db/package.json | 2 +- packages/inflection/package.json | 2 +- packages/jobs/package.json | 2 +- packages/jwt-claims/package.json | 2 +- packages/ltree-helpers/package.json | 2 +- packages/measurements/package.json | 2 +- packages/metaschema-modules/package.json | 2 +- packages/metaschema-schema/package.json | 2 +- packages/object-store/package.json | 2 +- packages/object-tree/package.json | 2 +- packages/partman/package.json | 2 +- packages/services/package.json | 2 +- packages/stamps/package.json | 2 +- packages/totp/package.json | 2 +- packages/types/package.json | 2 +- packages/utils/package.json | 2 +- packages/verify/package.json | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/packages/achievements/package.json b/packages/achievements/package.json index 2fdc595d1..c158da96e 100644 --- a/packages/achievements/package.json +++ b/packages/achievements/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/achievements", - "version": "0.15.5", + "version": "0.28.3", "description": "Achievement system for tracking user progress and milestones", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/base32/package.json b/packages/base32/package.json index e675a3469..aab1c1b1d 100644 --- a/packages/base32/package.json +++ b/packages/base32/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/base32", - "version": "0.15.5", + "version": "0.28.3", "description": "Base32 encoding and decoding functions for PostgreSQL", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/database-jobs/package.json b/packages/database-jobs/package.json index ab82c4e83..892feb510 100644 --- a/packages/database-jobs/package.json +++ b/packages/database-jobs/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/database-jobs", - "version": "0.22.0", + "version": "0.28.3", "description": "Database-specific job handling and queue management", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/defaults/package.json b/packages/defaults/package.json index 061f88571..eb19f5fd8 100644 --- a/packages/defaults/package.json +++ b/packages/defaults/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/defaults", - "version": "0.15.5", + "version": "0.28.3", "description": "Security defaults and baseline configurations", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/encrypted-secrets-table/package.json b/packages/encrypted-secrets-table/package.json index 56efadaa4..5c24fb6c5 100644 --- a/packages/encrypted-secrets-table/package.json +++ b/packages/encrypted-secrets-table/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/encrypted-secrets-table", - "version": "0.15.5", + "version": "0.28.3", "description": "Table-based encrypted secrets storage and retrieval", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/encrypted-secrets/package.json b/packages/encrypted-secrets/package.json index dbbb8b478..0fc4a0c89 100644 --- a/packages/encrypted-secrets/package.json +++ b/packages/encrypted-secrets/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/encrypted-secrets", - "version": "0.15.5", + "version": "0.28.3", "description": "Encrypted secrets management for PostgreSQL", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/faker/package.json b/packages/faker/package.json index ec047606e..99fad02df 100644 --- a/packages/faker/package.json +++ b/packages/faker/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/faker", - "version": "0.15.5", + "version": "0.28.3", "description": "Fake data generation utilities for testing and development", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/geotypes/package.json b/packages/geotypes/package.json index b97d5a719..4cb80f213 100644 --- a/packages/geotypes/package.json +++ b/packages/geotypes/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/geotypes", - "version": "0.15.5", + "version": "0.28.3", "description": "Geographic data types and spatial functions for PostgreSQL", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/inflection-db/package.json b/packages/inflection-db/package.json index 8d14c6e86..b4c296c84 100644 --- a/packages/inflection-db/package.json +++ b/packages/inflection-db/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/inflection-db", - "version": "0.0.1", + "version": "0.28.3", "author": "Dan Lynch ", "contributors": [ "Constructive " diff --git a/packages/inflection/package.json b/packages/inflection/package.json index 4d24a325f..3a4f90528 100644 --- a/packages/inflection/package.json +++ b/packages/inflection/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/inflection", - "version": "0.15.5", + "version": "0.28.3", "description": "String inflection utilities for PostgreSQL naming conventions", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/jobs/package.json b/packages/jobs/package.json index 101feb0cb..b305dcb65 100644 --- a/packages/jobs/package.json +++ b/packages/jobs/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/jobs", - "version": "0.15.5", + "version": "0.28.3", "description": "Core job system for background task processing in PostgreSQL", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/jwt-claims/package.json b/packages/jwt-claims/package.json index 2c1f40ce7..9a2d68e08 100644 --- a/packages/jwt-claims/package.json +++ b/packages/jwt-claims/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/jwt-claims", - "version": "0.15.5", + "version": "0.28.3", "description": "JWT claim handling and validation functions", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/ltree-helpers/package.json b/packages/ltree-helpers/package.json index 8db5ebf9a..a4c113538 100644 --- a/packages/ltree-helpers/package.json +++ b/packages/ltree-helpers/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/ltree-helpers", - "version": "0.15.5", + "version": "0.28.3", "description": "Slash-path to ltree/lquery conversion helpers for PostgreSQL", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/measurements/package.json b/packages/measurements/package.json index 40b65fb5e..5f55876f3 100644 --- a/packages/measurements/package.json +++ b/packages/measurements/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/measurements", - "version": "0.15.5", + "version": "0.28.3", "description": "Measurement utilities for performance tracking and analytics", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/metaschema-modules/package.json b/packages/metaschema-modules/package.json index 395a17b6b..bfab03ad2 100644 --- a/packages/metaschema-modules/package.json +++ b/packages/metaschema-modules/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/metaschema-modules", - "version": "0.15.5", + "version": "0.28.3", "description": "Module metadata handling and dependency tracking", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/metaschema-schema/package.json b/packages/metaschema-schema/package.json index 64abb1232..d75540859 100644 --- a/packages/metaschema-schema/package.json +++ b/packages/metaschema-schema/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/metaschema-schema", - "version": "0.15.5", + "version": "0.28.3", "description": "Database metadata utilities and introspection functions", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/object-store/package.json b/packages/object-store/package.json index 6a03839a5..e8c85efea 100644 --- a/packages/object-store/package.json +++ b/packages/object-store/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/object-store", - "version": "0.15.5", + "version": "0.28.3", "description": "Immutable versioned object storage with content-addressable IDs", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/object-tree/package.json b/packages/object-tree/package.json index 7a7fc42c6..8b49245c1 100644 --- a/packages/object-tree/package.json +++ b/packages/object-tree/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/object-tree", - "version": "0.15.5", + "version": "0.28.3", "description": "Git-like version control for database objects with commits and refs", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/partman/package.json b/packages/partman/package.json index def0c6b3f..d78a59147 100644 --- a/packages/partman/package.json +++ b/packages/partman/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/partman", - "version": "0.0.1", + "version": "0.28.3", "description": "pg_partman wrapper - installs pg_partman into partman schema", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/services/package.json b/packages/services/package.json index 533fa1607..37bf83fd2 100644 --- a/packages/services/package.json +++ b/packages/services/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/services", - "version": "0.1.0", + "version": "0.28.3", "description": "Services schemas for module registration and service configuration", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/stamps/package.json b/packages/stamps/package.json index 68d71f175..8364561e5 100644 --- a/packages/stamps/package.json +++ b/packages/stamps/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/stamps", - "version": "0.15.5", + "version": "0.28.3", "description": "Timestamp utilities and audit trail functions for PostgreSQL", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/totp/package.json b/packages/totp/package.json index d898ce0bf..91b4d093f 100644 --- a/packages/totp/package.json +++ b/packages/totp/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/totp", - "version": "0.15.5", + "version": "0.28.3", "description": "Time-based One-Time Password (TOTP) authentication", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/types/package.json b/packages/types/package.json index 9e128fc41..ede3c7628 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/types", - "version": "0.15.5", + "version": "0.28.3", "description": "Core PostgreSQL data types with deploy/verify/revert SQL scripts", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/utils/package.json b/packages/utils/package.json index 9e8ca632c..6232c21fb 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/utils", - "version": "0.15.5", + "version": "0.28.3", "description": "General utility functions for PostgreSQL extensions", "author": "Dan Lynch ", "contributors": [ diff --git a/packages/verify/package.json b/packages/verify/package.json index 8938e27ef..cab9a64df 100644 --- a/packages/verify/package.json +++ b/packages/verify/package.json @@ -1,6 +1,6 @@ { "name": "@pgpm/verify", - "version": "0.15.5", + "version": "0.28.3", "description": "Verification utilities for PGPM deploy/verify/revert workflow", "author": "Dan Lynch ", "contributors": [ From b0ed02b79cbd196e3af36eb7daa6d922c0cc7779 Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Fri, 26 Jun 2026 05:17:02 +0000 Subject: [PATCH 11/12] ci: re-run after flaky minio container init failure From d0fa430c462f389215147d84dcabef360148545e Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Fri, 26 Jun 2026 05:34:46 +0000 Subject: [PATCH 12/12] fix: correct broken GitHub links in README files Fix Related Tooling links to match actual git-tracked paths in constructive repo: - packages/pgpm -> pgpm/cli - packages/pgsql-test -> postgres/pgsql-test - packages/supabase-test -> postgres/supabase-test - packages/graphile-test -> graphile/graphile-test --- packages/achievements/README.md | 8 ++++---- packages/base32/README.md | 8 ++++---- packages/database-jobs/README.md | 8 ++++---- packages/defaults/README.md | 8 ++++---- packages/encrypted-secrets-table/README.md | 8 ++++---- packages/encrypted-secrets/README.md | 8 ++++---- packages/faker/README.md | 8 ++++---- packages/geotypes/README.md | 8 ++++---- packages/inflection-db/README.md | 8 ++++---- packages/inflection/README.md | 8 ++++---- packages/jobs/README.md | 8 ++++---- packages/jwt-claims/README.md | 8 ++++---- packages/measurements/README.md | 8 ++++---- packages/metaschema-modules/README.md | 8 ++++---- packages/metaschema-schema/README.md | 8 ++++---- packages/object-store/README.md | 4 ++-- packages/object-tree/README.md | 4 ++-- packages/partman/README.md | 4 ++-- packages/stamps/README.md | 8 ++++---- packages/totp/README.md | 8 ++++---- packages/types/README.md | 8 ++++---- packages/utils/README.md | 8 ++++---- packages/verify/README.md | 8 ++++---- 23 files changed, 86 insertions(+), 86 deletions(-) diff --git a/packages/achievements/README.md b/packages/achievements/README.md index a3c95892b..5a8d03eac 100644 --- a/packages/achievements/README.md +++ b/packages/achievements/README.md @@ -275,10 +275,10 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. diff --git a/packages/base32/README.md b/packages/base32/README.md index c80ea018f..e60a689a0 100644 --- a/packages/base32/README.md +++ b/packages/base32/README.md @@ -251,10 +251,10 @@ https://www.youtube.com/watch?v=Va8FLD-iuTg ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. diff --git a/packages/database-jobs/README.md b/packages/database-jobs/README.md index 1015d10e3..f40e1efe7 100644 --- a/packages/database-jobs/README.md +++ b/packages/database-jobs/README.md @@ -348,10 +348,10 @@ The test suite validates: ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. diff --git a/packages/defaults/README.md b/packages/defaults/README.md index 9d4d094ca..7ecaaa47f 100644 --- a/packages/defaults/README.md +++ b/packages/defaults/README.md @@ -266,10 +266,10 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. diff --git a/packages/encrypted-secrets-table/README.md b/packages/encrypted-secrets-table/README.md index 8c74e5223..d70a21e4d 100644 --- a/packages/encrypted-secrets-table/README.md +++ b/packages/encrypted-secrets-table/README.md @@ -293,10 +293,10 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. diff --git a/packages/encrypted-secrets/README.md b/packages/encrypted-secrets/README.md index 13d4098c0..ef204b54d 100644 --- a/packages/encrypted-secrets/README.md +++ b/packages/encrypted-secrets/README.md @@ -497,10 +497,10 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. diff --git a/packages/faker/README.md b/packages/faker/README.md index 567b5e260..f691dd40d 100644 --- a/packages/faker/README.md +++ b/packages/faker/README.md @@ -520,10 +520,10 @@ None - this is a pure plpgsql implementation. ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. diff --git a/packages/geotypes/README.md b/packages/geotypes/README.md index 6de4bc2c1..80aec894e 100644 --- a/packages/geotypes/README.md +++ b/packages/geotypes/README.md @@ -194,10 +194,10 @@ The test suite validates: ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. diff --git a/packages/inflection-db/README.md b/packages/inflection-db/README.md index 799b90eba..3bed0e164 100644 --- a/packages/inflection-db/README.md +++ b/packages/inflection-db/README.md @@ -285,10 +285,10 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. diff --git a/packages/inflection/README.md b/packages/inflection/README.md index f9dbfdf2f..834f68db3 100644 --- a/packages/inflection/README.md +++ b/packages/inflection/README.md @@ -394,10 +394,10 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. diff --git a/packages/jobs/README.md b/packages/jobs/README.md index 45574c280..189fba72c 100644 --- a/packages/jobs/README.md +++ b/packages/jobs/README.md @@ -301,10 +301,10 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. diff --git a/packages/jwt-claims/README.md b/packages/jwt-claims/README.md index a7f848f88..eda3ac981 100644 --- a/packages/jwt-claims/README.md +++ b/packages/jwt-claims/README.md @@ -306,10 +306,10 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. diff --git a/packages/measurements/README.md b/packages/measurements/README.md index d41179da3..c49c2ea43 100644 --- a/packages/measurements/README.md +++ b/packages/measurements/README.md @@ -189,10 +189,10 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. diff --git a/packages/metaschema-modules/README.md b/packages/metaschema-modules/README.md index 535f67c89..5bf0e2786 100644 --- a/packages/metaschema-modules/README.md +++ b/packages/metaschema-modules/README.md @@ -223,10 +223,10 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. diff --git a/packages/metaschema-schema/README.md b/packages/metaschema-schema/README.md index 7053a2190..575fdce41 100644 --- a/packages/metaschema-schema/README.md +++ b/packages/metaschema-schema/README.md @@ -308,10 +308,10 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. diff --git a/packages/object-store/README.md b/packages/object-store/README.md index 1d882f624..6699ac920 100644 --- a/packages/object-store/README.md +++ b/packages/object-store/README.md @@ -183,8 +183,8 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): PostgreSQL Package Manager for modular Postgres development. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): Isolated testing environments with per-test transaction rollbacks. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): PostgreSQL Package Manager for modular Postgres development. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): Isolated testing environments with per-test transaction rollbacks. ## Disclaimer diff --git a/packages/object-tree/README.md b/packages/object-tree/README.md index ad0608d65..114729f2f 100644 --- a/packages/object-tree/README.md +++ b/packages/object-tree/README.md @@ -180,8 +180,8 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): PostgreSQL Package Manager for modular Postgres development. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): Isolated testing environments with per-test transaction rollbacks. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): PostgreSQL Package Manager for modular Postgres development. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): Isolated testing environments with per-test transaction rollbacks. ## Disclaimer diff --git a/packages/partman/README.md b/packages/partman/README.md index c22ea2f14..d908c921e 100644 --- a/packages/partman/README.md +++ b/packages/partman/README.md @@ -125,8 +125,8 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): PostgreSQL Package Manager for modular Postgres development -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): Isolated testing environments with per-test transaction rollbacks +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): PostgreSQL Package Manager for modular Postgres development +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): Isolated testing environments with per-test transaction rollbacks * [pg_partman](https://github.com/pgpartman/pg_partman): PostgreSQL Partition Manager ## Disclaimer diff --git a/packages/stamps/README.md b/packages/stamps/README.md index 1b8b626ca..3ffd624e4 100644 --- a/packages/stamps/README.md +++ b/packages/stamps/README.md @@ -203,10 +203,10 @@ The test suite validates: ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. diff --git a/packages/totp/README.md b/packages/totp/README.md index 1e4655a98..41c42aae1 100644 --- a/packages/totp/README.md +++ b/packages/totp/README.md @@ -257,10 +257,10 @@ https://gist.github.com/bwbroersma/676d0de32263ed554584ab132434ebd9 ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. diff --git a/packages/types/README.md b/packages/types/README.md index b48dbed1c..c8014f906 100644 --- a/packages/types/README.md +++ b/packages/types/README.md @@ -217,10 +217,10 @@ The test suite validates: ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. diff --git a/packages/utils/README.md b/packages/utils/README.md index 7f6568c2f..1facb0ba2 100644 --- a/packages/utils/README.md +++ b/packages/utils/README.md @@ -397,10 +397,10 @@ pnpm test ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums. diff --git a/packages/verify/README.md b/packages/verify/README.md index 58ce1edca..6a91cfde3 100644 --- a/packages/verify/README.md +++ b/packages/verify/README.md @@ -438,10 +438,10 @@ None - this is the foundational package that all other packages depend on. ## Related Tooling -* [pgpm](https://github.com/constructive-io/constructive/tree/main/packages/pgpm): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. -* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/packages/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. -* [supabase-test](https://github.com/constructive-io/constructive/tree/main/packages/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. -* [graphile-test](https://github.com/constructive-io/constructive/tree/main/packages/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. +* [pgpm](https://github.com/constructive-io/constructive/tree/main/pgpm/cli): **🖥️ PostgreSQL Package Manager** for modular Postgres development. Works with database workspaces, scaffolding, migrations, seeding, and installing database packages. +* [pgsql-test](https://github.com/constructive-io/constructive/tree/main/postgres/pgsql-test): **📊 Isolated testing environments** with per-test transaction rollbacks—ideal for integration tests, complex migrations, and RLS simulation. +* [supabase-test](https://github.com/constructive-io/constructive/tree/main/postgres/supabase-test): **🧪 Supabase-native test harness** preconfigured for the local Supabase stack—per-test rollbacks, JWT/role context helpers, and CI/GitHub Actions ready. +* [graphile-test](https://github.com/constructive-io/constructive/tree/main/graphile/graphile-test): **🔐 Authentication mocking** for Graphile-focused test helpers and emulating row-level security contexts. * [pgsql-parser](https://github.com/constructive-io/pgsql-parser): **🔄 SQL conversion engine** that interprets and converts PostgreSQL syntax. * [libpg-query-node](https://github.com/constructive-io/libpg-query-node): **🌉 Node.js bindings** for `libpg_query`, converting SQL into parse trees. * [pg-proto-parser](https://github.com/constructive-io/pg-proto-parser): **📦 Protobuf parser** for parsing PostgreSQL Protocol Buffers definitions to generate TypeScript interfaces, utility functions, and JSON mappings for enums.