diff --git a/.agents/skills/orm-infra/SKILL.md b/.agents/skills/orm-infra/SKILL.md new file mode 100644 index 00000000..32d152c0 --- /dev/null +++ b/.agents/skills/orm-infra/SKILL.md @@ -0,0 +1,46 @@ +--- +name: orm-infra +description: ORM client for the infra API — provides typed CRUD operations for 6 tables and 1 custom operations +--- + +# orm-infra + + + +ORM client for the infra API — provides typed CRUD operations for 6 tables and 1 custom operations + +## Usage + +```typescript +// Import the ORM client +import { db } from './orm'; + +// Available models: platformSecretDefinition, platformFunctionExecutionLog, platformNamespace, platformFunctionInvocation, platformNamespaceEvent, platformFunctionDefinition +db..findMany({ select: { id: true } }).execute() +db..findOne({ id: '', select: { id: true } }).execute() +db..create({ data: { ... }, select: { id: true } }).execute() +db..update({ where: { id: '' }, data: { ... }, select: { id: true } }).execute() +db..delete({ where: { id: '' } }).execute() +``` + +## Examples + +### Query records + +```typescript +const items = await db.platformSecretDefinition.findMany({ + select: { id: true } +}).execute(); +``` + +## References + +See the `references/` directory for detailed per-entity API documentation: + +- [platform-secret-definition](references/platform-secret-definition.md) +- [platform-function-execution-log](references/platform-function-execution-log.md) +- [platform-namespace](references/platform-namespace.md) +- [platform-function-invocation](references/platform-function-invocation.md) +- [platform-namespace-event](references/platform-namespace-event.md) +- [platform-function-definition](references/platform-function-definition.md) +- [provision-bucket](references/provision-bucket.md) diff --git a/.agents/skills/orm-infra/references/platform-function-definition.md b/.agents/skills/orm-infra/references/platform-function-definition.md new file mode 100644 index 00000000..1c9a80c4 --- /dev/null +++ b/.agents/skills/orm-infra/references/platform-function-definition.md @@ -0,0 +1,34 @@ +# platformFunctionDefinition + + + +Function definitions — registered cloud functions with routing, queue, and retry configuration + +## Usage + +```typescript +db.platformFunctionDefinition.findMany({ select: { id: true } }).execute() +db.platformFunctionDefinition.findOne({ id: '', select: { id: true } }).execute() +db.platformFunctionDefinition.create({ data: { description: '', isBuiltIn: '', isInvocable: '', maxAttempts: '', name: '', namespaceId: '', priority: '', queueName: '', scope: '', serviceUrl: '', taskIdentifier: '', payloadSchema: '', requiredConfigs: '', requiredSecrets: '' }, select: { id: true } }).execute() +db.platformFunctionDefinition.update({ where: { id: '' }, data: { description: '' }, select: { id: true } }).execute() +db.platformFunctionDefinition.delete({ where: { id: '' } }).execute() +``` + +## Examples + +### List all platformFunctionDefinition records + +```typescript +const items = await db.platformFunctionDefinition.findMany({ + select: { id: true, description: true } +}).execute(); +``` + +### Create a platformFunctionDefinition + +```typescript +const item = await db.platformFunctionDefinition.create({ + data: { description: '', isBuiltIn: '', isInvocable: '', maxAttempts: '', name: '', namespaceId: '', priority: '', queueName: '', scope: '', serviceUrl: '', taskIdentifier: '', payloadSchema: '', requiredConfigs: '', requiredSecrets: '' }, + select: { id: true } +}).execute(); +``` diff --git a/.agents/skills/orm-infra/references/platform-function-execution-log.md b/.agents/skills/orm-infra/references/platform-function-execution-log.md new file mode 100644 index 00000000..7adbe15c --- /dev/null +++ b/.agents/skills/orm-infra/references/platform-function-execution-log.md @@ -0,0 +1,34 @@ +# platformFunctionExecutionLog + + + +Function execution logs — structured console output per invocation + +## Usage + +```typescript +db.platformFunctionExecutionLog.findMany({ select: { id: true } }).execute() +db.platformFunctionExecutionLog.findOne({ id: '', select: { id: true } }).execute() +db.platformFunctionExecutionLog.create({ data: { actorId: '', databaseId: '', invocationId: '', logLevel: '', message: '', metadata: '', taskIdentifier: '' }, select: { id: true } }).execute() +db.platformFunctionExecutionLog.update({ where: { id: '' }, data: { actorId: '' }, select: { id: true } }).execute() +db.platformFunctionExecutionLog.delete({ where: { id: '' } }).execute() +``` + +## Examples + +### List all platformFunctionExecutionLog records + +```typescript +const items = await db.platformFunctionExecutionLog.findMany({ + select: { id: true, actorId: true } +}).execute(); +``` + +### Create a platformFunctionExecutionLog + +```typescript +const item = await db.platformFunctionExecutionLog.create({ + data: { actorId: '', databaseId: '', invocationId: '', logLevel: '', message: '', metadata: '', taskIdentifier: '' }, + select: { id: true } +}).execute(); +``` diff --git a/.agents/skills/orm-infra/references/platform-function-invocation.md b/.agents/skills/orm-infra/references/platform-function-invocation.md new file mode 100644 index 00000000..eab25e0d --- /dev/null +++ b/.agents/skills/orm-infra/references/platform-function-invocation.md @@ -0,0 +1,34 @@ +# platformFunctionInvocation + + + +Function invocation log — INSERT to call a function (business-layer, metered) + +## Usage + +```typescript +db.platformFunctionInvocation.findMany({ select: { id: true } }).execute() +db.platformFunctionInvocation.findOne({ id: '', select: { id: true } }).execute() +db.platformFunctionInvocation.create({ data: { actorId: '', completedAt: '', databaseId: '', durationMs: '', error: '', functionId: '', jobId: '', payload: '', result: '', startedAt: '', status: '', taskIdentifier: '' }, select: { id: true } }).execute() +db.platformFunctionInvocation.update({ where: { id: '' }, data: { actorId: '' }, select: { id: true } }).execute() +db.platformFunctionInvocation.delete({ where: { id: '' } }).execute() +``` + +## Examples + +### List all platformFunctionInvocation records + +```typescript +const items = await db.platformFunctionInvocation.findMany({ + select: { id: true, actorId: true } +}).execute(); +``` + +### Create a platformFunctionInvocation + +```typescript +const item = await db.platformFunctionInvocation.create({ + data: { actorId: '', completedAt: '', databaseId: '', durationMs: '', error: '', functionId: '', jobId: '', payload: '', result: '', startedAt: '', status: '', taskIdentifier: '' }, + select: { id: true } +}).execute(); +``` diff --git a/.agents/skills/orm-infra/references/platform-namespace-event.md b/.agents/skills/orm-infra/references/platform-namespace-event.md new file mode 100644 index 00000000..7966b9bf --- /dev/null +++ b/.agents/skills/orm-infra/references/platform-namespace-event.md @@ -0,0 +1,34 @@ +# platformNamespaceEvent + + + +Namespace lifecycle events — audit log of creation, activation, deactivation, label changes + +## Usage + +```typescript +db.platformNamespaceEvent.findMany({ select: { id: true } }).execute() +db.platformNamespaceEvent.findOne({ id: '', select: { id: true } }).execute() +db.platformNamespaceEvent.create({ data: { actorId: '', cpuMillicores: '', databaseId: '', eventType: '', memoryBytes: '', message: '', metadata: '', metrics: '', namespaceId: '', networkEgressBytes: '', networkIngressBytes: '', podCount: '', storageBytes: '' }, select: { id: true } }).execute() +db.platformNamespaceEvent.update({ where: { id: '' }, data: { actorId: '' }, select: { id: true } }).execute() +db.platformNamespaceEvent.delete({ where: { id: '' } }).execute() +``` + +## Examples + +### List all platformNamespaceEvent records + +```typescript +const items = await db.platformNamespaceEvent.findMany({ + select: { id: true, actorId: true } +}).execute(); +``` + +### Create a platformNamespaceEvent + +```typescript +const item = await db.platformNamespaceEvent.create({ + data: { actorId: '', cpuMillicores: '', databaseId: '', eventType: '', memoryBytes: '', message: '', metadata: '', metrics: '', namespaceId: '', networkEgressBytes: '', networkIngressBytes: '', podCount: '', storageBytes: '' }, + select: { id: true } +}).execute(); +``` diff --git a/.agents/skills/orm-infra/references/platform-namespace.md b/.agents/skills/orm-infra/references/platform-namespace.md new file mode 100644 index 00000000..8ebe7068 --- /dev/null +++ b/.agents/skills/orm-infra/references/platform-namespace.md @@ -0,0 +1,34 @@ +# platformNamespace + + + +Logical namespace containers for grouping secrets, config, functions, and other resources + +## Usage + +```typescript +db.platformNamespace.findMany({ select: { id: true } }).execute() +db.platformNamespace.findOne({ id: '', select: { id: true } }).execute() +db.platformNamespace.create({ data: { annotations: '', databaseId: '', description: '', isActive: '', labels: '', name: '', namespaceName: '' }, select: { id: true } }).execute() +db.platformNamespace.update({ where: { id: '' }, data: { annotations: '' }, select: { id: true } }).execute() +db.platformNamespace.delete({ where: { id: '' } }).execute() +``` + +## Examples + +### List all platformNamespace records + +```typescript +const items = await db.platformNamespace.findMany({ + select: { id: true, annotations: true } +}).execute(); +``` + +### Create a platformNamespace + +```typescript +const item = await db.platformNamespace.create({ + data: { annotations: '', databaseId: '', description: '', isActive: '', labels: '', name: '', namespaceName: '' }, + select: { id: true } +}).execute(); +``` diff --git a/.agents/skills/orm-infra/references/platform-secret-definition.md b/.agents/skills/orm-infra/references/platform-secret-definition.md new file mode 100644 index 00000000..265c72b1 --- /dev/null +++ b/.agents/skills/orm-infra/references/platform-secret-definition.md @@ -0,0 +1,34 @@ +# platformSecretDefinition + + + +Global secret name registry — declares which secrets the platform recognizes. Actual values live in app_secrets. + +## Usage + +```typescript +db.platformSecretDefinition.findMany({ select: { id: true } }).execute() +db.platformSecretDefinition.findOne({ id: '', select: { id: true } }).execute() +db.platformSecretDefinition.create({ data: { annotations: '', databaseId: '', description: '', isBuiltIn: '', labels: '', name: '' }, select: { id: true } }).execute() +db.platformSecretDefinition.update({ where: { id: '' }, data: { annotations: '' }, select: { id: true } }).execute() +db.platformSecretDefinition.delete({ where: { id: '' } }).execute() +``` + +## Examples + +### List all platformSecretDefinition records + +```typescript +const items = await db.platformSecretDefinition.findMany({ + select: { id: true, annotations: true } +}).execute(); +``` + +### Create a platformSecretDefinition + +```typescript +const item = await db.platformSecretDefinition.create({ + data: { annotations: '', databaseId: '', description: '', isBuiltIn: '', labels: '', name: '' }, + select: { id: true } +}).execute(); +``` diff --git a/.agents/skills/orm-infra/references/provision-bucket.md b/.agents/skills/orm-infra/references/provision-bucket.md new file mode 100644 index 00000000..a9133530 --- /dev/null +++ b/.agents/skills/orm-infra/references/provision-bucket.md @@ -0,0 +1,22 @@ +# provisionBucket + + + +Provision an S3 bucket for a logical bucket in the database. +Reads the bucket config via RLS, then creates and configures +the S3 bucket with the appropriate privacy policies, CORS rules, +and lifecycle settings. + +## Usage + +```typescript +db.mutation.provisionBucket({ input: { bucketKey: '', ownerId: '' } }).execute() +``` + +## Examples + +### Run provisionBucket + +```typescript +const result = await db.mutation.provisionBucket({ input: { bucketKey: '', ownerId: '' } }).execute(); +``` diff --git a/.github/workflows/generate-orm.yml b/.github/workflows/generate-orm.yml new file mode 100644 index 00000000..79551e1f --- /dev/null +++ b/.github/workflows/generate-orm.yml @@ -0,0 +1,135 @@ +name: Generate ORM + +# Reusable workflow that runs the full constructive-functions ORM generation +# pipeline (the same `pnpm run generate:orm` you run locally): +# 1. Spin up Postgres (postgres-plus:18) and seed roles +# 2. Deploy the `pgpm/constructive-infra` module to an ephemeral DB, +# introspect it, and export `sdk/functions-schema/schemas/*.graphql` +# 3. Codegen the typed ORM into `sdk/functions-sdk/src/**` + `.agents/skills/orm-*` +# 4. Detect drift against the committed output and upload artifacts +# +# This is the SINGLE SOURCE OF TRUTH for ORM generation in CI. Consumed by: +# - sdk-update.yml — manual regen that opens a PR with the fresh output +# - validate-orm.yml — PR check that fails if the committed output is stale +# +# NOTE: this workflow only *generates* and reports — it never commits or fails +# on drift. Callers decide what to do with `has_changes`. + +on: + workflow_call: + inputs: + ref: + description: 'Branch/tag/SHA to generate from' + required: false + default: '' + type: string + outputs: + has_changes: + description: 'Whether any generated ORM output changed' + value: ${{ jobs.generate.outputs.has_changes }} + ref_sha: + description: 'Short SHA of the source commit' + value: ${{ jobs.generate.outputs.ref_sha }} + workflow_dispatch: + inputs: + ref: + description: 'Branch/tag/SHA to generate from (default: current ref)' + required: false + default: '' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +env: + PGHOST: localhost + PGPORT: 5432 + PGUSER: postgres + PGPASSWORD: password + +jobs: + generate: + name: Generate schema + ORM + runs-on: ubuntu-latest + timeout-minutes: 30 + + services: + pg_db: + image: constructiveio/postgres-plus:18 + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: password + options: >- + --health-cmd "pg_isready -U postgres" + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + - 5432:5432 + + outputs: + has_changes: ${{ steps.check.outputs.has_changes }} + ref_sha: ${{ steps.refs.outputs.ref_sha }} + + steps: + - name: Checkout + uses: actions/checkout@v5 + with: + ref: ${{ inputs.ref || github.ref }} + fetch-depth: 0 + + - name: Record ref + id: refs + run: echo "ref_sha=$(git rev-parse --short HEAD)" >> "$GITHUB_OUTPUT" + + - name: Setup pnpm + uses: pnpm/action-setup@v6 + + - name: Setup Node.js + uses: actions/setup-node@v5 + with: + node-version: '22' + cache: 'pnpm' + + - name: Install pgpm CLI + run: npm install -g pgpm + + - name: Seed pg users + run: pgpm admin-users bootstrap --yes + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + # Deploys pgpm/constructive-infra -> ephemeral DB -> SDL, then codegens + # the ORM. Mirrors `pnpm run generate:orm` exactly. + - name: Generate schema + ORM + run: pnpm run generate:orm + + - name: Check for drift + id: check + run: | + PATHS="sdk/functions-schema/schemas sdk/functions-schema/src sdk/functions-sdk/src .agents/skills" + UNTRACKED=$(git ls-files --others --exclude-standard $PATHS | head -20) + if git diff --quiet -- $PATHS && [ -z "$UNTRACKED" ]; then + echo "has_changes=false" >> "$GITHUB_OUTPUT" + echo "Generated ORM output is up-to-date." + else + echo "has_changes=true" >> "$GITHUB_OUTPUT" + echo "Generated ORM output changed:" + git diff --stat -- $PATHS + if [ -n "$UNTRACKED" ]; then + echo "New untracked files:" + echo "$UNTRACKED" + fi + fi + + - name: Upload generated ORM tree + uses: actions/upload-artifact@v4 + with: + name: generated-orm-tree + path: | + sdk/functions-schema/schemas/ + sdk/functions-schema/src/ + sdk/functions-sdk/src/ + .agents/skills/orm-infra/ + retention-days: 7 diff --git a/.github/workflows/sdk-update.yml b/.github/workflows/sdk-update.yml new file mode 100644 index 00000000..ee5bc47a --- /dev/null +++ b/.github/workflows/sdk-update.yml @@ -0,0 +1,121 @@ +name: ORM SDK Update + +# Regenerates the typed ORM (schema + SDK + skill) and, if anything changed, +# opens a PR with the fresh output. Run this manually after editing the +# `pgpm/constructive-infra` module so you don't have to regenerate locally. +# +# FLOW: +# 1. generate: call the reusable generate-orm workflow (single source of truth) +# 2. update: if anything changed, download the artifact and open a PR + +on: + workflow_dispatch: + inputs: + ref: + description: 'Branch/tag/SHA to regenerate from (default: main)' + required: false + default: 'main' + create_pr: + description: 'Open a PR with the changes (otherwise just validate)' + required: false + default: 'true' + type: boolean + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + generate: + uses: ./.github/workflows/generate-orm.yml + with: + ref: ${{ inputs.ref || 'main' }} + + update: + needs: generate + if: needs.generate.outputs.has_changes == 'true' && inputs.create_pr != false + runs-on: ubuntu-latest + timeout-minutes: 10 + + steps: + - name: Configure Git + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + + - name: Checkout + uses: actions/checkout@v5 + with: + ref: ${{ inputs.ref || 'main' }} + fetch-depth: 0 + + # Clean generated dirs before downloading the artifact so stale files that + # codegen no longer produces are removed. + - name: Clean generated dirs + run: | + rm -rf sdk/functions-schema/schemas sdk/functions-schema/src \ + sdk/functions-sdk/src .agents/skills/orm-infra + + - name: Download generated ORM tree + uses: actions/download-artifact@v4 + with: + name: generated-orm-tree + path: . + + - name: Check for changes + id: check + run: | + PATHS="sdk/functions-schema/schemas sdk/functions-schema/src sdk/functions-sdk/src .agents/skills" + UNTRACKED=$(git ls-files --others --exclude-standard $PATHS | head -20) + if git diff --quiet -- $PATHS && [ -z "$UNTRACKED" ]; then + echo "has_changes=false" >> "$GITHUB_OUTPUT" + else + echo "has_changes=true" >> "$GITHUB_OUTPUT" + fi + + - name: Create branch and PR + id: create_pr + if: steps.check.outputs.has_changes == 'true' + env: + GH_TOKEN: ${{ github.token }} + run: | + BRANCH_NAME="chore/regenerate-orm-$(date -u +%Y%m%d-%H%M%S)" + git checkout -b "$BRANCH_NAME" + git add sdk/functions-schema/schemas sdk/functions-schema/src \ + sdk/functions-sdk/src .agents/skills/orm-infra + git commit -m "chore: regenerate ORM schema + SDK + + Auto-generated by the ORM SDK Update workflow. + Source: ${{ needs.generate.outputs.ref_sha }} (ref: ${{ inputs.ref || 'main' }})" + git push origin "$BRANCH_NAME" + + PR_URL=$(gh pr create \ + --title "chore: regenerate ORM schema + SDK" \ + --body "## Automated ORM Regeneration + + Created by the [ORM SDK Update workflow](${{ github.server_url }}/${{ github.repository }}/actions/workflows/sdk-update.yml). + + ### What was regenerated + - \`sdk/functions-schema/schemas/*.graphql\` — exported GraphQL SDL + - \`sdk/functions-schema/src/\` — API name index + - \`sdk/functions-sdk/src/\` — typed ORM client + - \`.agents/skills/orm-infra/\` — skill reference docs + + Source commit: \`${{ needs.generate.outputs.ref_sha }}\` + + --- + *Auto-generated by the constructive-functions ORM SDK Update workflow*" \ + --base "${{ inputs.ref || 'main' }}" \ + --head "$BRANCH_NAME") + + echo "pr_url=$PR_URL" >> "$GITHUB_OUTPUT" + echo "Created PR: $PR_URL" + + - name: Summary + if: steps.create_pr.outputs.pr_url != '' + run: | + { + echo "## ORM SDK Update PR Created" + echo "" + echo "${{ steps.create_pr.outputs.pr_url }}" + } >> "$GITHUB_STEP_SUMMARY" diff --git a/.github/workflows/validate-orm.yml b/.github/workflows/validate-orm.yml new file mode 100644 index 00000000..04d70fb7 --- /dev/null +++ b/.github/workflows/validate-orm.yml @@ -0,0 +1,40 @@ +name: Validate ORM + +# Fails a PR if the committed ORM output is stale relative to the +# `pgpm/constructive-infra` module — i.e. someone changed the SQL (or the +# generator) but forgot to run `pnpm run generate:orm` and commit the result. +# +# Regenerates via the reusable generate-orm workflow and asserts no drift. + +on: + pull_request: + branches: [main] + paths: + - 'pgpm/**' + - 'sdk/functions-schema/**' + - 'sdk/functions-sdk/**' + - 'package.json' + - '.github/workflows/generate-orm.yml' + - '.github/workflows/validate-orm.yml' + workflow_dispatch: {} + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + generate: + if: github.event.pull_request.draft != true + uses: ./.github/workflows/generate-orm.yml + + verify: + needs: generate + runs-on: ubuntu-latest + steps: + - name: Assert no drift + run: | + if [ "${{ needs.generate.outputs.has_changes }}" = "true" ]; then + echo "::error::Committed ORM output is stale. Run 'pnpm run generate:orm' and commit the result." + exit 1 + fi + echo "ORM output is up-to-date." diff --git a/AGENTS.md b/AGENTS.md index a2cf4af1..b375f556 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -136,3 +136,38 @@ pnpm build # Recompile - The `generated/` directory is entirely gitignored - Templates use `{{name}}`, `{{version}}`, `{{description}}` placeholders - Generator supports `--only=` for single-function generation + +## SDK / ORM Generation (`sdk/`) + +Typed ORM clients over the `constructive_infra_public` schema, generated with the +same pgpm → SDL → codegen pipeline as `constructive-db` (Pattern A): + +- `sdk/functions-schema` — deploys `pgpm/constructive-infra` to an **ephemeral + Postgres**, introspects it via PostGraphile, and writes per-target SDL to + `schemas/*.graphql`. Requires `docker.io/constructiveio/postgres-plus:18`. +- `sdk/functions-sdk` — runs `@constructive-io/graphql-codegen` over those SDL + files to emit a typed ORM at `src//` plus the `orm-` skill. + +```bash +pnpm run generate:schema # pgpm module -> ephemeral DB -> schemas/*.graphql +pnpm run generate:sdk # schemas/*.graphql -> sdk/functions-sdk/src/* +pnpm run generate:orm # both, in order +``` + +**Generated — DO NOT EDIT** (regenerate via the commands above after pgpm changes): +- `sdk/functions-schema/schemas/*.graphql`, `sdk/functions-schema/src/index.ts` +- `sdk/functions-sdk/src/**` +- `.agents/skills/orm-*/` + +### CI automation + +The same `pnpm run generate:orm` pipeline runs in GitHub Actions (mirrors +`constructive-db`'s generate-all / schema-sdk-update / validate-introspection): + +- `.github/workflows/generate-orm.yml` — reusable (`workflow_call`/dispatch) + single source of truth: spins up Postgres, deploys the pgpm module to an + ephemeral DB, regenerates schema + ORM, reports drift, uploads the artifact. +- `.github/workflows/validate-orm.yml` — PR check on `pgpm/**` / `sdk/**`; + regenerates and **fails if the committed output is stale**. +- `.github/workflows/sdk-update.yml` — manual dispatch; regenerates and opens a + PR with the fresh output so you don't have to regenerate locally. diff --git a/docs/spec/sdk-plan.md b/docs/spec/sdk-plan.md new file mode 100644 index 00000000..7ef0d6e4 --- /dev/null +++ b/docs/spec/sdk-plan.md @@ -0,0 +1,101 @@ +# constructive-functions `sdk/` plan + +How `constructive` and `constructive-db` structure their `sdk/` folders, and what +`constructive-functions` should do. + +## 1. How the two reference repos do it + +Both repos generate typed clients from **PostGraphile-exported GraphQL SDL** using a +single shared toolchain: + +- `@constructive-io/graphql-codegen` — `expandSchemaDirToMultiTarget()` + `generateMulti()` +- `makage` build (cjs `dist/` + esm `esm/`), `tsx` generate scripts +- `docs: { skills: true }` auto-emits the `.agents/skills/{orm,cli,hooks}-*` skills + +The only real difference is **where the SDL comes from**. + +### Pattern A — `constructive-db/sdk` (schema-export is its own package) + +| package | name | role | +|---|---|---| +| `constructive-schema` | `@constructive-db/constructive-schema` | **source of truth.** Deploys the pgpm module (`application/app`) to an ephemeral DB, introspects via `graphile-schema` `buildSchemaSDL`, writes per-target `.graphql` + introspection JSON. 8 targets (api, modules, auth, admin, usage, agent, objects, migrate). | +| `sdk` | `@constructive-db/sdk` | multi-target ORM generated from `../constructive-schema/schemas` | +| `constructive-sdk` | `@constructive-db/constructive-sdk` | standalone ORM variant | +| `constructive-cli` | `@constructive-db/constructive-cli` | typed multi-target CLI from the same schemas | + +Schema is **regenerated from the DB**, never hand-edited. This fits because the repo +owns the pgpm modules that define the schema. + +### Pattern B — `constructive/sdk` (schemas committed in-repo) + +| package | name | role | +|---|---|---| +| `constructive-sdk` | `@constructive-io/sdk` | holds committed `schemas/*.graphql` + generates ORM; also drives migrate-client | +| `constructive-react` | `@constructive-io/react` | React Query hooks (`@tanstack/react-query`) | +| `constructive-cli` | `@constructive-sdk/cli` | CLI (+ ollama / yanse extras) | +| `migrate-client` | `@pgpmjs/migrate-client` | single-target ORM (db_migrate) | + +Same codegen, but SDL files are committed rather than regenerated each run. + +## 2. Where constructive-functions is today + +- **No `sdk/` folder.** pnpm-workspace = `generated/*`, `packages/*`, `job/*`, `www`. +- Owns its DB schema via pgpm modules `constructive-infra`, `-infra-seed`, `-infra-services`: + - `constructive_infra_public` — `platform_function_definitions`, + `platform_function_invocations`, `platform_function_execution_logs`, + `platform_secret_definitions`, `platform_namespaces`, `platform_namespace_events` + - `constructive_infra_private` +- These tables are **NOT exposed via GraphQL** anywhere. The `graphql-server` in + docker-compose only exposes `metaschema_public,services_public,constructive_auth_public`. +- `www/server/index.ts` reads the infra tables with **raw `pg.Pool` SQL**. +- `packages/fn-runtime` calls an **external tenant** Constructive GraphQL API via + hand-written `graphql-request` queries (it is a *consumer* of constructive's API). + +## 3. Two distinct SDK concerns (don't conflate) + +### (A) Inbound admin SDK — the actual `sdk/` folder +A typed ORM (+ React Query hooks) over `constructive_infra_public`, so `www` and the +job service stop hand-writing SQL. This is the direct analog of what `constructive-db` +and `constructive` generate for their own schemas. + +**Prerequisite:** expose `constructive_infra_public` (and an admin view of `_private`) +through the existing PostGraphile `graphql-server` — i.e. add it to `API_EXPOSED_SCHEMAS`. +Without an SDL there is nothing to codegen from. + +### (B) Outbound runtime SDK — fn-runtime calling the tenant API +Replace fn-runtime's hand-written `graphql-request` calls with the published +`@constructive-io/sdk` ORM. Separate effort, lower priority, no new package in this repo. + +## 4. Recommended plan + +**Mirror `constructive-db`'s Pattern A** — keep schema export separate from codegen, +because functions owns its pgpm modules exactly like constructive-db owns `application/app`. + +1. **Expose the schema.** Add `constructive_infra_public` to the graphql-server's + `API_EXPOSED_SCHEMAS` (+ admin meta for `_private`). Decide platform vs admin targets. +2. **`sdk/constructive-schema`** (`@constructive-functions/constructive-schema`): + deploy `pgpm/constructive-infra*` to an ephemeral DB → export `infra.graphql` + (+ `admin.graphql` if split) + introspection JSON. Copy + `constructive-db/sdk/constructive-schema/scripts/generate-schemas.ts` and point + `MODULE_PATH` at the functions pgpm module(s). +3. **`sdk/constructive-sdk`** (`@constructive-functions/sdk`): `generateMulti` over the + exported schemas → typed ORM + `docs.skills`. +4. **`sdk/constructive-react`** (`@constructive-functions/react`): React Query hooks — + highest-value consumer is `www`, which is already React. +5. **`sdk/constructive-cli`** (optional): typed CLI for ops/scripts. +6. **Wire workspace + generate step:** add `sdk/*` to `pnpm-workspace.yaml`; add a + `generate:sdk` script (schema → sdk → react/cli) alongside the existing root `generate`. +7. **Migrate `www`** off raw `pg` onto the generated ORM/hooks incrementally. + +### Future target: the flow-graph / merkle `graph_module` +When the merkle `graph_module` (flow-graph persistence we scoped in `fbp-data-model.md`) +is provisioned in this repo, its `function_graphs` / `function_graph_executions` tables +become **another codegen target** in the same `sdk/constructive-schema` export — giving +the Flows UI a typed client for save/load/execute instead of localStorage. + +## 5. Open questions +1. Single `infra` target, or split `infra` (platform) vs `admin` (privileged)? +2. Publish scope/names — `@constructive-functions/*`? These are currently `private`. +3. Do we want React hooks now (www is the only consumer) or ORM-only first? +4. Stand up PostGraphile over infra schemas in dev (docker-compose) before codegen, or + commit SDL (Pattern B) to avoid a live DB dependency in CI? diff --git a/eslint.config.mjs b/eslint.config.mjs index d126d2e4..16670dae 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -7,7 +7,13 @@ import globals from 'globals'; export default [ { - ignores: ['**/dist/**', '**/node_modules/**'] + ignores: [ + '**/dist/**', + '**/node_modules/**', + // Generated SDK output (codegen artifacts — do not lint or hand-edit) + 'sdk/functions-sdk/src/**', + 'sdk/functions-schema/src/**' + ] }, js.configs.recommended, ...tseslint.configs.recommended, diff --git a/package.json b/package.json index 9d3b522a..4ab2e9ba 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,9 @@ "scripts": { "generate": "node --experimental-strip-types scripts/generate.ts", "generate:all": "node --experimental-strip-types scripts/generate.ts", + "generate:schema": "pnpm --filter @constructive-io/functions-schema run generate", + "generate:sdk": "pnpm --filter @constructive-io/functions-sdk run generate", + "generate:orm": "pnpm run generate:schema && pnpm run generate:sdk", "clean": "pnpm -r run clean", "build": "pnpm -r run build", "docker:build": "node --experimental-strip-types scripts/docker-build.ts --all", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c7d3bf4e..436d1e47 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -123,10 +123,10 @@ importers: version: 2.5.2 graphql-request: specifier: ^7.1.2 - version: 7.4.0(graphql@16.12.0) + version: 7.4.0(graphql@16.13.0) graphql-tag: specifier: ^2.12.6 - version: 2.12.6(graphql@16.12.0) + version: 2.12.6(graphql@16.13.0) simple-smtp-server: specifier: ^0.7.3 version: 0.7.3 @@ -460,7 +460,7 @@ importers: version: 2.5.2 graphql-request: specifier: ^7.1.2 - version: 7.4.0(graphql@16.12.0) + version: 7.4.0(graphql@16.13.0) devDependencies: '@types/node': specifier: ^22.10.4 @@ -473,7 +473,7 @@ importers: dependencies: graphql-request: specifier: ^7.1.2 - version: 7.4.0(graphql@16.12.0) + version: 7.4.0(graphql@16.13.0) devDependencies: '@types/node': specifier: ^22.10.4 @@ -485,6 +485,70 @@ importers: specifier: ^5.1.6 version: 5.9.3 + sdk/functions-schema: + devDependencies: + '@pgpmjs/core': + specifier: ^6.21.0 + version: 6.24.0 + '@types/node': + specifier: ^22.10.4 + version: 22.19.3 + graphile-schema: + specifier: ^1.22.1 + version: 1.22.5(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(grafast@1.0.2(graphql@16.13.0))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7))(ws@8.21.0) + pgsql-client: + specifier: ^3.16.0 + version: 3.16.4 + pgsql-seed: + specifier: ^2.16.0 + version: 2.16.4 + rimraf: + specifier: ^5.0.10 + version: 5.0.10 + tsx: + specifier: ^4.19.0 + version: 4.21.0 + typescript: + specifier: ^5.1.6 + version: 5.9.3 + + sdk/functions-sdk: + dependencies: + '@0no-co/graphql.web': + specifier: ^1.1.2 + version: 1.2.0(graphql@16.13.0) + '@constructive-io/graphql-query': + specifier: ^3.27.1 + version: 3.27.5(@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.21.0))(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(grafserv@1.0.0(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7))(ws@8.21.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.21.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.7))(ws@8.21.0) + '@constructive-io/graphql-types': + specifier: ^3.12.0 + version: 3.12.0 + gql-ast: + specifier: ^3.11.0 + version: 3.11.0 + graphql: + specifier: 16.13.0 + version: 16.13.0 + devDependencies: + '@constructive-io/functions-schema': + specifier: workspace:^ + version: link:../functions-schema + '@constructive-io/graphql-codegen': + specifier: ^4.47.0 + version: 4.47.6(@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.21.0))(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(grafast@1.0.2(graphql@16.13.0))(grafserv@1.0.0(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7))(ws@8.21.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.21.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.7))(ws@8.21.0) + '@types/node': + specifier: ^22.10.4 + version: 22.19.3 + rimraf: + specifier: ^5.0.10 + version: 5.0.10 + tsx: + specifier: ^4.19.0 + version: 4.21.0 + typescript: + specifier: ^5.1.6 + version: 5.9.3 + www: dependencies: '@xterm/addon-fit': @@ -493,6 +557,9 @@ importers: '@xterm/xterm': specifier: ^5.5.0 version: 5.5.0 + '@xyflow/react': + specifier: ^12.11.0 + version: 12.11.0(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) commander: specifier: ^15.0.0 version: 15.0.0 @@ -560,6 +627,127 @@ packages: 12factor-env@1.6.2: resolution: {integrity: sha512-U4EO6sy9Cc6h1ST3hhLD2rc2s4LERxProove3XZ52rMq2rTo5uTKWNKwD2OYDUwqNij+p5SgjmpPO6L/Gqtizw==} + '@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/checksums@3.1000.2': + resolution: {integrity: sha512-PIha+kauTbp6IRmOpYktPTrlfrrSqDVixvhO/EUOFOf62DPX81CaJoHJreuA1m9HYpSKyXf99BKjU1dvJPeUfw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/client-s3@3.1063.0': + resolution: {integrity: sha512-ETn+vvmZVK1MmOZwVBXmWANpmD5iTbzojIqyEIoZ86qo+8oWy35S8QyQNE/ZDI+WHgMU1dS+VSYbpRl1QkEySg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/core@3.974.18': + resolution: {integrity: sha512-JDYCPI0j7zGrzXTDFsLB346cxss7J/AxH7+O0MzWlqppJBEyB9Qe6TQXRL6iwLUo/xZkNv9KFmBL2hqElmwW0g==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-env@3.972.44': + resolution: {integrity: sha512-3hKJVrZ7bqXzDAXCQp+OaQ1ASN+vWstaNuEH418wQVl//cRZhqhfR9Bjk1qIWmgUGe8/D3gdO73PgidRj378EQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-http@3.972.46': + resolution: {integrity: sha512-VhwC9pGAZHhiQ2xSViyOPDFqvr9aRxGCAXZtADsUhU3R65nad7y//CwynE6mQnWNR+suRlqE79W36IVayL+m1g==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-ini@3.972.50': + resolution: {integrity: sha512-09Xi6ovxiK42+De/qBGF71sT5F2bWgYM+1fFyDwSOpy1xpsQ5R/naIu7MVDpH6Dic36QNc8dAv4KADtMGK2JYg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-login@3.972.49': + resolution: {integrity: sha512-EfJF/1Fh9mI4pZyoheU2RY9xUhTcugIZNkD63+orXMkYj/QXacJNbKVDUK90Yv5hE+aX+rt9J/EZ9Qr3vKOa7g==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-node@3.972.52': + resolution: {integrity: sha512-7QX+PbyiWBEOVipJq8Nke/TqXT6lAPLE7fvTaopa39/IVWuLfS+Fzdy71sZJONf/mLGgmtj6aU17+REw3+aRrw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-process@3.972.44': + resolution: {integrity: sha512-V+UUhZpRP7QDRhi+qgBDisM9tUBnYmMje8Bk77A6MZsfeGeGdMsQXmaHP1CDYFcept0o/Rz5g2Y0TMeVlG9dzg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-sso@3.972.49': + resolution: {integrity: sha512-9QqOYGuh5tZ76OzaT68kwI78AH+5lS/uZGGvkfxb3fc8FzRrIz2jOufNTliEBEeSAwmgK2rWLNsK+IB3zbtNPA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.972.49': + resolution: {integrity: sha512-IYx1lN38MnnPXv+NBLpuATu0cZakbZ321TAfjW+aVkw7HIJF38YnEwdeEO55MSl3pl7hIX1IvvnD6EmnAzmAJw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/lib-storage@3.1063.0': + resolution: {integrity: sha512-WfDUIna6HicL8oTs26etBIr7yGwHIkadr8ecp/SjQAhX3t5xM/PLJCl0ZJ+bcLtYyjmWrO3Ydyf/EUyraEz8Qw==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@aws-sdk/client-s3': ^3.1063.0 + + '@aws-sdk/middleware-flexible-checksums@3.974.27': + resolution: {integrity: sha512-bZqezPLdllFC4VAeV/f+EIc/hz56ab3TD/+4zNCgOgmG5ZHAE5dMHrX1gtTwdcQXbPr3KR7x3zTC3zuCTE6+ng==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-sdk-s3@3.972.48': + resolution: {integrity: sha512-MRTqx8wD/T3REt6LTT3/yN8rrp6+xIHrbUekkDYJTYWVch70mwtdJBovR4qKJz1jIPlbN+9R/Sn6R04BfsglzA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/nested-clients@3.997.17': + resolution: {integrity: sha512-lDRgraoTfKRawUyc176Ow93mrNrOho/x+EoK4C+lKU+vKkHWhNhzvSMVAx0WEJUJoeQxxDN5ZdKMfiGEyNejig==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/s3-request-presigner@3.1063.0': + resolution: {integrity: sha512-uYDuWEbBYz/DfS0sEbDA3BeBCNNaLiE+dmblIRrmU02bhoqsotJb3qWfx0+I3JlukC7Vk8wRuyRgjZzq1FyXGA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.996.32': + resolution: {integrity: sha512-llvApLcsWtmRFhG2wT3WIp1CmDeRaIYutqty1ZZXoMzK7TiJ6MOLOimk9eXUS8PwgG4ew4pa4QAbt0lfhn++1w==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/token-providers@3.1063.0': + resolution: {integrity: sha512-nYDaWWdzjKiDP5xj8k4oUgcYd4WPgzfAOgdU5vJsaqH/07Dfvm7ffisHCFJ+NEl7kUC9JEIUxh0kznvenbo3NQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/types@3.973.11': + resolution: {integrity: sha512-YjS0qFuECClRh4qhEyW8XagW0fwEPBeZ1cfsW/gU73Kh/ExFILxbzxOfPCmzF/2DwEvhvsHYt0b0qnvStwKYrg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/util-locate-window@3.965.6': + resolution: {integrity: sha512-ZfHjfwSzeXj+Lg9AK5ZNmeDkXev6V+w2tn1t4kgDdRtUaRCthepTQiFwbD06EF9oNGH4LaLg+Mb6U16Ypv5bSw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/xml-builder@3.972.28': + resolution: {integrity: sha512-lI/l3c/vPvsxmspzV63NfS3x9q4CkMmdhJy4QiM+NThAufVkDvi/PZZQ6xETnICL0UD7jI808pY83gllf86RFg==} + 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'} @@ -576,6 +764,10 @@ packages: resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} engines: {node: '>=6.9.0'} + '@babel/generator@7.29.7': + resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.27.3': resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} @@ -610,10 +802,18 @@ packages: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.28.5': resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} @@ -627,6 +827,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.29.7': + resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-syntax-async-generators@7.8.4': resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: @@ -746,9 +951,43 @@ packages: resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} + '@babel/types@7.29.7': + resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} + 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/fetch@1.1.1': + resolution: {integrity: sha512-kpus6sqQwMUTBNpqYvSejG27HJXDucV+BQUNUg3T5U92Qy94Q6of7OhbovICteDMmgcRKCdc5S2e2pXnIY8L5A==} + + '@constructive-io/graphql-codegen@4.47.6': + resolution: {integrity: sha512-4frodMOpt1h4WHkx/Zcq9iUYHbnULk9C1qtLn25+Um6RWDnngI8F1asQK4W7mYBR5t3wm7ZI9XLgCfDVDzGbfg==} + hasBin: true + peerDependencies: + '@tanstack/react-query': ^5.0.0 + react: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@tanstack/react-query': + optional: true + react: + optional: true + + '@constructive-io/graphql-env@3.13.0': + resolution: {integrity: sha512-eU3CBVvctISG7AQExvQDxSODhOxwhwv/CcuV7LyhHdyAz3XXSmA6qcoX0Vc9ptfluFu4i3WQQCQtt876QaPtCA==} + + '@constructive-io/graphql-query@3.27.5': + resolution: {integrity: sha512-qoolCvZgmgafMBoDzdx9N7vunnTx5FM/8fVxm6fYfh152ZzqBh8644uVLJtpVUQdAzmpbneS+d1AAqwFjfuSzQ==} + + '@constructive-io/graphql-types@3.12.0': + resolution: {integrity: sha512-Oe6qQBeDxy1lbMqA5XtVccu7NgO27lTKlC8OWtvL5J3wCc8CnQFBuejMd3jKORms7YuQS7MhjuGs0t41qYmQBQ==} + '@constructive-io/job-pg@2.5.4': resolution: {integrity: sha512-cjJxL/P1g4s07PiXiw31jb7c56aQmdPur+WyQXC0lAig1DIFSeJqbQjY6PXaFQepxgivwIBf9P9v+EalQaOtPQ==} @@ -761,6 +1000,35 @@ packages: '@constructive-io/postmaster@1.6.2': resolution: {integrity: sha512-trZQHFxPRdgaHUCKMIVhMFi59XTTQxuZ31AE1/BaE1onJsm24rmh1ewzNfe45IeAKWRjSSu7JvzCX6gVlR+8bA==} + '@constructive-io/s3-streamer@2.26.0': + resolution: {integrity: sha512-qm7F0/0eES5xWyskTqX0yhZzEND9LkebrZjiaZIAgxtLsh5icCFwZLoquxlBOpd6AeuNT9zqhz/Uibds6nPmQQ==} + + '@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==} + + '@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.3': + resolution: {integrity: sha512-DdgPF+Mg8KntTAC5lW/4w34s74NLCgBgpbw3+PtBhi2QC66acD7noVWZAgzUx/ATouLE9gUiKqHnva89vcNEjA==} + engines: {node: '>=22'} + peerDependencies: + '@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.1 + peerDependenciesMeta: + pg: + optional: true + '@emnapi/core@1.8.1': resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} @@ -1132,11 +1400,87 @@ packages: 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==} + 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.2': + resolution: {integrity: sha512-jqRUSaP9pq2JdoovKaiNQoV4ZVcDP5nn+QEa++vEYh0nCn76836SAde2/LkYMc9NnN8/PHMKqeUBnClZ+AUtVQ==} + peerDependencies: + '@graphiql/react': ^0.37.0 + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + react: ^18 || ^19 + react-dom: ^18 || ^19 + + '@graphiql/plugin-history@0.4.2': + resolution: {integrity: sha512-kwQYc1gmmkLbJPRHI/df3wtYNKNBGHxVkbkd+tbnRuCkrpdMm6NygCQeproJFKHTRbd3lYBAolaBcfgWNd196A==} + peerDependencies: + '@graphiql/react': ^0.37.0 + react: ^18 || ^19 + react-dom: ^18 || ^19 + + '@graphiql/react@0.37.6': + resolution: {integrity: sha512-ZilTTqpNaq9aDb3ZXCGrp7g9CGXpGIJAipOBkm+PHnaiWBHuXKcFm7NP/rTX9c5pkhf8wxYTWusNGGn9h2uLcQ==} + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + react: ^18 || ^19 + react-dom: ^18 || ^19 + + '@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' + peerDependenciesMeta: + graphql-ws: + optional: true + + '@graphiql/toolkit@0.12.0': + resolution: {integrity: sha512-pT7EMTKmdOM1mTSmQE0XuEs1UJJgZGnQojQ44nEad7p8/7v1m4P5ResL1vsCVxJYpbHX/cXjpRkrG3A2gpRtRQ==} + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + graphql-ws: '>= 4.5.0' + peerDependenciesMeta: + graphql-ws: + optional: true + '@graphql-typed-document-node/core@3.2.0': resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@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'} @@ -1153,6 +1497,18 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} + '@inquirerer/utils@3.3.7': + resolution: {integrity: sha512-L1M/fwb9VqbYQLorOWw2hgZk2LW4dZ4YsvIj3SJQWNPMmdcDDHDE2wkFK+KT/kh23aGUS7ISM/b0TIiyKeeQQA==} + + '@internationalized/date@3.12.2': + resolution: {integrity: sha512-FY1Y+H64NDs+HAF6omlnWxm3mEpfgaCSWtL5l551ZZfImA+kGjPFgrnJrGjH6lfmLL0g8Z/mBu1R3kufeCp6Jw==} + + '@internationalized/number@3.6.7': + resolution: {integrity: sha512-3ji1fcrT+FPAK86UqEhB/psHixYo6niWPJtt7+qRaYFynt/BaJG8GhAPimtWUpEiVSTq8ZM8L5psMxGquiB/Vg==} + + '@internationalized/string@3.2.9': + resolution: {integrity: sha512-kzP/M/mbQxODlmOt4bIQZ2SBVUWUSqMLXooXixnX7noche8WHaQcA+nwFN1K2KCF/cp+LDUhcJsCicwkvhD1pg==} + '@isaacs/balanced-match@4.0.1': resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} engines: {node: 20 || >=22} @@ -1353,194 +1709,697 @@ packages: react: '>=16' react-dom: '>=16' + '@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==} + '@nodable/entities@2.1.1': + resolution: {integrity: sha512-Pig3HxDIoMgjdEH8OCf/dkcTmLFjJRjWuq8jSnklu284/TKOPibSRERmOykiwmyXTtv61mP+44f3GMx0tLAyjg==} + '@one-ini/wasm@0.1.1': resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} - '@pgpmjs/env@2.17.0': - resolution: {integrity: sha512-3WPwJ4prFWGGIRzyR52/JG84hM+Qe6lVtQ+bcCpGnGuhukFowALpaegRZxi3LT/pO6D8wW1Y3nW9LugfJLO6KQ==} - - '@pgpmjs/logger@2.5.2': - resolution: {integrity: sha512-e9Z2Woju+fcsC0nm9KwEgOXZqm8UcrrxVEPbunXo6kpROpIQkBRg3RVU9xCxSHQ6xiko4r9YFXs370EW6kIUsQ==} - - '@pgpmjs/types@2.21.0': - resolution: {integrity: sha512-aeMRRzBr2jsxodU7R6ltvWmsHViftVLt/D+5Z+nuyM4KPECCvM5l+Jp6niB0LMjpDW8/GG+C/45co00zAHAZGQ==} - - '@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} - - '@rolldown/pluginutils@1.0.0-beta.27': - resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} - - '@rollup/rollup-android-arm-eabi@4.61.1': - resolution: {integrity: sha512-JnBB8MdXj45cajvTuO5FmPlvFVJRQgvrz1uSEl3NwqFnReAPGwb8EanbGi4z2nRaqLzjJSv5/JmycoTKlRZxHA==} + '@oxfmt/binding-android-arm-eabi@0.51.0': + resolution: {integrity: sha512-Ni0sCqg5CIHaLIYFGj+ncbcumylvNC6FE4rfD0KfdmnWHbPJ+zev0qZCXKxy2hFVa0fYRK0yPzf5nzPbkZou7g==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.61.1': - resolution: {integrity: sha512-Jx2g7iSjw4AOT0HDPHM9RV3GNjRXwybWtSFZiZAYUTjUwjVrYIwq3kBf+LnhqJlzXFAqTAh2F7IGI+O568exPw==} + '@oxfmt/binding-android-arm64@0.51.0': + resolution: {integrity: sha512-eu5lAZjuo0KAkp+M24EhDqfOwA8owQ8d7wyBlOUUGRbDLHpU3IRlDHp8Dif+YqGlxs6jra7yS6WQu/NkPhAxeg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.61.1': - resolution: {integrity: sha512-0F1L/Z3Eqv8mT2n3dCpeO8GcTvHvVqkP5/t6DMsn0KzhYVcg+s7Ncl5DS8qjKYEeio6Az0Gt6nyBORay5qIlCA==} + '@oxfmt/binding-darwin-arm64@0.51.0': + resolution: {integrity: sha512-6LsUNIdURhhcIfIn8+xsOb61mSTa9msAHTeSGx9Jf4rsP/gN8PGCF+SKWPAQZbND2w/WBkqQ6303jqEEIXzMdQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.61.1': - resolution: {integrity: sha512-qLttcH871ujY4YcVfUSShhOw+CsoTatYz8gRbHO7Bb92QH059/P0y5do1KMs41fY0BpD2x4AJH/gID0zFiqVKQ==} + '@oxfmt/binding-darwin-x64@0.51.0': + resolution: {integrity: sha512-9aUMGmVxdHjYMsEAW1tNRoieTJXlVNDFkRvIR1J7LttJXWjVYCu2ekclLij2KJtxBxSQOYSHd12ME/adVGVbZg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.61.1': - resolution: {integrity: sha512-fUI4RapGE0Oh3mb8mgfvC1O2nU1RpDZUKnDQm3xB1Ipg7C2wTs5Kstz7G2uWK99a8S2yTMq8/P4uycwNa0nJyw==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.61.1': - resolution: {integrity: sha512-H5YrdvJaDtI/U9/emrD4b++xkvp3y/JvOe4rizHbxvkyMfRS/CiRYdji+Pl8D0brEaNFWUh1drQxgAGIl6Xudw==} + '@oxfmt/binding-freebsd-x64@0.51.0': + resolution: {integrity: sha512-mkY1nhZTqYb+NHaAWxOCKISN6FwdrwMNsu17vTUA3wzUV2VJ+Paq15ZokRcsMU/2PUdHO73prxyeJpjXQ3MPpQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.61.1': - resolution: {integrity: sha512-Q8CBCCQtDFrYtXoeUXSrnFXKOnyUhx6bz+SkL6A0E7V8kAiCJ5pamq1WtbfpVGhR5TSpXY6ak3avmDc5fHTyJA==} + '@oxfmt/binding-linux-arm-gnueabihf@0.51.0': + resolution: {integrity: sha512-wtFwNwE4+YCNuPaWoGDZeGsKvD6D1YSUNBJNn/rJBh7CrDBThFE+TBI5kY7vRW9rIOQRsbW2IpyyL3Du4Zqwiw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.61.1': - resolution: {integrity: sha512-nwnhk1581l0FBVellGcVCAT0Oi06onEA3WB53sf01VO3I0UPBkMH9sXONYME2K0ovXcNayJfNtHfm6mpJElatQ==} + '@oxfmt/binding-linux-arm-musleabihf@0.51.0': + resolution: {integrity: sha512-rnOaNx86G7iRKM6lsCIQMux0SMGNC/TEbFR+r7lpruJ12bnrIWgxd5w1PLqOvgR9r8ZJbpK/zfRKctJnh8/Jfg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.61.1': - resolution: {integrity: sha512-x5Xr49hwt3hdW75UOZm3395YwwzPyauktslv29KpWL/T+vVAzoT3azLcTWv0eMciBNrx+DYjH4paehHoLpPvpg==} + '@oxfmt/binding-linux-arm64-gnu@0.51.0': + resolution: {integrity: sha512-jOgDzSqWcICGRjsp4mc08FxKMN8vzP2Kgs4E0d2HUP99F+nJDQKklRV4Zuj+0gcBgjrzx2CbpqaIdUVPepCojA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.61.1': - resolution: {integrity: sha512-unMS3H73DpaoPyyEVPjGKleM/s0mkmsauTENpw4INQY8y4+IuLNjkueQ5QCtC0D3N38Y38yhAU8OoZ20S2Tm6w==} + '@oxfmt/binding-linux-arm64-musl@0.51.0': + resolution: {integrity: sha512-KBUCdrH5bwVrAvI9gU/1S55oH6fzXjr++J/oVocdu7bYTks1l7DNNT+rLd/1TDdAEjObGwmfWamn7LC1m8A0DQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.61.1': - resolution: {integrity: sha512-zNZzGRnAhwjFEYmvphJRV5XaQGjs62cCmeYYHUT//NbvEnHauw+I85nGG+SiVg5ld4GX8D1IbKIX+ozITQnhMQ==} - cpu: [loong64] - os: [linux] - - '@rollup/rollup-linux-loong64-musl@4.61.1': - resolution: {integrity: sha512-LdpWGL8X209B2SIvWjqlc8VZgM6PKfontSerGepuldQmHYrAOtnMCXeJkxXGbC+PPZVOuu5czJo7fNV6aeW8rQ==} - cpu: [loong64] - os: [linux] - - '@rollup/rollup-linux-ppc64-gnu@4.61.1': - resolution: {integrity: sha512-EC5kTtNaNGOmbMGqar8dvJy6y/hg99GAwjfBz++pxZhQATXGcRjd6c5en5wcbru0vkRmiMGsQKdMJOOf6sza4g==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-ppc64-musl@4.61.1': - resolution: {integrity: sha512-8hiwp6D4acEcNK78I4rP0/XtS1sknWIAMJBPdR4l6zUtyTm5KiTDr5bXmWt4foY7nAN7AThDHgkLIEZOWKbzWw==} + '@oxfmt/binding-linux-ppc64-gnu@0.51.0': + resolution: {integrity: sha512-NapfjYsABFqTJ1Dn9Efq6sN5esaHconVKwVLbDGNQLrwpOx/g17mkwErHzU72PutL67nf3wNAkbq122H+zLxag==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.61.1': - resolution: {integrity: sha512-10dh/h/BqA7DuMPWSxkR8uks18FRwnwOEqr5zOTEl+NOwP/OMzKX8OFR/Of9xxDA7D5qef1Nzar5WDD2kCCr1g==} + '@oxfmt/binding-linux-riscv64-gnu@0.51.0': + resolution: {integrity: sha512-5dlDt1dUZCVi6elIhiK1PWg9wpTzTcIuj0IZnSurvIoMrhOWqqTcc1dSTxcSkNaBZhfsNqRZdINI1zAgbKkJNQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.61.1': - resolution: {integrity: sha512-YKJ5lg35DP17gcAOggnihe+APw9HLyj1Xn7gsmGumBJAUDa6NGXNixJzmkWLhcK9TOuuyQjdamzvJefkO7qHZQ==} + '@oxfmt/binding-linux-riscv64-musl@0.51.0': + resolution: {integrity: sha512-pgdWUJn0S5nulyiVdlFV8DzCUnGXkU99W5PSkkmbaZW+LrZBPxpezun4G0DDHbQaVYuJeCuKsXsGKGo77CkUTQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.61.1': - resolution: {integrity: sha512-Mlil5G2Jj6a7B3LWGctg+XPL9vdXYuzCtNXfxOQ0nPjc2m6ueUktocPGH9bnAM0bNRKb/bAWTujUU7IJQdQA+g==} + '@oxfmt/binding-linux-s390x-gnu@0.51.0': + resolution: {integrity: sha512-2XTFUe97CbDGAI8vjwDfZ1HdakO0XIADyJ24idEg64SC4/K4in/OisXVnrW4NMK7I6TgC7EqRhC0Ln/nKhAemA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.61.1': - resolution: {integrity: sha512-bVWIOIk6pV01p4CdUbPP7CJ/434z+OooYjDuFcR+44N35YvKUC66G8MGnvcWx5mWKW3g61J+t74l3Kj15Kwn2Q==} + '@oxfmt/binding-linux-x64-gnu@0.51.0': + resolution: {integrity: sha512-kQ1OuCqqt/yyf0ZN9VFxW1/JnlgJgii3Dr7pWf9vNBvrX1hv6g39/+mc5oGRHRGJFZtl3zsGDWR9c5N2B/gwBw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.61.1': - resolution: {integrity: sha512-qy5pBvZbqNFheBz61R1rzsezjm0J7O2oNGoWtGoY89SZYLUfxAJTBAqDChqAIdB4rCiIbi9nF7yZ83GnNiLwSw==} + '@oxfmt/binding-linux-x64-musl@0.51.0': + resolution: {integrity: sha512-ARTYqxHF475o96Gbn41hvSWSSRygPlRDXZZgZ9I2scU1y0qiWpCQyZCoefaQa0mwv+wwtZ+luS4YOzsRzM/izg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rollup/rollup-openbsd-x64@4.61.1': - resolution: {integrity: sha512-E83TXjI4zm0+5f2qO+UOudaCYIhYwpJ5jq6YCZNIZ+6CbfhKrkAGezeiASBL9ElxAxFsRS9ZhESv8mfnj6TKeg==} - cpu: [x64] - os: [openbsd] - - '@rollup/rollup-openharmony-arm64@4.61.1': - resolution: {integrity: sha512-fbWnKqVkjrJN38vNe3ahkbk6iejS/3b0Nt7EEtPpE6RBacZcGXNKbzfHN3GUUlXOPghUg0j6XUGrtjX9z1sIvA==} + '@oxfmt/binding-openharmony-arm64@0.51.0': + resolution: {integrity: sha512-QiC1XrCl6a6BmqMzduO8hdIRMf1m44hCkt2Q68KWkTvUB/E7fd2iomyNh6KnnRca5w6eBrRAAtLFqTh+xjsjJA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.61.1': - resolution: {integrity: sha512-ArMl38iVAbk0New1ogihQNY6iphLi4ZaRsa037gUzv5yeKPY8TD3Dmy4x2RNC1VztU/uqm+G+/RwFrSka3Oy2g==} + '@oxfmt/binding-win32-arm64-msvc@0.51.0': + resolution: {integrity: sha512-NC/hJb9dtU23Zf8L7IVK95xnFjiQ7AfcLO2l5pb69TDEr958qxrtnB2CveeeNSCBFNIkgaTCfd/vHNSoG78l9g==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.61.1': - resolution: {integrity: sha512-0mYtjHS9ucAbcATycCNK9IGBk/cCe/ma7EmSLGZdsxnOA8cjRIyU04wDpVAD9NiOfLUR9KTxdiO53uOkherqjQ==} + '@oxfmt/binding-win32-ia32-msvc@0.51.0': + resolution: {integrity: sha512-2C45za4Rj36n8YIbhRL1PQbxmXJYf81WEcAgvj5I4ptRROG+A+81hREEN5bmCHADE1UfYaN312U6tkILoZZy6w==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.61.1': - resolution: {integrity: sha512-gK1iCEPfpoSG9wfBihXxvBMi8ZfcWffYkEsC/Eih+iFENTaewvNcrEQ69lIOWYO5pePHKLHHO7nq5AILGO/HQQ==} + '@oxfmt/binding-win32-x64-msvc@0.51.0': + resolution: {integrity: sha512-73RqdAuVKQTkjZIDw08JaDHUM4lav5Qu+CaPwg4QbbA7k8o7LEW0p3UsfZ/F8dsO/pwVYh3RzFcanwLRTTahbQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.61.1': - resolution: {integrity: sha512-X+zaP2x+j4RXGfbp/seSoRHWnPxzApilDszisZxbYH5C/jTxFhCtDNdPGZb9lJyYPs24wGxruPF7Y+sIXt9Gzw==} - cpu: [x64] - os: [win32] + '@pgpmjs/core@6.24.0': + resolution: {integrity: sha512-JgboKlvFynmAD/XeDfrE+tdjEgB/I4qyzi7F6tQ2Hz5+u+FO+OTen+tu5ZKdNvLqoZwXs+Muv1LG9wqWG+HtQw==} - '@sinclair/typebox@0.27.10': - resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==} + '@pgpmjs/env@2.17.0': + resolution: {integrity: sha512-3WPwJ4prFWGGIRzyR52/JG84hM+Qe6lVtQ+bcCpGnGuhukFowALpaegRZxi3LT/pO6D8wW1Y3nW9LugfJLO6KQ==} - '@sinclair/typebox@0.34.48': - resolution: {integrity: sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==} + '@pgpmjs/env@2.25.0': + resolution: {integrity: sha512-oy8vw3XK4eT/TiWD9+IqFjWXSfEmM7zntfi7/FnA7xXlBZr4D8gmzaRDp3UWcXbuekD8uJAzZ1uKv6RMYpHXxg==} - '@sinonjs/commons@3.0.1': - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + '@pgpmjs/logger@2.12.0': + resolution: {integrity: sha512-yPRZvc6VxpwDl7ZLuvPD2lrrBKYDMFBQP6KyURcvHWuisTwvrWrKOH0HWMPtMIbaBSnz6/KsrkxCz6QM9hC+Bw==} - '@sinonjs/fake-timers@10.3.0': - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + '@pgpmjs/logger@2.5.2': + resolution: {integrity: sha512-e9Z2Woju+fcsC0nm9KwEgOXZqm8UcrrxVEPbunXo6kpROpIQkBRg3RVU9xCxSHQ6xiko4r9YFXs370EW6kIUsQ==} - '@sinonjs/fake-timers@13.0.5': - resolution: {integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==} + '@pgpmjs/server-utils@3.13.0': + resolution: {integrity: sha512-r2uZXI4VZkBSrexeuilZeWGbPbf+xWR+I9n2UtqkJW52CdlLL5eRYWnE0vndaG+jHETq9la2vRyfFxzEgq52HA==} - '@styled-system/background@5.1.2': - resolution: {integrity: sha512-jtwH2C/U6ssuGSvwTN3ri/IyjdHb8W9X/g8Y0JLcrH02G+BW3OS8kZdHphF1/YyRklnrKrBT2ngwGUK6aqqV3A==} + '@pgpmjs/types@2.21.0': + resolution: {integrity: sha512-aeMRRzBr2jsxodU7R6ltvWmsHViftVLt/D+5Z+nuyM4KPECCvM5l+Jp6niB0LMjpDW8/GG+C/45co00zAHAZGQ==} - '@styled-system/border@5.1.5': - resolution: {integrity: sha512-JvddhNrnhGigtzWRCVuAHepniyVi6hBlimxWDVAdcTuk7aRn9BYJUwfHslURtwYFsF5FoEs8Zmr1oZq2M1AP0A==} + '@pgpmjs/types@2.29.0': + resolution: {integrity: sha512-iUfNhBTi7PAJlOaptslOEL3uDiWyKyaWzRoFVfn6jxbBvshyUFPUonNJNf9n3eSFG7AYflMy7Z5n85ptceq8xA==} - '@styled-system/color@5.1.2': - resolution: {integrity: sha512-1kCkeKDZkt4GYkuFNKc7vJQMcOmTl3bJY3YBUs7fCNM6mMYJeT1pViQ2LwBSBJytj3AB0o4IdLBoepgSgGl5MA==} + '@pgsql/quotes@17.1.0': + resolution: {integrity: sha512-J/H+LcrENBpYgL45WW6aTjb5Yk4tX4+AmB2/k8KZa+Zh3wiCtqmNIag+HZz5HmWaF6EZK9ZGC95NBD1fs+rUvg==} - '@styled-system/core@5.1.2': - resolution: {integrity: sha512-XclBDdNIy7OPOsN4HBsawG2eiWfCcuFt6gxKn1x4QfMIgeO6TOlA2pZZ5GWZtIhCUqEPTgIBta6JXsGyCkLBYw==} + '@pgsql/types@17.6.2': + resolution: {integrity: sha512-1UtbELdbqNdyOShhrVfSz3a1gDi0s9XXiQemx+6QqtsrXe62a6zOGU+vjb2GRfG5jeEokI1zBBcfD42enRv0Rw==} - '@styled-system/css@5.1.5': - resolution: {integrity: sha512-XkORZdS5kypzcBotAMPBoeckDs9aSZVkvrAlq5K3xP8IMAUek+x2O4NtwoSgkYkWWzVBu6DGdFZLR790QWGG+A==} + '@pgsql/utils@17.8.17': + resolution: {integrity: sha512-JAbRaKBdH0c6GbSgiepwdsis9AG9Kgz9sdmL5e+iBYFZRsFBGKoe1jnxJ0tAMjWYcLus2qeDN6gqQaPYtx1EOg==} - '@styled-system/flexbox@5.1.2': - resolution: {integrity: sha512-6hHV52+eUk654Y1J2v77B8iLeBNtc+SA3R4necsu2VVinSD7+XY5PCCEzBFaWs42dtOEDIa2lMrgL0YBC01mDQ==} + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} - '@styled-system/grid@5.1.2': - resolution: {integrity: sha512-K3YiV1KyHHzgdNuNlaw8oW2ktMuGga99o1e/NAfTEi5Zsa7JXxzwEnVSDSBdJC+z6R8WYTCYRQC6bkVFcvdTeg==} + '@pkgr/core@0.2.9': + resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@styled-system/layout@5.1.2': + '@radix-ui/primitive@1.1.4': + resolution: {integrity: sha512-7AdCK9PQyiljKoBDbN8OuctCbd/esdwZPQ8RtOE3SsyQtUpiPb+ND75q0jEhC1m1ecBI0MFNeLJvwIh9iKHRcQ==} + + '@radix-ui/react-arrow@1.1.9': + resolution: {integrity: sha512-yqHW5WQ/cTpU/un7dqqIKNy2iRU8BC0JB78PEzTfCCYvZu1U6W9KwObAniMk9nhSfyotKPQTYaUD/HB0f5muig==} + peerDependencies: + '@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': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.1.9': + resolution: {integrity: sha512-zuSVi7ziP7uQRqc+yGxsKJfNkdyHv3ZKDaHe0gzg4dRgws96TPKWIiz84tVHP4GEcEl8bC0mdt17NkcxaJHmaQ==} + peerDependencies: + '@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': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.1.3': + resolution: {integrity: sha512-rYOP8OMnuuPMQF1uhPVlGNcCDlkokKqGFE3JcxFViIkAXP7EvFWUliJAstrapypaBLJNHbZL6jGhbVDGTwmVhA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.4': + resolution: {integrity: sha512-QwH4PO5urrbO+FaGd5Aglg+YJgWTyyuZ3g/6mKvsqraLkglDdckw9JafgL5McL5VEJ6EPNduPaT3ZE9BttDAqg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.1.16': + resolution: {integrity: sha512-l9ok83YBclEZhbjgzt76Hw733e6cvRKPNgO6GJ/IETlufXG9p+fRu2wlvpImQvR6xdJ8h7J8J2DBvsPEiEsKMw==} + peerDependencies: + '@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': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-direction@1.1.2': + resolution: {integrity: sha512-C3vFhbyi4SW3PmbAi6Awpu4OzJtd0MxGurvSsYtr7p7nM8RNB3VAF3CUmnp2j50knpkrRcB7+ycVXzgLgF6yNA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.12': + resolution: {integrity: sha512-MhoruH6xEzsbvOmo4TNgMfmtvRGyDZw4MDSdf4ybMHfezjqwzv6hyd4lsMzBp8K9Sn6sGzCF62x1I7BYUECXOg==} + peerDependencies: + '@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': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dropdown-menu@2.1.17': + resolution: {integrity: sha512-S6b3Jm57sY5EdDyOMLkacbB0qMnKhy1RCKZCt795ZkmtUOAvojYIZ5p7dXHIh5Cyr3jCLLI5/g64V3FKLudZmw==} + peerDependencies: + '@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': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.4': + resolution: {integrity: sha512-cot/aB/mOm0IYVYTTmQcEEK1M48lZWi8FlYe5nDPQQ8NYZUlXEFgncJ9p2Kzer3RKSrY7cTTpEMLZKNo9QoP5Q==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.9': + resolution: {integrity: sha512-9Se8t+Zry+1rEOL7Y6l/4ANYU/TOtAtf8O2fKdwLltcaMcm6kOqYGbzO4tMFQ0bvzO920pRAoHpFZ4W85S3keQ==} + peerDependencies: + '@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': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-id@1.1.2': + resolution: {integrity: sha512-orBC88futVpqCmhX1p4cvquNHsELQ+w+vBJnuj3ftETI5bJb0bZn3Tqu3SWN2IOcPycTnMGnhwoermvISt72sA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-menu@2.1.17': + resolution: {integrity: sha512-fmbNnFyf+JYCN0DhhWnEdUTDnZD1mXaPQWivdsPIb8oOSbARfD3LIQJbLCG8a8QLCwoMxiJ7GVPIFcC8Dw8v2Q==} + peerDependencies: + '@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': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.3.0': + resolution: {integrity: sha512-9PB589e1aWZbrlFUHdz6WiPCL+xLZHQFX7oibqG/6Q0SwOkxDyQX9W/cyPa+sAPPKuC8cpLCpRczE5a/1DiwVQ==} + peerDependencies: + '@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': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.11': + resolution: {integrity: sha512-UEytdjgEh2tJGgD/gZK4FUx6t1rNIlM3U0DENhSrG7I75FGm1DnaDuVUWF1pWAWUwGmn1sCJ1VGHn8LhN1aTOw==} + peerDependencies: + '@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': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.6': + resolution: {integrity: sha512-zdTk4PlUO0E18HnZ3wYbW0KkJJxWCdiNYp6g6X1PtONFhxVkg01vliTJAmwIszU6mHiyBOoW9P0rAugl5/hULQ==} + peerDependencies: + '@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': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.1.5': + resolution: {integrity: sha512-zifXeB8Y88qCYx8PLZ5oQb32KwZub+s925mMoZsBBq9KUQqWKkREubTfs6ASjRPPBe7Jt9O8OHH89+95VG+grA==} + peerDependencies: + '@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': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-roving-focus@1.1.12': + resolution: {integrity: sha512-FvgPt1bRmg8Xt2QpF7NUZW3dE0ZQHGm41dAdgT2J2GJPoIXz+9Em3NobAxf4fupcxhgHu03E5CRiU2MWvObXyg==} + peerDependencies: + '@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': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.2.5': + resolution: {integrity: sha512-rCMO3QsIVKv5JTY5CVbo2MvO77SpEqqYc8AvRE7OWqRDOIqAKjsp+DrmnY9uc8NPdxB5E2z47HTYGeE2+NTptg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-tooltip@1.2.9': + resolution: {integrity: sha512-u6F9MmTtBSLkiXNVDrtB/yPCZarM9smNswC24YYLV/M+bth6J3Gs3vlJezEoFwKZvPvxhCpUYdUnOsNG/0XOlA==} + peerDependencies: + '@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': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.2': + resolution: {integrity: sha512-xCso9j1/u8sEgP1RNHjFrXJLApL8LiqOkI1R4ywuN00rxWdYg4oQXuwKLS3i0j5NWLromUD27/4nlxj2UFVvIw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.2.3': + resolution: {integrity: sha512-PLzC90MS+ReootmjC597dvopoelpZ8Q61HJkDXZSExitIq7PL55vHNnesAHwguHK0aPfBnpdNzQtv1uliaqQrA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-effect-event@0.0.3': + resolution: {integrity: sha512-6c8ZqvPTWILEKnyVkP53EGRCcpnJiKTC21sS/6R1GF5xKyHJJWQEPfkqlcgUkdRQivd6tb23abUwe4ngWmY0JA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.2': + resolution: {integrity: sha512-2uVLvLjgO7NZCWw01/FdqRwmA42J0BcjPMUCA+koFEOAb+zjqIP7SiFz/7zWPrKnVmSqr76Omq2ALyCuX4dhLw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.2': + resolution: {integrity: sha512-jrBWOxZITuGcnjRCM2t2U5ZPkCLxD+Ym6DjfssS5haTj2iiak/DOb64JeN6OdLfLgptb6/e2kKR+ZuTrGoZTPA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.2': + resolution: {integrity: sha512-d8a+bBY/FxikNPlgJJoaBHZX+zKVbWHYJGTLnLvveQgFSTntkGdEKv3JDtHrMS0DNYpllz2nRsTLGLKYttbpmw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.2': + resolution: {integrity: sha512-giWQp+4mxjBPt4KZ0MmyuykFNWfbDxKt4x+fPkRYmgRFJSbCZFzUglvMb/Kjn38tm10YP4ufiQZDx3zna4LU6w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.2.5': + resolution: {integrity: sha512-tPcHNI3FajdDBFpl/Ez1m2WL0ufJqBKyHxMDBvKitopamK36WwBGOMicuMEZKkM5Wce41QxUyv6BsiqfrWBiGg==} + peerDependencies: + '@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': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.1.2': + resolution: {integrity: sha512-xnXE7wG13PI+cxieVssYXlQJuYVRhH9NBoxt3KNwzghDIA69GMm7d4wXRouHIYjE+KvS6U/MsMO73NdS2MH9ZA==} + + '@react-aria/focus@3.22.1': + resolution: {integrity: sha512-CPxtkyrBi/HYY5P3lE/57sQ6qfa0lN8E55TOm89H0kNGv0lKt+/0zP7lWERzBjRr5IxBVrQX4gFEowBN52LPaA==} + 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.1': + resolution: {integrity: sha512-Bqb+HrD5I5MHS2SKBhISYqo2SW8Y2dfzgF/Y1lIJq7xqLxheo9vzxPGEHhz+XzkgGfoqEJx8A6a3C7uiqS3HWA==} + 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.35.0': + resolution: {integrity: sha512-iNWvuzEwANttpQpdlu8nPBtdHb0mcCMj1ZTH//iRB5E/14IAnyRlR25rxH7pNLyzHINsPGEKnWvpwDMCT6vziQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@rolldown/pluginutils@1.0.0-beta.27': + resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} + + '@rollup/rollup-android-arm-eabi@4.61.1': + resolution: {integrity: sha512-JnBB8MdXj45cajvTuO5FmPlvFVJRQgvrz1uSEl3NwqFnReAPGwb8EanbGi4z2nRaqLzjJSv5/JmycoTKlRZxHA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.61.1': + resolution: {integrity: sha512-Jx2g7iSjw4AOT0HDPHM9RV3GNjRXwybWtSFZiZAYUTjUwjVrYIwq3kBf+LnhqJlzXFAqTAh2F7IGI+O568exPw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.61.1': + resolution: {integrity: sha512-0F1L/Z3Eqv8mT2n3dCpeO8GcTvHvVqkP5/t6DMsn0KzhYVcg+s7Ncl5DS8qjKYEeio6Az0Gt6nyBORay5qIlCA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.61.1': + resolution: {integrity: sha512-qLttcH871ujY4YcVfUSShhOw+CsoTatYz8gRbHO7Bb92QH059/P0y5do1KMs41fY0BpD2x4AJH/gID0zFiqVKQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.61.1': + resolution: {integrity: sha512-fUI4RapGE0Oh3mb8mgfvC1O2nU1RpDZUKnDQm3xB1Ipg7C2wTs5Kstz7G2uWK99a8S2yTMq8/P4uycwNa0nJyw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.61.1': + resolution: {integrity: sha512-H5YrdvJaDtI/U9/emrD4b++xkvp3y/JvOe4rizHbxvkyMfRS/CiRYdji+Pl8D0brEaNFWUh1drQxgAGIl6Xudw==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.61.1': + resolution: {integrity: sha512-Q8CBCCQtDFrYtXoeUXSrnFXKOnyUhx6bz+SkL6A0E7V8kAiCJ5pamq1WtbfpVGhR5TSpXY6ak3avmDc5fHTyJA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.61.1': + resolution: {integrity: sha512-nwnhk1581l0FBVellGcVCAT0Oi06onEA3WB53sf01VO3I0UPBkMH9sXONYME2K0ovXcNayJfNtHfm6mpJElatQ==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.61.1': + resolution: {integrity: sha512-x5Xr49hwt3hdW75UOZm3395YwwzPyauktslv29KpWL/T+vVAzoT3azLcTWv0eMciBNrx+DYjH4paehHoLpPvpg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.61.1': + resolution: {integrity: sha512-unMS3H73DpaoPyyEVPjGKleM/s0mkmsauTENpw4INQY8y4+IuLNjkueQ5QCtC0D3N38Y38yhAU8OoZ20S2Tm6w==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.61.1': + resolution: {integrity: sha512-zNZzGRnAhwjFEYmvphJRV5XaQGjs62cCmeYYHUT//NbvEnHauw+I85nGG+SiVg5ld4GX8D1IbKIX+ozITQnhMQ==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.61.1': + resolution: {integrity: sha512-LdpWGL8X209B2SIvWjqlc8VZgM6PKfontSerGepuldQmHYrAOtnMCXeJkxXGbC+PPZVOuu5czJo7fNV6aeW8rQ==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.61.1': + resolution: {integrity: sha512-EC5kTtNaNGOmbMGqar8dvJy6y/hg99GAwjfBz++pxZhQATXGcRjd6c5en5wcbru0vkRmiMGsQKdMJOOf6sza4g==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.61.1': + resolution: {integrity: sha512-8hiwp6D4acEcNK78I4rP0/XtS1sknWIAMJBPdR4l6zUtyTm5KiTDr5bXmWt4foY7nAN7AThDHgkLIEZOWKbzWw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.61.1': + resolution: {integrity: sha512-10dh/h/BqA7DuMPWSxkR8uks18FRwnwOEqr5zOTEl+NOwP/OMzKX8OFR/Of9xxDA7D5qef1Nzar5WDD2kCCr1g==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.61.1': + resolution: {integrity: sha512-YKJ5lg35DP17gcAOggnihe+APw9HLyj1Xn7gsmGumBJAUDa6NGXNixJzmkWLhcK9TOuuyQjdamzvJefkO7qHZQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.61.1': + resolution: {integrity: sha512-Mlil5G2Jj6a7B3LWGctg+XPL9vdXYuzCtNXfxOQ0nPjc2m6ueUktocPGH9bnAM0bNRKb/bAWTujUU7IJQdQA+g==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.61.1': + resolution: {integrity: sha512-bVWIOIk6pV01p4CdUbPP7CJ/434z+OooYjDuFcR+44N35YvKUC66G8MGnvcWx5mWKW3g61J+t74l3Kj15Kwn2Q==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.61.1': + resolution: {integrity: sha512-qy5pBvZbqNFheBz61R1rzsezjm0J7O2oNGoWtGoY89SZYLUfxAJTBAqDChqAIdB4rCiIbi9nF7yZ83GnNiLwSw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openbsd-x64@4.61.1': + resolution: {integrity: sha512-E83TXjI4zm0+5f2qO+UOudaCYIhYwpJ5jq6YCZNIZ+6CbfhKrkAGezeiASBL9ElxAxFsRS9ZhESv8mfnj6TKeg==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.61.1': + resolution: {integrity: sha512-fbWnKqVkjrJN38vNe3ahkbk6iejS/3b0Nt7EEtPpE6RBacZcGXNKbzfHN3GUUlXOPghUg0j6XUGrtjX9z1sIvA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.61.1': + resolution: {integrity: sha512-ArMl38iVAbk0New1ogihQNY6iphLi4ZaRsa037gUzv5yeKPY8TD3Dmy4x2RNC1VztU/uqm+G+/RwFrSka3Oy2g==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.61.1': + resolution: {integrity: sha512-0mYtjHS9ucAbcATycCNK9IGBk/cCe/ma7EmSLGZdsxnOA8cjRIyU04wDpVAD9NiOfLUR9KTxdiO53uOkherqjQ==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.61.1': + resolution: {integrity: sha512-gK1iCEPfpoSG9wfBihXxvBMi8ZfcWffYkEsC/Eih+iFENTaewvNcrEQ69lIOWYO5pePHKLHHO7nq5AILGO/HQQ==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.61.1': + resolution: {integrity: sha512-X+zaP2x+j4RXGfbp/seSoRHWnPxzApilDszisZxbYH5C/jTxFhCtDNdPGZb9lJyYPs24wGxruPF7Y+sIXt9Gzw==} + cpu: [x64] + os: [win32] + + '@sinclair/typebox@0.27.10': + resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==} + + '@sinclair/typebox@0.34.48': + resolution: {integrity: sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@sinonjs/fake-timers@13.0.5': + resolution: {integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==} + + '@smithy/core@3.24.6': + resolution: {integrity: sha512-wBXDRup6UU97VKyaiRo8AssnfStPtG0oAAfpq/bC0a1YYau8pM86YB4kM6ccoVi1mS8l/UHbn9oDM+7uozr/ug==} + engines: {node: '>=18.0.0'} + + '@smithy/credential-provider-imds@4.3.8': + resolution: {integrity: sha512-5cAM+KZC02sTqDt6NaLXyu50M/GNMd1eTzDVR8Lb0BBsVtu7RWHo47VPPEEv1vt3Yub6uzr+M5FHC+GtoT0USg==} + engines: {node: '>=18.0.0'} + + '@smithy/fetch-http-handler@5.4.6': + resolution: {integrity: sha512-FEwEYJ1jlBKdhe9TPzfghEi1bP55ZeEImlDkEa62bBBYzUcnB6RUCyuiS2mqKt6ZVjUbBgcNhzfIctH+Hevx9g==} + 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.7.7': + resolution: {integrity: sha512-ZAFvHXrEk6K180EVhmZVg8GU5pUH5BSFqRs27JW3j1qEFx9YyYwWFx17x/MHcjALYimGAji7qEOlF1++be+G5A==} + engines: {node: '>=18.0.0'} + + '@smithy/signature-v4@5.4.6': + resolution: {integrity: sha512-Ojg4B6oIDlIr1R86xCDJt1zJWnYa0VINmqdjfe9qxWjdRivHalZ3iSlQgVqYbW0MdpFOC5XfHEWsnbmdnpIILQ==} + engines: {node: '>=18.0.0'} + + '@smithy/types@4.14.3': + resolution: {integrity: sha512-YupL0ZWmFtJexUN2cHzkvvF/b9pKrtAIfT1o7/oY/Ppu8IYeZ+lDPM5vZdQJaSeA132dJCqojjGC9NhXeF71VQ==} + 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'} + + '@styled-system/background@5.1.2': + resolution: {integrity: sha512-jtwH2C/U6ssuGSvwTN3ri/IyjdHb8W9X/g8Y0JLcrH02G+BW3OS8kZdHphF1/YyRklnrKrBT2ngwGUK6aqqV3A==} + + '@styled-system/border@5.1.5': + resolution: {integrity: sha512-JvddhNrnhGigtzWRCVuAHepniyVi6hBlimxWDVAdcTuk7aRn9BYJUwfHslURtwYFsF5FoEs8Zmr1oZq2M1AP0A==} + + '@styled-system/color@5.1.2': + resolution: {integrity: sha512-1kCkeKDZkt4GYkuFNKc7vJQMcOmTl3bJY3YBUs7fCNM6mMYJeT1pViQ2LwBSBJytj3AB0o4IdLBoepgSgGl5MA==} + + '@styled-system/core@5.1.2': + resolution: {integrity: sha512-XclBDdNIy7OPOsN4HBsawG2eiWfCcuFt6gxKn1x4QfMIgeO6TOlA2pZZ5GWZtIhCUqEPTgIBta6JXsGyCkLBYw==} + + '@styled-system/css@5.1.5': + resolution: {integrity: sha512-XkORZdS5kypzcBotAMPBoeckDs9aSZVkvrAlq5K3xP8IMAUek+x2O4NtwoSgkYkWWzVBu6DGdFZLR790QWGG+A==} + + '@styled-system/flexbox@5.1.2': + resolution: {integrity: sha512-6hHV52+eUk654Y1J2v77B8iLeBNtc+SA3R4necsu2VVinSD7+XY5PCCEzBFaWs42dtOEDIa2lMrgL0YBC01mDQ==} + + '@styled-system/grid@5.1.2': + resolution: {integrity: sha512-K3YiV1KyHHzgdNuNlaw8oW2ktMuGga99o1e/NAfTEi5Zsa7JXxzwEnVSDSBdJC+z6R8WYTCYRQC6bkVFcvdTeg==} + + '@styled-system/layout@5.1.2': resolution: {integrity: sha512-wUhkMBqSeacPFhoE9S6UF3fsMEKFv91gF4AdDWp0Aym1yeMPpqz9l9qS/6vjSsDPF7zOb5cOKC3tcKKOMuDCPw==} '@styled-system/position@5.1.2': @@ -1558,6 +2417,9 @@ packages: '@styled-system/variant@5.1.5': resolution: {integrity: sha512-Yn8hXAFoWIro8+Q5J8YJd/mP85Teiut3fsGVR9CAxwgNfIAiqlYxsk5iHU7VHJks/0KjL4ATSjmbtCDC/4l1qw==} + '@swc/helpers@0.5.23': + resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} + '@tailwindcss/node@4.3.0': resolution: {integrity: sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==} @@ -1648,6 +2510,15 @@ packages: peerDependencies: vite: ^5.2.0 || ^6 || ^7 || ^8 + '@tanstack/react-virtual@3.14.2': + resolution: {integrity: sha512-IpWnmCLvuymRfeeLNVXIzNEYBFLpd3drVIS91sqV78VTZFyldlChkOocZRCPp1B+Wnk09bcLNme8WaMU/9/9bQ==} + 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.17.0': + resolution: {integrity: sha512-gOxY/hFkPh/XQYhnThBHzkbkX3Ed+z/iushyz+R+JAr213aXxUDgQoTgTdrDpBSRsjFM73P/KfUyWmaF9WHMkQ==} + '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} @@ -1672,6 +2543,24 @@ packages: '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-selection@3.0.11': + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} + + '@types/d3-transition@3.0.9': + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} + + '@types/d3-zoom@3.0.8': + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -1717,6 +2606,9 @@ packages: '@types/pg@8.16.0': resolution: {integrity: sha512-RmhMd/wD+CF8Dfo+cVIy3RR5cl8CyfXQ0tGgW6XBL8L4LM/UTEbNXYRbLwU6w+CgrKBNbrQWt4FUtTfaU5jSYQ==} + '@types/pluralize@0.0.33': + resolution: {integrity: sha512-JOqsl+ZoCpP4e8TDke9W79FDcSgPAR0l6pixx2JHkhnRjvShyYiAYw2LVsnA7K08Y6DeOnaU6ujmENO4os/cYg==} + '@types/qs@6.14.0': resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} @@ -1734,6 +2626,9 @@ packages: '@types/retry@0.12.5': resolution: {integrity: sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==} + '@types/semver@7.7.1': + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} + '@types/send@1.2.1': resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} @@ -1924,10 +2819,29 @@ packages: '@xterm/xterm@5.5.0': resolution: {integrity: sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==} + '@xyflow/react@12.11.0': + resolution: {integrity: sha512-na4IO33FSs2OS72hASgZDmTYwFAkef7Z74uBUVrong3ARmQQHfnRUVaCFn1kTt5LbS6pK03TbYjCPGLjLFfziA==} + peerDependencies: + '@types/react': '>=17' + '@types/react-dom': '>=17' + react: '>=17' + react-dom: '>=17' + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@xyflow/system@0.0.77': + resolution: {integrity: sha512-qCDCMCQAAgUu8yHnhloHG9F5mwPX5E+Wl8McpYIOPSSXfzFJJoZcwOcsDiAjitVKIg2de1WmJbCHfpcvxprsgg==} + abbrev@2.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@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -1949,6 +2863,9 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@8.20.0: + 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'} @@ -1990,6 +2907,10 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} + engines: {node: '>=10'} + array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} @@ -2058,9 +2979,16 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + base-64@1.0.0: resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + baseline-browser-mapping@2.9.11: resolution: {integrity: sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==} hasBin: true @@ -2080,12 +3008,19 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + bowser@2.14.1: + resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==} + brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} brace-expansion@2.0.2: resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + brace-expansion@5.0.6: + resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} + engines: {node: 18 || 20 || >=22} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -2102,9 +3037,15 @@ packages: bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + buffer@5.6.0: + resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==} + bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -2175,6 +3116,9 @@ packages: cjs-module-lexer@2.2.0: resolution: {integrity: sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==} + classcat@5.0.5: + resolution: {integrity: sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==} + clean-css@4.2.4: resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} engines: {node: '>= 4.0'} @@ -2186,6 +3130,14 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} + clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} @@ -2263,6 +3215,10 @@ packages: resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + cors@2.8.6: + resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} + engines: {node: '>= 0.10'} + create-jest@29.7.0: resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2299,6 +3255,59 @@ packages: csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + csv-parse@6.2.1: + resolution: {integrity: sha512-LRLMV+UCyfMokp8Wb411duBf1gaBKJfOfBWU9eHMJ+b+cJYZsNu3AFmjJf3+yPGd59Exz1TsMjaSFyxnYB9+IQ==} + + csv-parser@3.2.1: + resolution: {integrity: sha512-v8RPMSglouR9od735SnwSxLBbCJqEPSbgm1R5qfr8yIiMUCEFjox56kRZid0SvgHJEkxeIEu3+a9QS3YRh7CuA==} + engines: {node: '>= 10'} + hasBin: true + + csv-to-pg@3.18.0: + resolution: {integrity: sha512-+ZyZeNhrkhpT8304UQN4RhmxGJ01PCOncDvnUxMPDpbxeWX5hvWj+dOAvQEiN4nH5QQ//ShsN48eX8ykMydQVQ==} + hasBin: true + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + + debounce-promise@3.1.2: + resolution: {integrity: sha512-rZHcgBkbYavBeD9ej6sP56XfG53d51CD4dnaw989YX/nZ/ZJfgRx/9ePKmTNiUiyQvh4mtrMoS3OAWW+yoYtpg==} + debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -2355,6 +3364,9 @@ packages: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} + detect-node-es@1.1.0: + 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} @@ -2411,6 +3423,9 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + editorconfig@1.0.4: resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} engines: {node: '>=14'} @@ -2576,10 +3591,23 @@ packages: 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'} + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -2617,6 +3645,16 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-uri@3.1.2: + resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==} + + fast-xml-builder@1.2.0: + resolution: {integrity: sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==} + + fast-xml-parser@5.7.3: + resolution: {integrity: sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==} + hasBin: true + fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} @@ -2684,6 +3722,20 @@ packages: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} + framer-motion@12.40.0: + resolution: {integrity: sha512-uaBd3qC1v3KQqBEjwTUd183K6PbS+j0yR9w9VmEOLWA/tnUcSn8Xa3uck7t4dgpDoUss8xQTcj8W2L07lrnLFg==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true + fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -2706,6 +3758,9 @@ packages: genomic@5.3.11: 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'} @@ -2718,6 +3773,10 @@ packages: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} @@ -2733,6 +3792,10 @@ packages: get-tsconfig@4.13.7: resolution: {integrity: sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==} + get-value@3.0.1: + resolution: {integrity: sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==} + engines: {node: '>=6.0'} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -2752,6 +3815,10 @@ packages: deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true + glob@13.0.6: + resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} + engines: {node: 18 || 20 || >=22} + glob@7.2.3: 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 @@ -2768,9 +3835,241 @@ packages: 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.2: + resolution: {integrity: sha512-E3PH6hfOfhlJxMmiBplWs3KDmJTIQr/iZ9hs4c73k3pLk9Tx2nSdVNBVIe7D1stejgPbyC6wRxLfXtJmDx2P7A==} + engines: {node: '>=22'} + peerDependencies: + '@envelop/core': ^5.0.0 + graphql: ^16.9.0 + peerDependenciesMeta: + '@envelop/core': + optional: true + + grafserv@1.0.0: + resolution: {integrity: sha512-9w0zwYSHS10DfHOAQhaCVvJnOFuk+YY+nZZqG0ZOqFbner3Zf4GvqfWlNETdmUQdB6dnISfGZCkIaSZt5R7wCQ==} + engines: {node: '>=22'} + peerDependencies: + '@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 + h3: ^1.13.0 + hono: ^4.6.15 + ws: ^8.12.1 + peerDependenciesMeta: + '@envelop/core': + optional: true + '@whatwg-node/server': + optional: true + h3: + optional: true + hono: + optional: true + ws: + optional: true + + graphile-bucket-provisioner-plugin@0.12.0: + resolution: {integrity: sha512-YTjyvXGoccjI/Ly9zlt3wrw5ydH8+2NAwm+d13CWjiBF7V8g9b7YMuPkJtUZ5+9ECDHba0aZaWqTHAq0eLE0aQ==} + peerDependencies: + 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.3 + + graphile-build-pg@5.0.2: + resolution: {integrity: sha512-8vkg1x5UcooFogPCp+3EUt6qqWX8NG01gANoVFUk9yK2c8DW+aQaF37LAaa96r9JR4FE0yeO2zk6WvOOemk2dg==} + 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-config: ^1.0.0-rc.5 + graphql: ^16.9.0 + pg: ^8.7.1 + pg-sql2: ^5.0.0-rc.4 + tamedevil: ^0.1.0-rc.5 + peerDependenciesMeta: + pg: + optional: true + + 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.5.4: + resolution: {integrity: sha512-55DnpNhW1bRPp1TpSAaeTUe+xuAtNlAsfT3XzzKDnoMDXYpPbsr7POwnaaYOheHmNF1pttldESzbxJOvXDpVsA==} + 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 + graphql: 16.13.0 + pg-sql2: 5.0.1 + postgraphile: 5.0.3 + + graphile-config@1.0.1: + resolution: {integrity: sha512-sVdSWNmetW/WZKVQ0Dii2kCu0Le6X6qwuBRecWg575iOMjbZgxo+b4oVeSOTtR6NTKuLsMYQBkzSaeoAKOPB+A==} + engines: {node: '>=22'} + + graphile-connection-filter@1.12.4: + resolution: {integrity: sha512-3EmMO1le/KvT+OAGYnX1N4lyPY8LeVB0+r2WDwiFUggfq2bRl6UqDy6lHkV5yDUChmmbk+ZcGwdLz1Ho2renAA==} + peerDependencies: + '@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-i18n@1.2.5: + resolution: {integrity: sha512-jXYcbp1kWx0OvNpbwrwlulgzYJg84rm2GqK2glv5at/4thA40kER7Ud8tl5fi6s3rqEg9Kp04D7XSXgkbcHi1A==} + 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 + graphql: 16.13.0 + pg-sql2: 5.0.1 + postgraphile: 5.0.3 + + graphile-ltree@1.9.4: + resolution: {integrity: sha512-00/KHNAJIewtMOvpEXkq9e0X2jFt0JO4ZuH/wT3K2Nal6H/QpiyMwFQj9TPiNBOt1S2cuD5aR+syEQpjx+bl7w==} + 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.4 + graphql: 16.13.0 + pg-sql2: 5.0.1 + postgraphile: 5.0.3 + peerDependenciesMeta: + graphile-connection-filter: + optional: true + + graphile-pg-aggregates@1.5.4: + resolution: {integrity: sha512-rFU8KHRR61cM56D4fDkuSJfSnw4P9oHuM+epdlAVgxiRs1gj3KzlMewyiEX/eZjTWdBhuoEphmx3DQz41/vHww==} + 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.4 + graphql: 16.13.0 + pg-sql2: 5.0.1 + postgraphile: 5.0.3 + + graphile-postgis@2.18.4: + resolution: {integrity: sha512-ikTNNtYGmw1OPuNhddVTjAAKgYFpQ94OA4zVDnYjd/1eFHPsfYA8WKESwSFju/iJT8giSLl2Sd4ZCqhMj/xw1g==} + 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.4 + graphql: 16.13.0 + pg-sql2: 5.0.1 + postgraphile: 5.0.3 + peerDependenciesMeta: + graphile-connection-filter: + optional: true + + graphile-presigned-url-plugin@0.20.0: + resolution: {integrity: sha512-uxSPiufQFHGUVHbyu9O4V8NWye9H9eIv9UMWz2SPHt6uqveZthcpnbTi+dXM6P+23D9Kba/sUGI7kgegvmg6GQ==} + peerDependencies: + 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.3 + + graphile-realtime-subscriptions@0.8.0: + resolution: {integrity: sha512-d4LZYmmw1XO/SYW2KXZ0hX35Y0K3mO4gcu1SBgbhz+eCLcPSpkTL43Avq1oBFN7TFunmDI4FIfLPydLEAkmUXQ==} + peerDependencies: + 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.3 + + graphile-schema@1.22.5: + resolution: {integrity: sha512-u9HVBBs5ip2xlYYNKdZiPyCdyd5O7UXwu4mASbpTZlZa4tP6nFTQbdcSIJ2vn69u1Hh4Gp6047/uhnW0LkDvEA==} + + graphile-search@1.15.4: + resolution: {integrity: sha512-KWjk/JJsAWOp51yV17CoFOFhTLkmRypZFfQv8mmwiVVfFSbMw6yUezuJUVQ/LUgPLZTlRGUHbJsVoOHJeyQ2Lg==} + peerDependencies: + '@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-settings@5.6.4: + resolution: {integrity: sha512-atCvHdike7yWzZ7L3A52IoeXlnxsgNfvQtTJm8HkNxtF2d2zczqfGsVmw6kUrAXSFR8awwz+eL6A4gP6djuwXQ==} + + graphile-upload-plugin@2.12.0: + resolution: {integrity: sha512-EpU2FvJ9HLE9y0pkcFbQxJ2mGjU0RrFprtCmduTs0+UG7geIDdanRq5Hg+UJUnELX2rkDmKL1zgsH+k26SSzcw==} + peerDependencies: + graphile-build: 5.0.2 + graphile-build-pg: 5.0.2 + graphile-config: 1.0.1 + graphql: 16.13.0 + postgraphile: 5.0.3 + + graphile-utils@5.0.1: + resolution: {integrity: sha512-FtJgxL2BDv1B417sOCsNdu1e3yZkZY7jPMlMHTvzcJLc/7o9rDh+ucJGDmLiKe5Z4lS8KXxVRLZWbxC56/RHcw==} + 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 + + graphiql@5.2.3: + resolution: {integrity: sha512-N0bsZVWCKoZ2STYM3w5hgynmD+hFk8AbzMdUU+mDTa7hlx0W1PtRWhr6oqq8h4MIZwQVpqaC8dniXzGie8ThjA==} + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + react: ^18 || ^19 + react-dom: ^18 || ^19 + + graphql-language-service@5.5.2: + resolution: {integrity: sha512-NJhgEKTArkyNPcy4NRUFdbpNs5/F99LcvXbNtmGzNGwwruN8tBE3YPMjpYmp8KpBQtOx3uSuvXJlOOE3Vy2KRQ==} + hasBin: true + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + graphql-request@7.4.0: resolution: {integrity: sha512-xfr+zFb/QYbs4l4ty0dltqiXIp07U6sl+tOKAb0t50/EnQek6CVVBLjETXi+FghElytvgaAWtIOt3EV7zLzIAQ==} peerDependencies: @@ -2782,8 +4081,24 @@ packages: peerDependencies: graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - graphql@16.12.0: - resolution: {integrity: sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==} + graphql-ws@6.0.8: + resolution: {integrity: sha512-m3EOaNsUBXwAnkBWbzPfe0Nq8pXUfxsWnolC54sru3FzHvhTZL0Ouf/BoQsaGAXqM+YPerXOJ47BUnmgmoupCw==} + engines: {node: '>=20'} + peerDependencies: + '@fastify/websocket': ^10 || ^11 + crossws: ~0.3 + graphql: ^15.10.1 || ^16 + ws: ^8 + peerDependenciesMeta: + '@fastify/websocket': + optional: true + crossws: + optional: true + ws: + 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} handlebars@4.7.8: @@ -2839,6 +4154,10 @@ packages: resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -2855,6 +4174,9 @@ packages: resolution: {integrity: sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==} engines: {node: '>=0.10.0'} + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -2876,6 +4198,13 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + inflection@3.0.2: + resolution: {integrity: sha512-+Bg3+kg+J6JUWn8J6bzFmOWkTQ6L/NHfDRSYU+EVvuKHDxUDHAXgqixHfVlzuBQaPOTac8hn43aPhMNk6rMe3g==} + engines: {node: '>=18.0.0'} + + inflekt@0.7.1: + resolution: {integrity: sha512-iNsb7kpQeo7HUHayGI8Wbe9PC1TIJu15VfJU/Q6MADuhZh6skVifGrDsJp8t45xXg84ywvqnZwh4B6lN34nVTw==} + inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -2889,6 +4218,10 @@ packages: inquirerer@4.8.1: resolution: {integrity: sha512-X8cPy91JMH6EmUPUqgnxc+oYssHdQlitWR23youH2208F2enxElCKc6Mt/5H8KAupYDgOuRuyBO+SRaRXStj8A==} + interpret@3.1.1: + resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} + engines: {node: '>=10.13.0'} + ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -2924,6 +4257,14 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-plain-object@2.0.4: + 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'} + is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} @@ -2934,6 +4275,10 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isobject@3.0.1: + 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'} @@ -2962,6 +4307,9 @@ packages: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} + iterall@1.3.0: + resolution: {integrity: sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==} + jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} @@ -3255,6 +4603,9 @@ packages: json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -3263,11 +4614,24 @@ packages: engines: {node: '>=6'} hasBin: true + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + + jsonwebtoken@9.0.3: + resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==} + engines: {node: '>=12', npm: '>=6'} + juice@7.0.0: resolution: {integrity: sha512-AjKQX31KKN+uJs+zaf+GW8mBO/f/0NqSh2moTMyvwBY+4/lXIYTU8D8I2h6BAV3Xnz6GGsbalUyFqbYMe+Vh+Q==} engines: {node: '>=10.0.0'} hasBin: true + jwa@2.0.1: + resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} + + jws@4.0.1: + resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -3275,6 +4639,9 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} + komoji@0.9.0: + resolution: {integrity: sha512-mbAwXYrQgSE9r618CzW7BHvQfKmDyvPoJFPzaWimEVfcaTyE9aqCvf5RbOwzP16ranN/4rmAuAme1GMrWRZ/sQ==} + kubernetesjs@0.7.7: resolution: {integrity: sha512-lgPRINWQRnzmZh2DToauk6lLTtFqfZVSBbQ3JcpL3FELmYEPPEiws5HutfhreLFCJUiOH0AL1LpD8h70WL5hAA==} @@ -3286,6 +4653,9 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + libpg-query@17.7.3: + resolution: {integrity: sha512-lHKBvoWRsXt/9bJxpAeFxkLu0CA6tELusqy3o1z6/DwGXSETxhKJDaNlNdrNV8msvXDLBhpg/4RE/fKKs5rYFA==} + lightningcss-android-arm64@1.32.0: resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} engines: {node: '>= 12.0.0'} @@ -3359,6 +4729,9 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + linkify-it@5.0.1: + resolution: {integrity: sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg==} + locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -3367,15 +4740,39 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + + lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + + lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + long-timeout@0.1.1: resolution: {integrity: sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==} @@ -3426,10 +4823,17 @@ packages: makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + markdown-it@14.2.0: + resolution: {integrity: sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==} + hasBin: true + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -3451,6 +4855,15 @@ packages: merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + meros@1.3.2: + resolution: {integrity: sha512-Q3mobPbvEx7XbwhnC1J1r60+5H6EZyNccdzSz0eGexJRwouUtTZxPVRGdqKtxlpD84ScK4+tIGldkqDtCKdI0A==} + engines: {node: '>=13'} + peerDependencies: + '@types/node': '>=13' + peerDependenciesMeta: + '@types/node': + optional: true + methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} @@ -3459,6 +4872,9 @@ packages: 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'} @@ -3493,6 +4909,10 @@ packages: resolution: {integrity: sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==} engines: {node: 20 || >=22} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -3511,6 +4931,10 @@ packages: 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'} + mjml-accordion@4.7.1: resolution: {integrity: sha512-oYwC/CLOUWJ6pRt2saDHj/HytGOHO5B5lKNqUAhKPye5HFNZykKEV5ChmZ2NfGsGU+9BhQ7H5DaCafp4fDmPAg==} @@ -3614,6 +5038,22 @@ packages: resolution: {integrity: sha512-nwMrmhTI+Aeh9Gav9LHX/i8k8yDi/QpX5h535BlT5oP4NaAUmyxP/UeYUn9yxtPcIzDlM5ullFnRv/71jyHpkQ==} hasBin: true + monaco-editor@0.52.2: + resolution: {integrity: sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==} + + monaco-graphql@1.8.0: + resolution: {integrity: sha512-rWvWUpJdtpTu6YF2qgeaR2HnGPFthUJKSposB38f5wtBKwHlISYZHZLD/LukoMWDEyegNLOF/1bPMRs0SZrNzA==} + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + monaco-editor: '>= 0.20.0 < 0.53' + prettier: ^2.8.0 || ^3.0.0 + + motion-dom@12.40.0: + resolution: {integrity: sha512-HxU3ZaBwNPVQUBQf1xxgq+7JrPNZvjLVxgbpEZL7RrWJnsxOf0/OM+yrHG9ogLQ31Do/r57Oz2gQWPK+6q62mg==} + + motion-utils@12.39.0: + resolution: {integrity: sha512-8nadJAJjTtqRkmRF36FoJTrywK9nnFmnPwnSMyxaOCU7GDjN9RTMJIxx9De8ErM+vpPhMccr/6fo5WciyQLnMQ==} + ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -3644,6 +5084,9 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + nested-obj@0.2.2: + resolution: {integrity: sha512-M1etu+T6Ai9Bo06L3K3nWD0ytZWltggBGsrxJlOGvMNGlCA4fokUVlbPKoWzsiiRX+PXq6Cb1xFEn4chiyC7MQ==} + no-case@2.3.2: resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} @@ -3689,6 +5132,9 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + nullthrows@1.1.1: + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -3712,6 +5158,16 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + oxfmt@0.51.0: + resolution: {integrity: sha512-l/AoAnaEOV7Q5/Z9kHOMDehVJnCgYN7wRoooWCTUMBMi16BJhLZqd9cmCnwcVFfVlzkt53zK2KLPFNp8vSsoDg==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + svelte: ^5.0.0 + peerDependenciesMeta: + svelte: + optional: true + p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -3746,6 +5202,9 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} + parse-package-name@1.0.0: + resolution: {integrity: sha512-kBeTUtcj+SkyfaW4+KBe0HtsloBJ/mKTPoxpVdA57GZiPerREsUWJOhVj9anXweFiJkm5y8FG1sxFZkZ0SN6wg==} + parse5-htmlparser2-tree-adapter@7.1.0: resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} @@ -3766,6 +5225,10 @@ packages: 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'} + path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -3785,21 +5248,40 @@ packages: resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} engines: {node: 20 || >=22} + path-scurry@2.0.2: + resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} + engines: {node: 18 || 20 || >=22} + path-to-regexp@0.1.13: resolution: {integrity: sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==} path-to-regexp@8.3.0: resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} + pg-cache@3.12.0: + resolution: {integrity: sha512-xlQdi1dQQYoKKBRR9L/KRfqOMutaVv7gTZcNt0bUvZVXGOVWegqtlAEEpPaQhxZjVxd0Z1b15lctqYhyX1wgew==} + pg-cache@3.4.4: resolution: {integrity: sha512-orkHxeo2W7UhdIUVnVT0ZFoN+sKatO1ZVpqCuFGWr67xAsjMQwCiQbqvC/Y9F/yYw93UNBduL3nJZFruilhWcQ==} pg-cloudflare@1.3.0: 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==} + pg-connection-string@2.13.0: + resolution: {integrity: sha512-EMnU9E2fSULdsbErBbMaXJvFeD9B4+nPcM3f+4lsiCR0BHLPrLVjv3DbyM2hgQQviKJaTWIRRTjKjWlHg3p2ig==} + + pg-copy-streams@7.0.0: + resolution: {integrity: sha512-zBvnY6wtaBRE2ae2xXWOOGMaNVPkXh1vhypAkNSKgMdciJeTyIQAHZaEeRAxUjs/p1El5jgzYmwG5u871Zj3dQ==} + + pg-env@1.16.0: + resolution: {integrity: sha512-Jexh/zTP7Tyr5BgP6rcY8RRl1PZu3lUssjyMYbjAhPermtGuHM/dMLlB2MVMyokJvkEDsJZOTrzheadCiJeIpA==} + pg-env@1.8.2: resolution: {integrity: sha512-YzxNQKZmFRRJKX5t149Ys2JoAsc6OCHcaoYH/82si7gwVC9ODaFTFtQn7gv3VpoGsNkH90t6iEPWvmLIgv2rDg==} @@ -3807,14 +5289,36 @@ packages: 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'} + pg-pool@3.13.0: 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-protocol@1.13.0: resolution: {integrity: sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==} + pg-protocol@1.14.0: + resolution: {integrity: sha512-n5taZ1kO3s9ngDTVxsEznOqCyToTgz0FLuPq0B33COy5pPpuWJpY3/2oRBVETuOgzdqRXfWpM9HIhp2LBBT1BA==} + + pg-query-context@2.17.0: + resolution: {integrity: sha512-mKdpTH9ayhIt7DbFtLoxyn31vXblrbNRvp19VmgcrQkPm3fEyLHdViHawDkl8lNKryEcc6mD3QMrxW+U5YhlCw==} + + pg-seed@0.15.0: + resolution: {integrity: sha512-oWNRPFAwYle4fM6EbXR6WD5+xoLlBwcSS3Up8FmxWJKmRok/DvR/SGoNA12HZkVYf0vCetc/5CsCsElclfz2Bw==} + + 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'} @@ -3828,12 +5332,37 @@ packages: pg-native: optional: true + pg@8.21.0: + resolution: {integrity: sha512-AUP1EYJuHraQGsVoCQVIcM7TEJVGtDzxWtGFZd8rds9d+CCXlU5Js1rYgfLNvxy9iJrpHjGrRjoi/3BT9fRyiA==} + engines: {node: '>= 16.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + pgpass@1.0.5: resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + pgsql-client@3.16.4: + resolution: {integrity: sha512-2/xt+CGjEdF8+HIYRr/5c6GPIP8GUMv5V4nVzK8v3B66kRxeqpstZV+28+lEulthm6ZFPUpjHV5qP/GCr8Kp0w==} + + pgsql-deparser@17.18.3: + resolution: {integrity: sha512-lD8kPWgw9KAbUbKbQKgzDGzVdtEmp25N+7qZl62I7v8Uu9Wqy7+M0EOeU96++OgPD9S1pyp9MKNGzZzPJF2C4Q==} + + pgsql-parser@17.9.15: + resolution: {integrity: sha512-6+k0EtTn0CEQTR5v2APARu9En4vm46TpmpdMSfKDHkZwWZuEc08B7SeVg32VxNQ2HD5xk+dQ9TD0k9m+S+vFgg==} + + pgsql-seed@2.16.4: + resolution: {integrity: sha512-fgkmIef6GNoiJWVLvcYBbqc/MyuKF8U860w4MJMEmvvNAW/eKZfk5Ugitn4j9FOy4r/3S4GS3uNXy3fsd+5f+A==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch-browser@2.2.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'} @@ -3850,6 +5379,10 @@ packages: 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'} + postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -3857,10 +5390,35 @@ packages: resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} engines: {node: ^10 || ^12 || >=14} + 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.3 + '@envelop/core': ^5.0.0 + grafast: ^1.0.2 + grafserv: ^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.1 + tamedevil: ^0.1.1 + peerDependenciesMeta: + '@envelop/core': + optional: true + postgres-array@2.0.0: resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} engines: {node: '>=4'} + postgres-array@3.0.4: + 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'} @@ -3873,6 +5431,9 @@ packages: 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==} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -3904,6 +5465,10 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -3934,6 +5499,17 @@ packages: resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} engines: {node: '>= 0.10'} + react-aria@3.49.0: + resolution: {integrity: sha512-4+oK9FwJQWYhyA5zLfj/feOGY0zZbkE1muoF4gyxMroHVypjcYaRSTlJwvxph2zIlxt757KX6xIK2wJ5Aw1Kog==} + 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==} + peerDependencies: + react: ^17.0.0 || ^18.0.0 || ^19.0.0 || ^0.0.0-experimental + react-dom@19.2.7: resolution: {integrity: sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==} peerDependencies: @@ -3949,6 +5525,41 @@ packages: resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} engines: {node: '>=0.10.0'} + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.7.2: + resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-stately@3.47.0: + resolution: {integrity: sha512-H3ar+SOWP920EbVg7qWfP3fZjZiwhlEJAEJQqjt+w8oKijCwFgr0+R4941PIHscOXRNRvEOjvWilitImC0DdBg==} + 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'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + react@19.2.7: resolution: {integrity: sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==} engines: {node: '>=0.10.0'} @@ -3968,13 +5579,23 @@ packages: resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} engines: {node: '>= 0.10'} + request-ip@3.3.0: + 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'} + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} @@ -4016,6 +5637,34 @@ packages: resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} engines: {node: '>= 18'} + ruru-types@2.0.0: + resolution: {integrity: sha512-7dBZHeU8Pnj0V+tLiPzr8RhpdsNuAwu5yhZqcolu6pzpItLG/LKKzN+gKAiCp17z6Lfpdu7bXs+9JS39PO+VxA==} + engines: {node: '>=22'} + peerDependencies: + graphql: ^16.9.0 + react: ^18 || ^19 + react-dom: ^18 || ^19 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + ruru@2.0.0: + resolution: {integrity: sha512-I8N4Jw0jsgFqgUnsLMR9BHnWyVX0xj7GfDYIjsvjt538zIVs/PiggdepsYjH6K2ul9bjHoS15p7XL2SnywSdCw==} + engines: {node: '>=22'} + hasBin: true + peerDependencies: + graphile-config: ^1.0.0-rc.5 + graphql: ^16.9.0 + react: ^18 || ^19 + react-dom: ^18 || ^19 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} @@ -4037,6 +5686,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.8.2: + resolution: {integrity: sha512-c8jsqUZm3omBOI66G90z1Dyw5z622G8oLG+omfsHBJf3CWQTlOcwOjvOG6wtiNfW6anKm/eA39LMwMtMez2TiQ==} + engines: {node: '>=10'} + hasBin: true + send@0.19.2: resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} engines: {node: '>= 0.8.0'} @@ -4056,6 +5710,10 @@ packages: set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + set-value@4.1.0: + resolution: {integrity: sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==} + engines: {node: '>=11.0'} + setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -4139,6 +5797,9 @@ packages: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} + stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} @@ -4174,6 +5835,9 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + strnum@2.3.0: + resolution: {integrity: sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==} + styled-components@5.3.11: resolution: {integrity: sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==} engines: {node: '>=10'} @@ -4205,9 +5869,16 @@ packages: resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} engines: {node: ^14.18.0 || >=16.0.0} + tabbable@6.4.0: + resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} + tailwindcss@4.3.0: resolution: {integrity: sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==} + tamedevil@0.1.1: + resolution: {integrity: sha512-YH5/T/FXUYrsfFSsCdLqJwUGAlbTBrK2V78dftXnOIgnOnM9aYBi3C+uUg9pevezjE2ENPyOxHqnXJrTG9WPFQ==} + engines: {node: '>=22'} + tapable@2.3.3: resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} engines: {node: '>=6'} @@ -4220,6 +5891,10 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tinypool@2.1.0: + resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} + engines: {node: ^20.0.0 || >=22.0.0} + tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -4234,6 +5909,11 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + transliteration@2.6.1: + resolution: {integrity: sha512-hJ9BhrQAOnNTbpOr1MxsNjZISkn7ppvF5TKUeFmTE1mG4ZPD/XVxF0L0LUoIUCWmQyxH0gJpVtfYLAWf298U9w==} + engines: {node: '>=20.0.0'} + hasBin: true + tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -4315,6 +5995,9 @@ packages: engines: {node: '>=14.17'} hasBin: true + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + uglify-js@3.4.10: resolution: {integrity: sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==} engines: {node: '>=0.8.0'} @@ -4327,6 +6010,10 @@ packages: resolution: {integrity: sha512-0L1RtVqD2twa4hYKeNitqG8zvwe+4cT7L2FDP+64QC8mxjA4TlKjSqPLyOjaRdnUnWYQyxKyhDkqOHLKXw+lkA==} engines: {node: '>=20.18.1'} + undici@8.4.0: + resolution: {integrity: sha512-tDR4LgFBeV7YBWOFMlmbhtrnFVWuZ6HKbkG+88/csQdhK2tPlW78PnLI2VRjIQtTlslvgSZ4R43WBE+4g6rhng==} + engines: {node: '>=22.19.0'} + unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} @@ -4349,6 +6036,31 @@ packages: url-join@4.0.1: resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sync-external-store@1.6.0: + 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==} @@ -4356,6 +6068,9 @@ packages: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} + uuid-hash@2.17.0: + resolution: {integrity: sha512-TLowjnJV/RK5xEThnYJNchTdy+fWInmKwrimv3M3lVYS3gAsZrMSnIpTbr37vxSUj1UhAXF2EALE4r5cQb69BQ==} + v8-to-istanbul@9.3.0: resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} @@ -4408,6 +6123,9 @@ packages: yaml: optional: true + vscode-languageserver-types@3.18.0: + resolution: {integrity: sha512-8TsGPNMIMiiBdkORgRSvLjuiEIiAFtO+KssmYWxQ+uSVvlf7RjK8YKCOjPzZ+YA04jXEV7+7LvkSmHkhpNS99g==} + walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} @@ -4483,6 +6201,10 @@ packages: utf-8-validate: optional: true + xml-naming@0.1.0: + resolution: {integrity: sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==} + engines: {node: '>=16.0.0'} + xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -4525,12 +6247,298 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + zustand@4.5.7: + resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + + zustand@5.0.14: + resolution: {integrity: sha512-/8tAspM5LMPr28b3fwLYrtdj77ECpfZviaP75CMTnwO8ISyaE4GDIG/9rDDYq/cH9D2Xw2A2RXglLInmVBQB/g==} + 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' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + use-sync-external-store: + optional: true + snapshots: 12factor-env@1.6.2: dependencies: envalid: 8.1.1 + '@0no-co/graphql.web@1.2.0(graphql@16.13.0)': + optionalDependencies: + graphql: 16.13.0 + + '@aws-crypto/crc32@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.11 + tslib: 2.8.1 + + '@aws-crypto/crc32c@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.11 + tslib: 2.8.1 + + '@aws-crypto/sha1-browser@5.2.0': + dependencies: + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.11 + '@aws-sdk/util-locate-window': 3.965.6 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@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.11 + '@aws-sdk/util-locate-window': 3.965.6 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.11 + tslib: 2.8.1 + + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.8.1 + + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.973.11 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-sdk/checksums@3.1000.2': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/core': 3.974.18 + '@aws-sdk/types': 3.973.11 + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@aws-sdk/client-s3@3.1063.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.18 + '@aws-sdk/credential-provider-node': 3.972.52 + '@aws-sdk/middleware-flexible-checksums': 3.974.27 + '@aws-sdk/middleware-sdk-s3': 3.972.48 + '@aws-sdk/signature-v4-multi-region': 3.996.32 + '@aws-sdk/types': 3.973.11 + '@smithy/core': 3.24.6 + '@smithy/fetch-http-handler': 5.4.6 + '@smithy/node-http-handler': 4.7.7 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@aws-sdk/core@3.974.18': + dependencies: + '@aws-sdk/types': 3.973.11 + '@aws-sdk/xml-builder': 3.972.28 + '@aws/lambda-invoke-store': 0.2.4 + '@smithy/core': 3.24.6 + '@smithy/signature-v4': 5.4.6 + '@smithy/types': 4.14.3 + bowser: 2.14.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-env@3.972.44': + dependencies: + '@aws-sdk/core': 3.974.18 + '@aws-sdk/types': 3.973.11 + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-http@3.972.46': + dependencies: + '@aws-sdk/core': 3.974.18 + '@aws-sdk/types': 3.973.11 + '@smithy/core': 3.24.6 + '@smithy/fetch-http-handler': 5.4.6 + '@smithy/node-http-handler': 4.7.7 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-ini@3.972.50': + dependencies: + '@aws-sdk/core': 3.974.18 + '@aws-sdk/credential-provider-env': 3.972.44 + '@aws-sdk/credential-provider-http': 3.972.46 + '@aws-sdk/credential-provider-login': 3.972.49 + '@aws-sdk/credential-provider-process': 3.972.44 + '@aws-sdk/credential-provider-sso': 3.972.49 + '@aws-sdk/credential-provider-web-identity': 3.972.49 + '@aws-sdk/nested-clients': 3.997.17 + '@aws-sdk/types': 3.973.11 + '@smithy/core': 3.24.6 + '@smithy/credential-provider-imds': 4.3.8 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-login@3.972.49': + dependencies: + '@aws-sdk/core': 3.974.18 + '@aws-sdk/nested-clients': 3.997.17 + '@aws-sdk/types': 3.973.11 + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-node@3.972.52': + dependencies: + '@aws-sdk/credential-provider-env': 3.972.44 + '@aws-sdk/credential-provider-http': 3.972.46 + '@aws-sdk/credential-provider-ini': 3.972.50 + '@aws-sdk/credential-provider-process': 3.972.44 + '@aws-sdk/credential-provider-sso': 3.972.49 + '@aws-sdk/credential-provider-web-identity': 3.972.49 + '@aws-sdk/types': 3.973.11 + '@smithy/core': 3.24.6 + '@smithy/credential-provider-imds': 4.3.8 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-process@3.972.44': + dependencies: + '@aws-sdk/core': 3.974.18 + '@aws-sdk/types': 3.973.11 + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-sso@3.972.49': + dependencies: + '@aws-sdk/core': 3.974.18 + '@aws-sdk/nested-clients': 3.997.17 + '@aws-sdk/token-providers': 3.1063.0 + '@aws-sdk/types': 3.973.11 + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-web-identity@3.972.49': + dependencies: + '@aws-sdk/core': 3.974.18 + '@aws-sdk/nested-clients': 3.997.17 + '@aws-sdk/types': 3.973.11 + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@aws-sdk/lib-storage@3.1063.0(@aws-sdk/client-s3@3.1063.0)': + dependencies: + '@aws-sdk/client-s3': 3.1063.0 + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 + buffer: 5.6.0 + events: 3.3.0 + stream-browserify: 3.0.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-flexible-checksums@3.974.27': + dependencies: + '@aws-sdk/checksums': 3.1000.2 + tslib: 2.8.1 + + '@aws-sdk/middleware-sdk-s3@3.972.48': + dependencies: + '@aws-sdk/core': 3.974.18 + '@aws-sdk/signature-v4-multi-region': 3.996.32 + '@aws-sdk/types': 3.973.11 + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@aws-sdk/nested-clients@3.997.17': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.974.18 + '@aws-sdk/signature-v4-multi-region': 3.996.32 + '@aws-sdk/types': 3.973.11 + '@smithy/core': 3.24.6 + '@smithy/fetch-http-handler': 5.4.6 + '@smithy/node-http-handler': 4.7.7 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@aws-sdk/s3-request-presigner@3.1063.0': + dependencies: + '@aws-sdk/core': 3.974.18 + '@aws-sdk/signature-v4-multi-region': 3.996.32 + '@aws-sdk/types': 3.973.11 + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@aws-sdk/signature-v4-multi-region@3.996.32': + dependencies: + '@aws-sdk/types': 3.973.11 + '@smithy/signature-v4': 5.4.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@aws-sdk/token-providers@3.1063.0': + dependencies: + '@aws-sdk/core': 3.974.18 + '@aws-sdk/nested-clients': 3.997.17 + '@aws-sdk/types': 3.973.11 + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@aws-sdk/types@3.973.11': + dependencies: + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@aws-sdk/util-locate-window@3.965.6': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/xml-builder@3.972.28': + dependencies: + '@smithy/types': 4.14.3 + fast-xml-parser: 5.7.3 + tslib: 2.8.1 + + '@aws/lambda-invoke-store@0.2.4': {} + '@babel/code-frame@7.27.1': dependencies: '@babel/helper-validator-identifier': 7.28.5 @@ -4567,6 +6575,14 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 + '@babel/generator@7.29.7': + dependencies: + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + '@babel/helper-annotate-as-pure@7.27.3': dependencies: '@babel/types': 7.28.5 @@ -4603,8 +6619,12 @@ snapshots: '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-string-parser@7.29.7': {} + '@babel/helper-validator-identifier@7.28.5': {} + '@babel/helper-validator-identifier@7.29.7': {} + '@babel/helper-validator-option@7.27.1': {} '@babel/helpers@7.28.4': @@ -4616,6 +6636,10 @@ snapshots: dependencies: '@babel/types': 7.28.5 + '@babel/parser@7.29.7': + dependencies: + '@babel/types': 7.29.7 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 @@ -4736,8 +6760,140 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 + '@babel/types@7.29.7': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@bcoe/v8-coverage@0.2.3': {} + '@constructive-io/bucket-provisioner@0.12.0': + dependencies: + '@aws-sdk/client-s3': 3.1063.0 + '@constructive-io/s3-utils': 2.18.0 + + '@constructive-io/content-type-stream@2.18.0': + dependencies: + etag-hash: 2.18.0 + mime-bytes: 0.18.0 + uuid-hash: 2.17.0 + + '@constructive-io/fetch@1.1.1': {} + + '@constructive-io/graphql-codegen@4.47.6(@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.21.0))(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(grafast@1.0.2(graphql@16.13.0))(grafserv@1.0.0(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7))(ws@8.21.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.21.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.7))(ws@8.21.0)': + dependencies: + '@0no-co/graphql.web': 1.2.0(graphql@16.13.0) + '@babel/generator': 7.29.7 + '@babel/types': 7.29.7 + '@constructive-io/graphql-query': 3.27.5(@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.21.0))(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(grafserv@1.0.0(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7))(ws@8.21.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.21.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.7))(ws@8.21.0) + '@constructive-io/graphql-types': 3.12.0 + '@inquirerer/utils': 3.3.7 + '@pgpmjs/core': 6.24.0 + ajv: 8.20.0 + deepmerge: 4.3.1 + find-and-require-package-json: 0.9.1 + gql-ast: 3.11.0 + graphile-schema: 1.22.5(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(grafast@1.0.2(graphql@16.13.0))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7))(ws@8.21.0) + graphql: 16.13.0 + inflekt: 0.7.1 + inquirerer: 4.8.1 + jiti: 2.7.0 + oxfmt: 0.51.0 + pg-cache: 3.12.0 + pg-env: 1.16.0 + pgsql-client: 3.16.4 + pgsql-seed: 2.16.4 + undici: 8.4.0 + optionalDependencies: + react: 19.2.7 + transitivePeerDependencies: + - '@dataplan/json' + - '@dataplan/pg' + - '@envelop/core' + - '@fastify/websocket' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - '@whatwg-node/server' + - bufferutil + - crossws + - grafast + - grafserv + - graphile-build + - h3 + - hono + - immer + - pg + - pg-native + - pg-sql2 + - react-dom + - supports-color + - svelte + - tamedevil + - use-sync-external-store + - utf-8-validate + - ws + + '@constructive-io/graphql-env@3.13.0': + dependencies: + '@constructive-io/graphql-types': 3.12.0 + '@pgpmjs/env': 2.25.0 + deepmerge: 4.3.1 + transitivePeerDependencies: + - supports-color + + '@constructive-io/graphql-query@3.27.5(@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.21.0))(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(grafserv@1.0.0(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7))(ws@8.21.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.21.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(tamedevil@0.1.1)(use-sync-external-store@1.6.0(react@19.2.7))(ws@8.21.0)': + dependencies: + '@0no-co/graphql.web': 1.2.0(graphql@16.13.0) + '@constructive-io/fetch': 1.1.1 + '@constructive-io/graphql-types': 3.12.0 + ajv: 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.21.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.21.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 + graphile-settings: 5.6.4(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7))(ws@8.21.0) + graphql: 16.13.0 + inflection: 3.0.2 + inflekt: 0.7.1 + lru-cache: 11.3.0 + postgraphile: 5.0.3(7a023178195d4c93a1fbc35d1eea4768) + transitivePeerDependencies: + - '@dataplan/json' + - '@dataplan/pg' + - '@envelop/core' + - '@fastify/websocket' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - '@whatwg-node/server' + - 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-types@3.12.0': + dependencies: + '@pgpmjs/types': 2.29.0 + deepmerge: 4.3.1 + graphile-config: 1.0.1 + pg-env: 1.16.0 + transitivePeerDependencies: + - supports-color + '@constructive-io/job-pg@2.5.4': dependencies: '@constructive-io/job-utils': 2.5.4 @@ -4773,6 +6929,48 @@ snapshots: transitivePeerDependencies: - debug + '@constructive-io/s3-streamer@2.26.0': + dependencies: + '@aws-sdk/client-s3': 3.1063.0 + '@aws-sdk/lib-storage': 3.1063.0(@aws-sdk/client-s3@3.1063.0) + '@constructive-io/content-type-stream': 2.18.0 + '@constructive-io/s3-utils': 2.18.0 + '@pgpmjs/types': 2.29.0 + + '@constructive-io/s3-utils@2.18.0': + dependencies: + '@aws-sdk/client-s3': 3.1063.0 + '@aws-sdk/lib-storage': 3.1063.0(@aws-sdk/client-s3@3.1063.0) + '@aws-sdk/s3-request-presigner': 3.1063.0 + + '@constructive-io/upload-names@2.17.0': {} + + '@dataplan/json@1.0.0(grafast@1.0.2(graphql@16.13.0))': + dependencies: + chalk: 4.1.2 + grafast: 1.0.2(graphql@16.13.0) + tslib: 2.8.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.21.0)': + dependencies: + '@dataplan/json': 1.0.0(grafast@1.0.2(graphql@16.13.0)) + '@graphile/lru': 5.0.0 + '@types/node': 22.19.3 + chalk: 4.1.2 + debug: 4.4.3(supports-color@5.5.0) + eventemitter3: 5.0.4 + grafast: 1.0.2(graphql@16.13.0) + graphile-config: 1.0.1 + graphql: 16.13.0 + pg-sql2: 5.0.1 + postgres-array: 3.0.4 + postgres-range: 1.1.4 + tslib: 2.8.1 + optionalDependencies: + pg: 8.21.0 + transitivePeerDependencies: + - supports-color + '@emnapi/core@1.8.1': dependencies: '@emnapi/wasi-threads': 1.1.0 @@ -5001,9 +7199,131 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 - '@graphql-typed-document-node/core@3.2.0(graphql@16.12.0)': + '@floating-ui/core@1.7.5': + dependencies: + '@floating-ui/utils': 0.2.11 + + '@floating-ui/dom@1.7.6': + dependencies: + '@floating-ui/core': 1.7.5 + '@floating-ui/utils': 0.2.11 + + '@floating-ui/react-dom@2.1.8(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + dependencies: + '@floating-ui/dom': 1.7.6 + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + + '@floating-ui/react@0.26.28(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + dependencies: + '@floating-ui/react-dom': 2.1.8(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@floating-ui/utils': 0.2.11 + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + tabbable: 6.4.0 + + '@floating-ui/utils@0.2.11': {} + + '@graphile-contrib/pg-many-to-many@2.0.0-rc.2': {} + + '@graphile/lru@5.0.0': + dependencies: + tslib: 2.8.1 + + '@graphiql/plugin-doc-explorer@0.4.2(@graphiql/react@0.37.6(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0))(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)))(@types/react@19.2.17)(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7))': + dependencies: + '@graphiql/react': 0.37.6(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0))(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)) + '@headlessui/react': 2.2.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + graphql: 16.13.0 + react: 19.2.7 + react-compiler-runtime: 19.1.0-rc.1(react@19.2.7) + react-dom: 19.2.7(react@19.2.7) + zustand: 5.0.14(@types/react@19.2.17)(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)) + transitivePeerDependencies: + - '@types/react' + - immer + - use-sync-external-store + + '@graphiql/plugin-history@0.4.2(@graphiql/react@0.37.6(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0))(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)))(@types/node@22.19.3)(@types/react@19.2.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0))(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7))': + dependencies: + '@graphiql/react': 0.37.6(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0))(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)) + '@graphiql/toolkit': 0.12.0(@types/node@22.19.3)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0))(graphql@16.13.0) + react: 19.2.7 + react-compiler-runtime: 19.1.0-rc.1(react@19.2.7) + react-dom: 19.2.7(react@19.2.7) + zustand: 5.0.14(@types/react@19.2.17)(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)) + transitivePeerDependencies: + - '@types/node' + - '@types/react' + - graphql + - graphql-ws + - immer + - use-sync-external-store + + '@graphiql/react@0.37.6(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0))(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7))': + dependencies: + '@graphiql/toolkit': 0.12.0(@types/node@22.19.3)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0))(graphql@16.13.0) + '@radix-ui/react-dialog': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-dropdown-menu': 2.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-tooltip': 1.2.9(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-visually-hidden': 1.2.5(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + clsx: 1.2.1 + framer-motion: 12.40.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + get-value: 3.0.1 + graphql: 16.13.0 + graphql-language-service: 5.5.2(graphql@16.13.0) + jsonc-parser: 3.3.1 + markdown-it: 14.2.0 + monaco-editor: 0.52.2 + monaco-graphql: 1.8.0(graphql@16.13.0)(monaco-editor@0.52.2)(prettier@3.7.4) + prettier: 3.7.4 + react: 19.2.7 + react-compiler-runtime: 19.1.0-rc.1(react@19.2.7) + react-dom: 19.2.7(react@19.2.7) + set-value: 4.1.0 + zustand: 5.0.14(@types/react@19.2.17)(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)) + transitivePeerDependencies: + - '@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.3)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0))(graphql@16.13.0)': + dependencies: + '@n1ru4l/push-pull-async-iterable-iterator': 3.2.0 + graphql: 16.13.0 + meros: 1.3.2(@types/node@22.19.3) + optionalDependencies: + graphql-ws: 6.0.8(graphql@16.13.0)(ws@8.21.0) + transitivePeerDependencies: + - '@types/node' + + '@graphiql/toolkit@0.12.0(@types/node@22.19.3)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0))(graphql@16.13.0)': + dependencies: + '@n1ru4l/push-pull-async-iterable-iterator': 3.2.0 + graphql: 16.13.0 + meros: 1.3.2(@types/node@22.19.3) + optionalDependencies: + graphql-ws: 6.0.8(graphql@16.13.0)(ws@8.21.0) + transitivePeerDependencies: + - '@types/node' + + '@graphql-typed-document-node/core@3.2.0(graphql@16.13.0)': + dependencies: + graphql: 16.13.0 + + '@headlessui/react@2.2.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: - graphql: 16.12.0 + '@floating-ui/react': 0.26.28(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@react-aria/focus': 3.22.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@react-aria/interactions': 3.28.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@tanstack/react-virtual': 3.14.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + use-sync-external-store: 1.6.0(react@19.2.7) '@humanfs/core@0.19.1': {} @@ -5016,6 +7336,24 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} + '@inquirerer/utils@3.3.7': + dependencies: + appstash: 0.7.0 + inquirerer: 4.8.1 + semver: 7.8.2 + + '@internationalized/date@3.12.2': + dependencies: + '@swc/helpers': 0.5.23 + + '@internationalized/number@3.6.7': + dependencies: + '@swc/helpers': 0.5.23 + + '@internationalized/string@3.2.9': + dependencies: + '@swc/helpers': 0.5.23 + '@isaacs/balanced-match@4.0.1': {} '@isaacs/brace-expansion@5.0.1': @@ -5398,64 +7736,487 @@ snapshots: '@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 + + '@launchql/mjml@0.1.1(@babel/core@7.28.5)(react-dom@19.2.7(react@19.2.7))(react-is@18.3.1)(react@19.2.7)': + dependencies: + '@babel/runtime': 7.28.4 + mjml: 4.7.1 + mjml-react: 1.0.59(mjml@4.7.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + styled-components: 5.3.11(@babel/core@7.28.5)(react-dom@19.2.7(react@19.2.7))(react-is@18.3.1)(react@19.2.7) + styled-system: 5.1.5 + transitivePeerDependencies: + - '@babel/core' + - encoding + - react-is + + '@launchql/styled-email@0.1.0(@babel/core@7.28.5)(react-dom@19.2.7(react@19.2.7))(react-is@18.3.1)(react@19.2.7)': + dependencies: + '@babel/runtime': 7.28.4 + juice: 7.0.0 + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + styled-components: 5.3.11(@babel/core@7.28.5)(react-dom@19.2.7(react@19.2.7))(react-is@18.3.1)(react@19.2.7) + styled-system: 5.1.5 + transitivePeerDependencies: + - '@babel/core' + - encoding + - react-is + + '@n1ru4l/push-pull-async-iterable-iterator@3.2.0': {} + + '@napi-rs/wasm-runtime@0.2.12': + dependencies: + '@emnapi/core': 1.8.1 + '@emnapi/runtime': 1.8.1 + '@tybys/wasm-util': 0.10.1 + optional: true + + '@nodable/entities@2.1.1': {} + + '@one-ini/wasm@0.1.1': {} + + '@oxfmt/binding-android-arm-eabi@0.51.0': + optional: true + + '@oxfmt/binding-android-arm64@0.51.0': + optional: true + + '@oxfmt/binding-darwin-arm64@0.51.0': + optional: true + + '@oxfmt/binding-darwin-x64@0.51.0': + optional: true + + '@oxfmt/binding-freebsd-x64@0.51.0': + optional: true + + '@oxfmt/binding-linux-arm-gnueabihf@0.51.0': + optional: true + + '@oxfmt/binding-linux-arm-musleabihf@0.51.0': + optional: true + + '@oxfmt/binding-linux-arm64-gnu@0.51.0': + optional: true + + '@oxfmt/binding-linux-arm64-musl@0.51.0': + optional: true + + '@oxfmt/binding-linux-ppc64-gnu@0.51.0': + optional: true + + '@oxfmt/binding-linux-riscv64-gnu@0.51.0': + optional: true + + '@oxfmt/binding-linux-riscv64-musl@0.51.0': + optional: true + + '@oxfmt/binding-linux-s390x-gnu@0.51.0': + optional: true + + '@oxfmt/binding-linux-x64-gnu@0.51.0': + optional: true + + '@oxfmt/binding-linux-x64-musl@0.51.0': + optional: true + + '@oxfmt/binding-openharmony-arm64@0.51.0': + optional: true + + '@oxfmt/binding-win32-arm64-msvc@0.51.0': + optional: true + + '@oxfmt/binding-win32-ia32-msvc@0.51.0': + optional: true + + '@oxfmt/binding-win32-x64-msvc@0.51.0': + optional: true + + '@pgpmjs/core@6.24.0': + dependencies: + '@pgpmjs/env': 2.25.0 + '@pgpmjs/logger': 2.12.0 + '@pgpmjs/server-utils': 3.13.0 + '@pgpmjs/types': 2.29.0 + 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.21.0 + pg-cache: 3.12.0 + pg-env: 1.16.0 + pgsql-deparser: 17.18.3 + pgsql-parser: 17.9.15 + yanse: 0.2.1 + transitivePeerDependencies: + - pg-native + - supports-color + + '@pgpmjs/env@2.17.0': + dependencies: + '@pgpmjs/types': 2.21.0 + deepmerge: 4.3.1 + + '@pgpmjs/env@2.25.0': + dependencies: + '@pgpmjs/types': 2.29.0 + deepmerge: 4.3.1 + + '@pgpmjs/logger@2.12.0': + dependencies: + yanse: 0.2.1 + + '@pgpmjs/logger@2.5.2': + dependencies: + yanse: 0.2.1 + + '@pgpmjs/server-utils@3.13.0': + dependencies: + '@pgpmjs/logger': 2.12.0 + '@pgpmjs/types': 2.29.0 + cors: 2.8.6 + express: 5.2.1 + lru-cache: 11.3.0 + transitivePeerDependencies: + - supports-color + + '@pgpmjs/types@2.21.0': + dependencies: + pg-env: 1.8.2 + + '@pgpmjs/types@2.29.0': + dependencies: + pg-env: 1.16.0 + + '@pgsql/quotes@17.1.0': {} + + '@pgsql/types@17.6.2': {} + + '@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': {} + + '@radix-ui/primitive@1.1.4': {} + + '@radix-ui/react-arrow@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + dependencies: + '@radix-ui/react-primitive': 2.1.5(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + optionalDependencies: + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-collection@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-primitive': 2.1.5(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-slot': 1.2.5(@types/react@19.2.17)(react@19.2.7) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + optionalDependencies: + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-compose-refs@1.1.3(@types/react@19.2.17)(react@19.2.7)': + dependencies: + react: 19.2.7 + optionalDependencies: + '@types/react': 19.2.17 + + '@radix-ui/react-context@1.1.4(@types/react@19.2.17)(react@19.2.7)': + dependencies: + react: 19.2.7 + optionalDependencies: + '@types/react': 19.2.17 + + '@radix-ui/react-dialog@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + dependencies: + '@radix-ui/primitive': 1.1.4 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-dismissable-layer': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-focus-guards': 1.1.4(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-focus-scope': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-portal': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-presence': 1.1.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-primitive': 2.1.5(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-slot': 1.2.5(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.7) + aria-hidden: 1.2.6 + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + react-remove-scroll: 2.7.2(@types/react@19.2.17)(react@19.2.7) + optionalDependencies: + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-direction@1.1.2(@types/react@19.2.17)(react@19.2.7)': + dependencies: + react: 19.2.7 + optionalDependencies: + '@types/react': 19.2.17 + + '@radix-ui/react-dismissable-layer@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + dependencies: + '@radix-ui/primitive': 1.1.4 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-primitive': 2.1.5(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-use-callback-ref': 1.1.2(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-use-escape-keydown': 1.1.2(@types/react@19.2.17)(react@19.2.7) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + optionalDependencies: + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-dropdown-menu@2.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + dependencies: + '@radix-ui/primitive': 1.1.4 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-menu': 2.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-primitive': 2.1.5(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.7) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + optionalDependencies: + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-focus-guards@1.1.4(@types/react@19.2.17)(react@19.2.7)': + dependencies: + react: 19.2.7 + optionalDependencies: + '@types/react': 19.2.17 + + '@radix-ui/react-focus-scope@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-primitive': 2.1.5(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-use-callback-ref': 1.1.2(@types/react@19.2.17)(react@19.2.7) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + optionalDependencies: + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-id@1.1.2(@types/react@19.2.17)(react@19.2.7)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.7) + react: 19.2.7 + optionalDependencies: + '@types/react': 19.2.17 + + '@radix-ui/react-menu@2.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + dependencies: + '@radix-ui/primitive': 1.1.4 + '@radix-ui/react-collection': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-dismissable-layer': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-focus-guards': 1.1.4(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-focus-scope': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-popper': 1.3.0(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-portal': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-presence': 1.1.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-primitive': 2.1.5(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-roving-focus': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-slot': 1.2.5(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-use-callback-ref': 1.1.2(@types/react@19.2.17)(react@19.2.7) + aria-hidden: 1.2.6 + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + react-remove-scroll: 2.7.2(@types/react@19.2.17)(react@19.2.7) + optionalDependencies: + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-popper@1.3.0(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + dependencies: + '@floating-ui/react-dom': 2.1.8(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-arrow': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-primitive': 2.1.5(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-use-callback-ref': 1.1.2(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-use-rect': 1.1.2(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-use-size': 1.1.2(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/rect': 1.1.2 + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + optionalDependencies: + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-portal@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + dependencies: + '@radix-ui/react-primitive': 2.1.5(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.7) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + optionalDependencies: + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-presence@1.1.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.7) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + optionalDependencies: + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-primitive@2.1.5(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + dependencies: + '@radix-ui/react-slot': 1.2.5(@types/react@19.2.17)(react@19.2.7) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + optionalDependencies: + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-roving-focus@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + dependencies: + '@radix-ui/primitive': 1.1.4 + '@radix-ui/react-collection': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-direction': 1.1.2(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-primitive': 2.1.5(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-use-callback-ref': 1.1.2(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.7) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + optionalDependencies: + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-slot@1.2.5(@types/react@19.2.17)(react@19.2.7)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.7) + react: 19.2.7 + optionalDependencies: + '@types/react': 19.2.17 + + '@radix-ui/react-tooltip@1.2.9(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + dependencies: + '@radix-ui/primitive': 1.1.4 + '@radix-ui/react-compose-refs': 1.1.3(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-context': 1.1.4(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-dismissable-layer': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-id': 1.1.2(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-popper': 1.3.0(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-portal': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-presence': 1.1.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-primitive': 2.1.5(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/react-slot': 1.2.5(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-use-controllable-state': 1.2.3(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-visually-hidden': 1.2.5(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + optionalDependencies: + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + + '@radix-ui/react-use-callback-ref@1.1.2(@types/react@19.2.17)(react@19.2.7)': + dependencies: + react: 19.2.7 + optionalDependencies: + '@types/react': 19.2.17 + + '@radix-ui/react-use-controllable-state@1.2.3(@types/react@19.2.17)(react@19.2.7)': + dependencies: + '@radix-ui/react-use-effect-event': 0.0.3(@types/react@19.2.17)(react@19.2.7) + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.7) + react: 19.2.7 + optionalDependencies: + '@types/react': 19.2.17 + + '@radix-ui/react-use-effect-event@0.0.3(@types/react@19.2.17)(react@19.2.7)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.7) + react: 19.2.7 + optionalDependencies: + '@types/react': 19.2.17 + + '@radix-ui/react-use-escape-keydown@1.1.2(@types/react@19.2.17)(react@19.2.7)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.2(@types/react@19.2.17)(react@19.2.7) + react: 19.2.7 + optionalDependencies: + '@types/react': 19.2.17 + + '@radix-ui/react-use-layout-effect@1.1.2(@types/react@19.2.17)(react@19.2.7)': dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 + react: 19.2.7 + optionalDependencies: + '@types/react': 19.2.17 - '@launchql/mjml@0.1.1(@babel/core@7.28.5)(react-dom@19.2.7(react@19.2.7))(react-is@18.3.1)(react@19.2.7)': + '@radix-ui/react-use-rect@1.1.2(@types/react@19.2.17)(react@19.2.7)': dependencies: - '@babel/runtime': 7.28.4 - mjml: 4.7.1 - mjml-react: 1.0.59(mjml@4.7.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@radix-ui/rect': 1.1.2 react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) - styled-components: 5.3.11(@babel/core@7.28.5)(react-dom@19.2.7(react@19.2.7))(react-is@18.3.1)(react@19.2.7) - styled-system: 5.1.5 - transitivePeerDependencies: - - '@babel/core' - - encoding - - react-is + optionalDependencies: + '@types/react': 19.2.17 - '@launchql/styled-email@0.1.0(@babel/core@7.28.5)(react-dom@19.2.7(react@19.2.7))(react-is@18.3.1)(react@19.2.7)': + '@radix-ui/react-use-size@1.1.2(@types/react@19.2.17)(react@19.2.7)': dependencies: - '@babel/runtime': 7.28.4 - juice: 7.0.0 + '@radix-ui/react-use-layout-effect': 1.1.2(@types/react@19.2.17)(react@19.2.7) react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) - styled-components: 5.3.11(@babel/core@7.28.5)(react-dom@19.2.7(react@19.2.7))(react-is@18.3.1)(react@19.2.7) - styled-system: 5.1.5 - transitivePeerDependencies: - - '@babel/core' - - encoding - - react-is + optionalDependencies: + '@types/react': 19.2.17 - '@napi-rs/wasm-runtime@0.2.12': + '@radix-ui/react-visually-hidden@1.2.5(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: - '@emnapi/core': 1.8.1 - '@emnapi/runtime': 1.8.1 - '@tybys/wasm-util': 0.10.1 - optional: true + '@radix-ui/react-primitive': 2.1.5(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + optionalDependencies: + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@one-ini/wasm@0.1.1': {} + '@radix-ui/rect@1.1.2': {} - '@pgpmjs/env@2.17.0': + '@react-aria/focus@3.22.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: - '@pgpmjs/types': 2.21.0 - deepmerge: 4.3.1 + '@swc/helpers': 0.5.23 + react: 19.2.7 + react-aria: 3.49.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + react-dom: 19.2.7(react@19.2.7) - '@pgpmjs/logger@2.5.2': + '@react-aria/interactions@3.28.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: - yanse: 0.2.1 + '@react-types/shared': 3.35.0(react@19.2.7) + '@swc/helpers': 0.5.23 + react: 19.2.7 + react-aria: 3.49.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + react-dom: 19.2.7(react@19.2.7) - '@pgpmjs/types@2.21.0': + '@react-types/shared@3.35.0(react@19.2.7)': dependencies: - pg-env: 1.8.2 - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@pkgr/core@0.2.9': {} + react: 19.2.7 '@rolldown/pluginutils@1.0.0-beta.27': {} @@ -5550,6 +8311,54 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 + '@smithy/core@3.24.6': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@smithy/credential-provider-imds@4.3.8': + dependencies: + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@smithy/fetch-http-handler@5.4.6': + dependencies: + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@smithy/is-array-buffer@2.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/node-http-handler@4.7.7': + dependencies: + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@smithy/signature-v4@5.4.6': + dependencies: + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@smithy/types@4.14.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-utf8@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.8.1 + '@styled-system/background@5.1.2': dependencies: '@styled-system/core': 5.1.2 @@ -5601,6 +8410,10 @@ snapshots: '@styled-system/core': 5.1.2 '@styled-system/css': 5.1.5 + '@swc/helpers@0.5.23': + dependencies: + tslib: 2.8.1 + '@tailwindcss/node@4.3.0': dependencies: '@jridgewell/remapping': 2.3.5 @@ -5669,6 +8482,14 @@ snapshots: tailwindcss: 4.3.0 vite: 6.4.3(@types/node@22.19.3)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) + '@tanstack/react-virtual@3.14.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + dependencies: + '@tanstack/virtual-core': 3.17.0 + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + + '@tanstack/virtual-core@3.17.0': {} + '@tybys/wasm-util@0.10.1': dependencies: tslib: 2.8.1 @@ -5708,6 +8529,27 @@ snapshots: dependencies: '@types/node': 22.19.3 + '@types/d3-color@3.1.3': {} + + '@types/d3-drag@3.0.7': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-selection@3.0.11': {} + + '@types/d3-transition@3.0.9': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-zoom@3.0.8': + dependencies: + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.11 + '@types/estree@1.0.8': {} '@types/estree@1.0.9': {} @@ -5765,6 +8607,8 @@ snapshots: pg-protocol: 1.13.0 pg-types: 2.2.0 + '@types/pluralize@0.0.33': {} + '@types/qs@6.14.0': {} '@types/range-parser@1.2.7': {} @@ -5779,6 +8623,8 @@ snapshots: '@types/retry@0.12.5': {} + '@types/semver@7.7.1': {} + '@types/send@1.2.1': dependencies: '@types/node': 22.19.3 @@ -5970,8 +8816,35 @@ snapshots: '@xterm/xterm@5.5.0': {} + '@xyflow/react@12.11.0(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + dependencies: + '@xyflow/system': 0.0.77 + classcat: 5.0.5 + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + zustand: 4.5.7(@types/react@19.2.17)(react@19.2.7) + optionalDependencies: + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + transitivePeerDependencies: + - immer + + '@xyflow/system@0.0.77': + dependencies: + '@types/d3-drag': 3.0.7 + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.11 + '@types/d3-transition': 3.0.9 + '@types/d3-zoom': 3.0.8 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-zoom: 3.0.0 + abbrev@2.0.0: {} + accept-language-parser@1.5.0: {} + accepts@1.3.8: dependencies: mime-types: 2.1.35 @@ -5995,6 +8868,13 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + ajv@8.20.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.2 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + ansi-colors@4.1.3: {} ansi-escapes@4.3.2: @@ -6026,6 +8906,10 @@ snapshots: argparse@2.0.1: {} + aria-hidden@1.2.6: + dependencies: + tslib: 2.8.1 + array-flatten@1.1.1: {} async-retry@1.3.3: @@ -6036,7 +8920,7 @@ snapshots: axios@1.13.5: dependencies: - follow-redirects: 1.15.11 + follow-redirects: 1.15.11(debug@4.4.3) form-data: 4.0.5 proxy-from-env: 1.1.0 transitivePeerDependencies: @@ -6149,8 +9033,12 @@ snapshots: balanced-match@1.0.2: {} + balanced-match@4.0.4: {} + base-64@1.0.0: {} + base64-js@1.5.1: {} + baseline-browser-mapping@2.9.11: {} binary-extensions@2.3.0: {} @@ -6188,6 +9076,8 @@ snapshots: boolbase@1.0.0: {} + bowser@2.14.1: {} + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -6197,6 +9087,10 @@ snapshots: dependencies: balanced-match: 1.0.2 + brace-expansion@5.0.6: + dependencies: + balanced-match: 4.0.4 + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -6217,8 +9111,15 @@ snapshots: dependencies: node-int64: 0.4.0 + buffer-equal-constant-time@1.0.1: {} + buffer-from@1.1.2: {} + buffer@5.6.0: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + bytes@3.1.2: {} call-bind-apply-helpers@1.0.2: @@ -6305,6 +9206,8 @@ snapshots: cjs-module-lexer@2.2.0: {} + classcat@5.0.5: {} + clean-css@4.2.4: dependencies: source-map: 0.6.1 @@ -6321,6 +9224,10 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + clsx@1.2.1: {} + + clsx@2.1.1: {} + co@4.6.0: {} collect-v8-coverage@1.0.3: {} @@ -6379,6 +9286,11 @@ snapshots: core-js@2.6.12: {} + cors@2.8.6: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + create-jest@29.7.0(@types/node@22.19.3): dependencies: '@jest/types': 29.6.3 @@ -6433,6 +9345,57 @@ snapshots: csstype@3.2.3: {} + csv-parse@6.2.1: {} + + csv-parser@3.2.1: {} + + csv-to-pg@3.18.0: + dependencies: + '@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 + + d3-color@3.1.0: {} + + d3-dispatch@3.0.1: {} + + d3-drag@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + d3-ease@3.0.1: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-selection@3.0.0: {} + + d3-timer@3.0.1: {} + + d3-transition@3.0.1(d3-selection@3.0.0): + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + debounce-promise@3.1.2: {} + debug@2.6.9: dependencies: ms: 2.0.0 @@ -6461,6 +9424,8 @@ snapshots: detect-newline@3.1.0: {} + detect-node-es@1.1.0: {} + diff-sequences@29.6.3: {} dom-serializer@0.1.1: @@ -6535,6 +9500,10 @@ snapshots: eastasianwidth@0.2.0: {} + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 + editorconfig@1.0.4: dependencies: '@one-ini/wasm': 0.1.1 @@ -6747,8 +9716,16 @@ snapshots: esutils@2.0.3: {} + etag-hash@2.18.0: {} + etag@1.8.1: {} + eventemitter3@4.0.7: {} + + eventemitter3@5.0.4: {} + + events@3.3.0: {} + execa@5.1.1: dependencies: cross-spawn: 7.0.6 @@ -6857,6 +9834,20 @@ snapshots: fast-levenshtein@2.0.6: {} + fast-uri@3.1.2: {} + + fast-xml-builder@1.2.0: + dependencies: + path-expression-matcher: 1.5.0 + xml-naming: 0.1.0 + + fast-xml-parser@5.7.3: + dependencies: + '@nodable/entities': 2.1.1 + fast-xml-builder: 1.2.0 + path-expression-matcher: 1.5.0 + strnum: 2.3.0 + fb-watchman@2.0.2: dependencies: bser: 2.1.1 @@ -6915,7 +9906,9 @@ snapshots: flatted@3.3.3: {} - follow-redirects@1.15.11: {} + follow-redirects@1.15.11(debug@4.4.3): + optionalDependencies: + debug: 4.4.3(supports-color@5.5.0) foreground-child@3.3.1: dependencies: @@ -6932,6 +9925,16 @@ snapshots: forwarded@0.2.0: {} + framer-motion@12.40.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7): + dependencies: + motion-dom: 12.40.0 + motion-utils: 12.39.0 + tslib: 2.8.1 + optionalDependencies: + '@emotion/is-prop-valid': 1.4.0 + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + fresh@0.5.2: {} fresh@2.0.0: {} @@ -6948,6 +9951,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: {} @@ -6965,6 +9973,8 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 + get-nonce@1.0.1: {} + get-package-type@0.1.0: {} get-proto@1.0.1: @@ -6978,6 +9988,10 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + get-value@3.0.1: + dependencies: + isobject: 3.0.1 + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -7004,34 +10018,400 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 2.0.1 - glob@7.2.3: + glob@13.0.6: + dependencies: + minimatch: 10.2.5 + minipass: 7.1.3 + path-scurry: 2.0.2 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@14.0.0: {} + + globals@16.5.0: {} + + gopd@1.2.0: {} + + gql-ast@3.11.0: + dependencies: + graphql: 16.13.0 + + graceful-fs@4.2.11: {} + + grafast@1.0.2(graphql@16.13.0): + dependencies: + '@graphile/lru': 5.0.0 + chalk: 4.1.2 + debug: 4.4.3(supports-color@5.5.0) + eventemitter3: 5.0.4 + 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.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7))(ws@8.21.0): + dependencies: + '@graphile/lru': 5.0.0 + debug: 4.4.3(supports-color@5.5.0) + eventemitter3: 5.0.4 + 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.21.0) + ruru: 2.0.0(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(debug@4.4.3)(graphile-config@1.0.1)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0))(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)) + tslib: 2.8.1 + optionalDependencies: + ws: 8.21.0 + transitivePeerDependencies: + - '@fastify/websocket' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - crossws + - immer + - react + - react-dom + - supports-color + - use-sync-external-store + + graphile-bucket-provisioner-plugin@0.12.0(812b7ac64d9d06f05bf7e2000857be24): + dependencies: + '@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.21.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.21.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.21.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.21.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.21.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.3(7a023178195d4c93a1fbc35d1eea4768) + + 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.21.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.21.0)(tamedevil@0.1.1): + dependencies: + '@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.21.0) + '@types/node': 22.19.3 + debug: 4.4.3(supports-color@5.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-config: 1.0.1 + graphql: 16.13.0 + jsonwebtoken: 9.0.3 + pg-introspection: 1.0.1 + pg-sql2: 5.0.1 + tamedevil: 0.1.1 + tslib: 2.8.1 + optionalDependencies: + pg: 8.21.0 + transitivePeerDependencies: + - supports-color + + 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.3 + '@types/pluralize': 0.0.33 + '@types/semver': 7.7.1 + chalk: 4.1.2 + debug: 4.4.3(supports-color@5.5.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.3 + tamedevil: 0.1.1 + transliteration: 2.6.1 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + graphile-bulk-mutations@0.5.4(@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.21.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.21.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.21.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(7a023178195d4c93a1fbc35d1eea4768)): + dependencies: + '@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.21.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.21.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.21.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 + graphql: 16.13.0 + pg-sql2: 5.0.1 + postgraphile: 5.0.3(7a023178195d4c93a1fbc35d1eea4768) + + graphile-config@1.0.1: + dependencies: + chalk: 4.1.2 + debug: 4.4.3(supports-color@5.5.0) + interpret: 3.1.1 + semver: 7.7.3 + tslib: 2.8.1 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + + graphile-connection-filter@1.12.4(@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.21.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.21.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.21.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(7a023178195d4c93a1fbc35d1eea4768)): + dependencies: + '@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.21.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.21.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.21.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 + graphql: 16.13.0 + pg-sql2: 5.0.1 + postgraphile: 5.0.3(7a023178195d4c93a1fbc35d1eea4768) + + graphile-i18n@1.2.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.21.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.21.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.21.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(7a023178195d4c93a1fbc35d1eea4768)): + dependencies: + '@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.21.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.21.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.21.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 + graphql: 16.13.0 + pg-sql2: 5.0.1 + postgraphile: 5.0.3(7a023178195d4c93a1fbc35d1eea4768) + + graphile-ltree@1.9.4(7d8f18e2308a48b38606a97f6f4edb65): + dependencies: + '@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.21.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.21.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.21.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 + graphql: 16.13.0 + pg-sql2: 5.0.1 + postgraphile: 5.0.3(7a023178195d4c93a1fbc35d1eea4768) + optionalDependencies: + graphile-connection-filter: 1.12.4(@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.21.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.21.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.21.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(7a023178195d4c93a1fbc35d1eea4768)) + + graphile-pg-aggregates@1.5.4(7d8f18e2308a48b38606a97f6f4edb65): + dependencies: + '@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.21.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.21.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.21.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 + graphile-connection-filter: 1.12.4(@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.21.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.21.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.21.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(7a023178195d4c93a1fbc35d1eea4768)) + graphql: 16.13.0 + pg-sql2: 5.0.1 + postgraphile: 5.0.3(7a023178195d4c93a1fbc35d1eea4768) + + graphile-postgis@2.18.4(7d8f18e2308a48b38606a97f6f4edb65): + dependencies: + '@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.21.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.21.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.21.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 + graphql: 16.13.0 + pg-sql2: 5.0.1 + postgraphile: 5.0.3(7a023178195d4c93a1fbc35d1eea4768) + optionalDependencies: + graphile-connection-filter: 1.12.4(@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.21.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.21.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.21.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(7a023178195d4c93a1fbc35d1eea4768)) + + graphile-presigned-url-plugin@0.20.0(812b7ac64d9d06f05bf7e2000857be24): + dependencies: + '@aws-sdk/client-s3': 3.1063.0 + '@aws-sdk/s3-request-presigner': 3.1063.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.21.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.21.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.21.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.21.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.21.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.0 + postgraphile: 5.0.3(7a023178195d4c93a1fbc35d1eea4768) + + graphile-realtime-subscriptions@0.8.0(812b7ac64d9d06f05bf7e2000857be24): + dependencies: + '@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.21.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.21.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.21.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.21.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.21.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.3(7a023178195d4c93a1fbc35d1eea4768) + + graphile-schema@1.22.5(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(grafast@1.0.2(graphql@16.13.0))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7))(ws@8.21.0): dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 + deepmerge: 4.3.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 + graphile-settings: 5.6.4(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7))(ws@8.21.0) + graphql: 16.13.0 + pg-cache: 3.12.0 + pg-env: 1.16.0 + transitivePeerDependencies: + - '@envelop/core' + - '@fastify/websocket' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - '@whatwg-node/server' + - bufferutil + - crossws + - grafast + - h3 + - hono + - immer + - pg-native + - react + - react-dom + - supports-color + - use-sync-external-store + - utf-8-validate + - ws + + graphile-search@1.15.4(@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.21.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.21.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.21.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(7a023178195d4c93a1fbc35d1eea4768)): + dependencies: + '@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.21.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.21.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.21.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 + graphql: 16.13.0 + pg-sql2: 5.0.1 + postgraphile: 5.0.3(7a023178195d4c93a1fbc35d1eea4768) + + graphile-settings@5.6.4(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7))(ws@8.21.0): + dependencies: + '@aws-sdk/client-s3': 3.1063.0 + '@constructive-io/bucket-provisioner': 0.12.0 + '@constructive-io/graphql-env': 3.13.0 + '@constructive-io/graphql-types': 3.12.0 + '@constructive-io/s3-streamer': 2.26.0 + '@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.21.0) + '@graphile-contrib/pg-many-to-many': 2.0.0-rc.2 + '@pgpmjs/logger': 2.12.0 + '@pgpmjs/types': 2.29.0 + '@pgsql/quotes': 17.1.0 + cors: 2.8.6 + express: 5.2.1 + grafast: 1.0.2(graphql@16.13.0) + grafserv: 1.0.0(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7))(ws@8.21.0) + graphile-bucket-provisioner-plugin: 0.12.0(812b7ac64d9d06f05bf7e2000857be24) + 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.21.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.21.0)(tamedevil@0.1.1) + graphile-bulk-mutations: 0.5.4(@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.21.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.21.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.21.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(7a023178195d4c93a1fbc35d1eea4768)) + graphile-config: 1.0.1 + graphile-connection-filter: 1.12.4(@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.21.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.21.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.21.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(7a023178195d4c93a1fbc35d1eea4768)) + graphile-i18n: 1.2.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.21.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.21.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.21.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(7a023178195d4c93a1fbc35d1eea4768)) + graphile-ltree: 1.9.4(7d8f18e2308a48b38606a97f6f4edb65) + graphile-pg-aggregates: 1.5.4(7d8f18e2308a48b38606a97f6f4edb65) + graphile-postgis: 2.18.4(7d8f18e2308a48b38606a97f6f4edb65) + graphile-presigned-url-plugin: 0.20.0(812b7ac64d9d06f05bf7e2000857be24) + graphile-realtime-subscriptions: 0.8.0(812b7ac64d9d06f05bf7e2000857be24) + graphile-search: 1.15.4(@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.21.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.21.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.21.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(7a023178195d4c93a1fbc35d1eea4768)) + graphile-upload-plugin: 2.12.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.21.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.21.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(7a023178195d4c93a1fbc35d1eea4768)) + 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.21.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.21.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.21.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.0 + pg: 8.21.0 + pg-query-context: 2.17.0 + pg-sql2: 5.0.1 + postgraphile: 5.0.3(7a023178195d4c93a1fbc35d1eea4768) + request-ip: 3.3.0 + tamedevil: 0.1.1 + transitivePeerDependencies: + - '@envelop/core' + - '@fastify/websocket' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - '@whatwg-node/server' + - bufferutil + - crossws + - h3 + - hono + - immer + - pg-native + - react + - react-dom + - supports-color + - use-sync-external-store + - utf-8-validate + - ws - globals@14.0.0: {} + graphile-upload-plugin@2.12.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.21.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.21.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(7a023178195d4c93a1fbc35d1eea4768)): + dependencies: + 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.21.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.21.0)(tamedevil@0.1.1) + graphile-config: 1.0.1 + graphql: 16.13.0 + postgraphile: 5.0.3(7a023178195d4c93a1fbc35d1eea4768) - globals@16.5.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.21.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.21.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.21.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.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.21.0) + debug: 4.4.3(supports-color@5.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-config: 1.0.1 + graphql: 16.13.0 + json5: 2.2.3 + tamedevil: 0.1.1 + tslib: 2.8.1 + optionalDependencies: + 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.21.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.21.0)(tamedevil@0.1.1) + transitivePeerDependencies: + - supports-color - gopd@1.2.0: {} + graphiql@5.2.3(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0))(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)): + dependencies: + '@graphiql/plugin-doc-explorer': 0.4.2(@graphiql/react@0.37.6(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0))(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)))(@types/react@19.2.17)(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)) + '@graphiql/plugin-history': 0.4.2(@graphiql/react@0.37.6(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0))(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)))(@types/node@22.19.3)(@types/react@19.2.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0))(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)) + '@graphiql/react': 0.37.6(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0))(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)) + graphql: 16.13.0 + react: 19.2.7 + react-compiler-runtime: 19.1.0-rc.1(react@19.2.7) + react-dom: 19.2.7(react@19.2.7) + transitivePeerDependencies: + - '@emotion/is-prop-valid' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - graphql-ws + - immer + - use-sync-external-store - graceful-fs@4.2.11: {} + graphql-language-service@5.5.2(graphql@16.13.0): + dependencies: + debounce-promise: 3.1.2 + graphql: 16.13.0 + nullthrows: 1.1.1 + vscode-languageserver-types: 3.18.0 - graphql-request@7.4.0(graphql@16.12.0): + graphql-request@7.4.0(graphql@16.13.0): dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.12.0) - graphql: 16.12.0 + '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.0) + graphql: 16.13.0 - graphql-tag@2.12.6(graphql@16.12.0): + graphql-tag@2.12.6(graphql@16.13.0): dependencies: - graphql: 16.12.0 + graphql: 16.13.0 tslib: 2.8.1 - graphql@16.12.0: {} + graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0): + dependencies: + graphql: 16.13.0 + optionalDependencies: + ws: 8.21.0 + + graphql@16.13.0: {} handlebars@4.7.8: dependencies: @@ -7105,6 +10485,14 @@ snapshots: statuses: 2.0.2 toidentifier: 1.0.1 + http-proxy@1.18.1(debug@4.4.3): + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.11(debug@4.4.3) + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + human-signals@2.1.0: {} iconv-lite@0.4.24: @@ -7119,6 +10507,8 @@ snapshots: dependencies: safer-buffer: 2.1.2 + ieee754@1.2.1: {} + ignore@5.3.2: {} ignore@7.0.5: {} @@ -7135,6 +10525,13 @@ snapshots: imurmurhash@0.1.4: {} + inflection@3.0.2: {} + + inflekt@0.7.1: + dependencies: + inflection: 3.0.2 + komoji: 0.9.0 + inflight@1.0.6: dependencies: once: 1.4.0 @@ -7151,6 +10548,8 @@ snapshots: minimist: 1.2.8 yanse: 0.2.1 + interpret@3.1.1: {} + ipaddr.js@1.9.1: {} is-arrayish@0.2.1: {} @@ -7175,12 +10574,20 @@ snapshots: is-number@7.0.0: {} + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + + is-primitive@3.0.1: {} + is-promise@4.0.0: {} is-stream@2.0.1: {} isexe@2.0.0: {} + isobject@3.0.1: {} + istanbul-lib-coverage@3.2.2: {} istanbul-lib-instrument@5.2.1: @@ -7230,6 +10637,8 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 + iterall@1.3.0: {} + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 @@ -7890,10 +11299,27 @@ snapshots: json-schema-traverse@0.4.1: {} + json-schema-traverse@1.0.0: {} + json-stable-stringify-without-jsonify@1.0.1: {} json5@2.2.3: {} + jsonc-parser@3.3.1: {} + + jsonwebtoken@9.0.3: + dependencies: + jws: 4.0.1 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 + ms: 2.1.3 + semver: 7.7.3 + juice@7.0.0: dependencies: cheerio: 1.1.2 @@ -7904,12 +11330,25 @@ snapshots: transitivePeerDependencies: - encoding + jwa@2.0.1: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + + jws@4.0.1: + dependencies: + jwa: 2.0.1 + safe-buffer: 5.2.1 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 kleur@3.0.3: {} + komoji@0.9.0: {} + kubernetesjs@0.7.7: {} leven@3.1.0: {} @@ -7919,6 +11358,10 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + libpg-query@17.7.3: + dependencies: + '@pgsql/types': 17.6.2 + lightningcss-android-arm64@1.32.0: optional: true @@ -7970,6 +11413,10 @@ snapshots: lines-and-columns@1.2.4: {} + linkify-it@5.0.1: + dependencies: + uc.micro: 2.1.0 + locate-path@5.0.0: dependencies: p-locate: 4.1.0 @@ -7978,12 +11425,28 @@ snapshots: dependencies: p-locate: 5.0.0 + lodash.includes@4.3.0: {} + + lodash.isboolean@3.0.3: {} + + lodash.isinteger@4.0.4: {} + + lodash.isnumber@3.0.3: {} + + lodash.isplainobject@4.0.6: {} + + lodash.isstring@4.0.1: {} + lodash.memoize@4.1.2: {} lodash.merge@4.6.2: {} + lodash.once@4.1.1: {} + lodash@4.17.21: {} + lodash@4.18.1: {} + long-timeout@0.1.1: {} loose-envify@1.4.0: @@ -8033,8 +11496,19 @@ snapshots: dependencies: tmpl: 1.0.5 + markdown-it@14.2.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.1 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + math-intrinsics@1.1.0: {} + mdurl@2.0.0: {} + media-typer@0.3.0: {} media-typer@1.1.0: {} @@ -8047,6 +11521,10 @@ snapshots: merge-stream@2.0.0: {} + meros@1.3.2(@types/node@22.19.3): + optionalDependencies: + '@types/node': 22.19.3 + methods@1.1.2: {} micromatch@4.0.8: @@ -8054,6 +11532,8 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + mime-bytes@0.18.0: {} + mime-db@1.52.0: {} mime-db@1.54.0: {} @@ -8076,6 +11556,10 @@ snapshots: dependencies: '@isaacs/brace-expansion': 5.0.1 + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.6 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 @@ -8092,6 +11576,8 @@ snapshots: minipass@7.1.2: {} + minipass@7.1.3: {} + mjml-accordion@4.7.1: dependencies: '@babel/runtime': 7.28.4 @@ -8385,6 +11871,22 @@ snapshots: transitivePeerDependencies: - encoding + monaco-editor@0.52.2: {} + + monaco-graphql@1.8.0(graphql@16.13.0)(monaco-editor@0.52.2)(prettier@3.7.4): + dependencies: + graphql: 16.13.0 + graphql-language-service: 5.5.2(graphql@16.13.0) + monaco-editor: 0.52.2 + picomatch-browser: 2.2.6 + prettier: 3.7.4 + + motion-dom@12.40.0: + dependencies: + motion-utils: 12.39.0 + + motion-utils@12.39.0: {} + ms@2.0.0: {} ms@2.1.3: {} @@ -8401,6 +11903,8 @@ snapshots: neo-async@2.6.2: {} + nested-obj@0.2.2: {} + no-case@2.3.2: dependencies: lower-case: 1.1.4 @@ -8439,6 +11943,8 @@ snapshots: dependencies: boolbase: 1.0.0 + nullthrows@1.1.1: {} + object-assign@4.1.1: {} object-inspect@1.13.4: {} @@ -8464,6 +11970,30 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + oxfmt@0.51.0: + dependencies: + tinypool: 2.1.0 + optionalDependencies: + '@oxfmt/binding-android-arm-eabi': 0.51.0 + '@oxfmt/binding-android-arm64': 0.51.0 + '@oxfmt/binding-darwin-arm64': 0.51.0 + '@oxfmt/binding-darwin-x64': 0.51.0 + '@oxfmt/binding-freebsd-x64': 0.51.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.51.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.51.0 + '@oxfmt/binding-linux-arm64-gnu': 0.51.0 + '@oxfmt/binding-linux-arm64-musl': 0.51.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.51.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.51.0 + '@oxfmt/binding-linux-riscv64-musl': 0.51.0 + '@oxfmt/binding-linux-s390x-gnu': 0.51.0 + '@oxfmt/binding-linux-x64-gnu': 0.51.0 + '@oxfmt/binding-linux-x64-musl': 0.51.0 + '@oxfmt/binding-openharmony-arm64': 0.51.0 + '@oxfmt/binding-win32-arm64-msvc': 0.51.0 + '@oxfmt/binding-win32-ia32-msvc': 0.51.0 + '@oxfmt/binding-win32-x64-msvc': 0.51.0 + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -8499,6 +12029,8 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + parse-package-name@1.0.0: {} + parse5-htmlparser2-tree-adapter@7.1.0: dependencies: domhandler: 5.0.3 @@ -8520,6 +12052,8 @@ snapshots: path-exists@4.0.0: {} + path-expression-matcher@1.5.0: {} + path-is-absolute@1.0.1: {} path-key@3.1.1: {} @@ -8536,10 +12070,25 @@ snapshots: lru-cache: 11.3.0 minipass: 7.1.2 + path-scurry@2.0.2: + dependencies: + lru-cache: 11.3.0 + minipass: 7.1.3 + path-to-regexp@0.1.13: {} path-to-regexp@8.3.0: {} + pg-cache@3.12.0: + dependencies: + '@pgpmjs/logger': 2.12.0 + '@pgpmjs/types': 2.29.0 + lru-cache: 11.3.0 + pg: 8.21.0 + pg-env: 1.16.0 + transitivePeerDependencies: + - pg-native + pg-cache@3.4.4: dependencies: '@pgpmjs/logger': 2.5.2 @@ -8553,18 +12102,56 @@ 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.13.0: {} + + pg-copy-streams@7.0.0: {} + + pg-env@1.16.0: {} + pg-env@1.8.2: {} pg-int8@1.0.1: {} + pg-introspection@1.0.1: + dependencies: + tslib: 2.8.1 + pg-pool@3.13.0(pg@8.20.0): dependencies: pg: 8.20.0 + pg-pool@3.14.0(pg@8.21.0): + dependencies: + pg: 8.21.0 + pg-protocol@1.13.0: {} + pg-protocol@1.14.0: {} + + pg-query-context@2.17.0: + dependencies: + pg: 8.21.0 + transitivePeerDependencies: + - pg-native + + pg-seed@0.15.0: + dependencies: + csv-parse: 6.2.1 + pg: 8.21.0 + pg-copy-streams: 7.0.0 + transitivePeerDependencies: + - pg-native + + pg-sql2@5.0.1: + dependencies: + '@graphile/lru': 5.0.0 + tslib: 2.8.1 + pg-types@2.2.0: dependencies: pg-int8: 1.0.1 @@ -8583,12 +12170,57 @@ snapshots: optionalDependencies: pg-cloudflare: 1.3.0 + pg@8.21.0: + dependencies: + pg-connection-string: 2.13.0 + pg-pool: 3.14.0(pg@8.21.0) + pg-protocol: 1.14.0 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.4.0 + pgpass@1.0.5: dependencies: split2: 4.2.0 + pgsql-client@3.16.4: + dependencies: + '@pgpmjs/core': 6.24.0 + '@pgpmjs/logger': 2.12.0 + '@pgpmjs/types': 2.29.0 + pg: 8.21.0 + pg-env: 1.16.0 + transitivePeerDependencies: + - pg-native + - supports-color + + pgsql-deparser@17.18.3: + dependencies: + '@pgsql/quotes': 17.1.0 + '@pgsql/types': 17.6.2 + + pgsql-parser@17.9.15: + dependencies: + '@pgsql/types': 17.6.2 + libpg-query: 17.7.3 + pgsql-deparser: 17.18.3 + + pgsql-seed@2.16.4: + dependencies: + '@pgpmjs/core': 6.24.0 + '@pgpmjs/env': 2.25.0 + pg: 8.21.0 + pg-env: 1.16.0 + pg-seed: 0.15.0 + transitivePeerDependencies: + - pg-native + - supports-color + picocolors@1.1.1: {} + picomatch-browser@2.2.6: {} + picomatch@2.3.1: {} picomatch@4.0.3: {} @@ -8599,6 +12231,8 @@ snapshots: dependencies: find-up: 4.1.0 + pluralize@7.0.0: {} + postcss-value-parser@4.2.0: {} postcss@8.5.15: @@ -8607,8 +12241,37 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postgraphile@5.0.3(7a023178195d4c93a1fbc35d1eea4768): + dependencies: + '@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.21.0) + '@graphile/lru': 5.0.0 + '@types/node': 22.19.3 + '@types/pg': 8.16.0 + debug: 4.4.3(supports-color@5.5.0) + grafast: 1.0.2(graphql@16.13.0) + grafserv: 1.0.0(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(grafast@1.0.2(graphql@16.13.0))(graphile-config@1.0.1)(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7))(ws@8.21.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.21.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.21.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.21.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.21.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.21.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.21.0 + pg-sql2: 5.0.1 + tamedevil: 0.1.1 + tslib: 2.8.1 + ws: 8.21.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + postgres-array@2.0.0: {} + postgres-array@3.0.4: {} + postgres-bytea@1.0.1: {} postgres-date@1.0.7: {} @@ -8617,6 +12280,8 @@ snapshots: dependencies: xtend: 4.0.2 + postgres-range@1.1.4: {} + prelude-ls@1.2.1: {} prettier@3.7.4: {} @@ -8647,6 +12312,8 @@ snapshots: proxy-from-env@1.1.0: {} + punycode.js@2.3.1: {} + punycode@2.3.1: {} pure-rand@6.1.0: {} @@ -8677,6 +12344,24 @@ snapshots: iconv-lite: 0.7.1 unpipe: 1.0.0 + react-aria@3.49.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7): + dependencies: + '@internationalized/date': 3.12.2 + '@internationalized/number': 3.6.7 + '@internationalized/string': 3.2.9 + '@react-types/shared': 3.35.0(react@19.2.7) + '@swc/helpers': 0.5.23 + aria-hidden: 1.2.6 + clsx: 2.1.1 + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + react-stately: 3.47.0(react@19.2.7) + use-sync-external-store: 1.6.0(react@19.2.7) + + react-compiler-runtime@19.1.0-rc.1(react@19.2.7): + dependencies: + react: 19.2.7 + react-dom@19.2.7(react@19.2.7): dependencies: react: 19.2.7 @@ -8688,6 +12373,43 @@ snapshots: react-refresh@0.17.0: {} + react-remove-scroll-bar@2.3.8(@types/react@19.2.17)(react@19.2.7): + dependencies: + react: 19.2.7 + react-style-singleton: 2.2.3(@types/react@19.2.17)(react@19.2.7) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.17 + + react-remove-scroll@2.7.2(@types/react@19.2.17)(react@19.2.7): + dependencies: + react: 19.2.7 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.17)(react@19.2.7) + react-style-singleton: 2.2.3(@types/react@19.2.17)(react@19.2.7) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.2.17)(react@19.2.7) + use-sidecar: 1.1.3(@types/react@19.2.17)(react@19.2.7) + optionalDependencies: + '@types/react': 19.2.17 + + react-stately@3.47.0(react@19.2.7): + dependencies: + '@internationalized/date': 3.12.2 + '@internationalized/number': 3.6.7 + '@internationalized/string': 3.2.9 + '@react-types/shared': 3.35.0(react@19.2.7) + '@swc/helpers': 0.5.23 + react: 19.2.7 + use-sync-external-store: 1.6.0(react@19.2.7) + + react-style-singleton@2.2.3(@types/react@19.2.17)(react@19.2.7): + dependencies: + get-nonce: 1.0.1 + react: 19.2.7 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.17 + react@19.2.7: {} readable-stream@3.6.2: @@ -8704,10 +12426,16 @@ snapshots: relateurl@0.2.7: {} + request-ip@3.3.0: {} + require-directory@2.1.1: {} + require-from-string@2.0.2: {} + require-main-filename@2.0.0: {} + requires-port@1.0.0: {} + resolve-cwd@3.0.0: dependencies: resolve-from: 5.0.0 @@ -8774,6 +12502,44 @@ snapshots: transitivePeerDependencies: - supports-color + ruru-types@2.0.0(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0))(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)): + dependencies: + '@graphiql/toolkit': 0.11.3(@types/node@22.19.3)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0))(graphql@16.13.0) + graphiql: 5.2.3(@emotion/is-prop-valid@1.4.0)(@types/node@22.19.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0))(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)) + graphql: 16.13.0 + optionalDependencies: + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + transitivePeerDependencies: + - '@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.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(debug@4.4.3)(graphile-config@1.0.1)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0))(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)): + dependencies: + '@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.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(graphql-ws@6.0.8(graphql@16.13.0)(ws@8.21.0))(graphql@16.13.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)) + tslib: 2.8.1 + yargs: 17.7.2 + optionalDependencies: + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + transitivePeerDependencies: + - '@types/node' + - '@types/react' + - '@types/react-dom' + - debug + - graphql-ws + - immer + - use-sync-external-store + rxjs@7.8.2: dependencies: tslib: 2.8.1 @@ -8788,6 +12554,8 @@ snapshots: semver@7.7.3: {} + semver@7.8.2: {} + send@0.19.2: dependencies: debug: 2.6.9 @@ -8842,6 +12610,11 @@ snapshots: set-blocking@2.0.0: {} + set-value@4.1.0: + dependencies: + is-plain-object: 2.0.4 + is-primitive: 3.0.1 + setprototypeof@1.2.0: {} shallowequal@1.1.0: {} @@ -8919,6 +12692,11 @@ snapshots: statuses@2.0.2: {} + stream-browserify@3.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + string-length@4.0.2: dependencies: char-regex: 1.0.2 @@ -8954,6 +12732,8 @@ snapshots: strip-json-comments@3.1.1: {} + strnum@2.3.0: {} + styled-components@5.3.11(@babel/core@7.28.5)(react-dom@19.2.7(react@19.2.7))(react-is@18.3.1)(react@19.2.7): dependencies: '@babel/helper-module-imports': 7.27.1(supports-color@5.5.0) @@ -9006,8 +12786,15 @@ snapshots: dependencies: '@pkgr/core': 0.2.9 + tabbable@6.4.0: {} + tailwindcss@4.3.0: {} + tamedevil@0.1.1: + dependencies: + '@graphile/lru': 5.0.0 + tslib: 2.8.1 + tapable@2.3.3: {} test-exclude@6.0.0: @@ -9021,6 +12808,8 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 + tinypool@2.1.0: {} + tmpl@1.0.5: {} to-regex-range@5.0.1: @@ -9031,6 +12820,8 @@ snapshots: tr46@0.0.3: {} + transliteration@2.6.1: {} + tree-kill@1.2.2: {} ts-api-utils@2.4.0(typescript@5.9.3): @@ -9120,6 +12911,8 @@ snapshots: typescript@5.9.3: {} + uc.micro@2.1.0: {} + uglify-js@3.4.10: dependencies: commander: 2.19.0 @@ -9129,6 +12922,8 @@ snapshots: undici@7.18.1: {} + undici@8.4.0: {} + unpipe@1.0.0: {} unrs-resolver@1.11.1: @@ -9169,10 +12964,31 @@ snapshots: url-join@4.0.1: {} + use-callback-ref@1.3.3(@types/react@19.2.17)(react@19.2.7): + dependencies: + react: 19.2.7 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.17 + + use-sidecar@1.1.3(@types/react@19.2.17)(react@19.2.7): + dependencies: + detect-node-es: 1.1.0 + react: 19.2.7 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.17 + + use-sync-external-store@1.6.0(react@19.2.7): + dependencies: + react: 19.2.7 + util-deprecate@1.0.2: {} utils-merge@1.0.1: {} + uuid-hash@2.17.0: {} + v8-to-istanbul@9.3.0: dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -9199,6 +13015,8 @@ snapshots: tsx: 4.21.0 yaml: 2.8.2 + vscode-languageserver-types@3.18.0: {} + walker@1.0.8: dependencies: makeerror: 1.0.12 @@ -9273,6 +13091,8 @@ snapshots: ws@8.21.0: {} + xml-naming@0.1.0: {} + xtend@4.0.2: {} y18n@4.0.3: {} @@ -9317,3 +13137,16 @@ snapshots: yargs-parser: 21.1.1 yocto-queue@0.1.0: {} + + zustand@4.5.7(@types/react@19.2.17)(react@19.2.7): + dependencies: + use-sync-external-store: 1.6.0(react@19.2.7) + optionalDependencies: + '@types/react': 19.2.17 + react: 19.2.7 + + zustand@5.0.14(@types/react@19.2.17)(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)): + optionalDependencies: + '@types/react': 19.2.17 + react: 19.2.7 + use-sync-external-store: 1.6.0(react@19.2.7) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 3383193b..baeca1c4 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -3,3 +3,4 @@ packages: - 'packages/*' - 'job/*' - 'www' + - 'sdk/*' diff --git a/sdk/functions-schema/README.md b/sdk/functions-schema/README.md new file mode 100644 index 00000000..a76c6550 --- /dev/null +++ b/sdk/functions-schema/README.md @@ -0,0 +1,33 @@ +# @constructive-io/functions-schema + +Exported GraphQL SDL for the constructive-functions infra schemas. + +This package deploys the `pgpm/constructive-infra` module to an **ephemeral** +PostgreSQL database, introspects it through PostGraphile (via `graphile-schema`), +and writes one `.graphql` SDL file per API target into `schemas/`. Those SDL +files are the input for ORM codegen in `@constructive-io/functions-sdk`. + +## Targets + +| Target | Postgres schema(s) | +| ------ | ------------------ | +| `infra` | `constructive_infra_public` | + +## Generate + +Requires a running PostgreSQL 18 (`pgpm docker start --image docker.io/constructiveio/postgres-plus:18`) +and `eval "$(pgpm env)"` so the ephemeral DB can be created. + +```bash +pnpm --filter @constructive-io/functions-schema run generate +# optional: per-table introspection JSON +pnpm --filter @constructive-io/functions-schema run generate:introspection +``` + +## Generated (do not edit) + +- `schemas/*.graphql` +- `src/index.ts` +- `introspection/*.json` + +Edit the pgpm source under `pgpm/constructive-infra`, then regenerate. diff --git a/sdk/functions-schema/package.json b/sdk/functions-schema/package.json new file mode 100644 index 00000000..531cd7aa --- /dev/null +++ b/sdk/functions-schema/package.json @@ -0,0 +1,48 @@ +{ + "name": "@constructive-io/functions-schema", + "version": "0.0.1", + "description": "Exported GraphQL SDL for constructive-functions infra schemas (constructive_infra_public)", + "author": "Constructive ", + "license": "SEE LICENSE IN LICENSE", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "dist", + "schemas", + "introspection", + "README.md" + ], + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/constructive-io/constructive-functions" + }, + "scripts": { + "build": "tsc -p tsconfig.json", + "clean": "rimraf dist", + "pregenerate": "rimraf schemas/*.graphql", + "generate": "pnpm run pregenerate && tsx scripts/generate-schemas.ts", + "generate:introspection": "rimraf introspection/*.json && tsx scripts/generate-introspection.ts", + "lint": "eslint . --fix" + }, + "keywords": [ + "graphql", + "schema", + "sdl", + "constructive", + "postgraphile", + "pgpm" + ], + "devDependencies": { + "@pgpmjs/core": "^6.21.0", + "@types/node": "^22.10.4", + "graphile-schema": "^1.22.1", + "pgsql-client": "^3.16.0", + "pgsql-seed": "^2.16.0", + "rimraf": "^5.0.10", + "tsx": "^4.19.0", + "typescript": "^5.1.6" + } +} diff --git a/sdk/functions-schema/schemas/infra.graphql b/sdk/functions-schema/schemas/infra.graphql new file mode 100644 index 00000000..6d4a31c1 --- /dev/null +++ b/sdk/functions-schema/schemas/infra.graphql @@ -0,0 +1,3072 @@ +"""The root query type which gives access points into the data universe.""" +type Query { + """ + Reads and enables pagination through a set of `PlatformSecretDefinition`. + """ + platformSecretDefinitions( + """Only read the first `n` values of the set.""" + first: Int + + """Only read the last `n` values of the set.""" + last: Int + + """ + Skip the first `n` values from our `after` cursor, an alternative to cursor + based pagination. May not be used with `last`. + """ + offset: Int + + """Read all values in the set before (above) this cursor.""" + before: Cursor + + """Read all values in the set after (below) this cursor.""" + after: Cursor + + """ + A filter to be used in determining which values should be returned by the collection. + """ + where: PlatformSecretDefinitionFilter + + """The method to use when ordering `PlatformSecretDefinition`.""" + orderBy: [PlatformSecretDefinitionOrderBy!] = [PRIMARY_KEY_ASC] + ): PlatformSecretDefinitionConnection + + """ + Reads and enables pagination through a set of `PlatformFunctionExecutionLog`. + """ + platformFunctionExecutionLogs( + """Only read the first `n` values of the set.""" + first: Int + + """Only read the last `n` values of the set.""" + last: Int + + """ + Skip the first `n` values from our `after` cursor, an alternative to cursor + based pagination. May not be used with `last`. + """ + offset: Int + + """Read all values in the set before (above) this cursor.""" + before: Cursor + + """Read all values in the set after (below) this cursor.""" + after: Cursor + + """ + A filter to be used in determining which values should be returned by the collection. + """ + where: PlatformFunctionExecutionLogFilter + + """The method to use when ordering `PlatformFunctionExecutionLog`.""" + orderBy: [PlatformFunctionExecutionLogOrderBy!] = [PRIMARY_KEY_ASC] + ): PlatformFunctionExecutionLogConnection + + """Reads and enables pagination through a set of `PlatformNamespace`.""" + platformNamespaces( + """Only read the first `n` values of the set.""" + first: Int + + """Only read the last `n` values of the set.""" + last: Int + + """ + Skip the first `n` values from our `after` cursor, an alternative to cursor + based pagination. May not be used with `last`. + """ + offset: Int + + """Read all values in the set before (above) this cursor.""" + before: Cursor + + """Read all values in the set after (below) this cursor.""" + after: Cursor + + """ + A filter to be used in determining which values should be returned by the collection. + """ + where: PlatformNamespaceFilter + + """The method to use when ordering `PlatformNamespace`.""" + orderBy: [PlatformNamespaceOrderBy!] = [PRIMARY_KEY_ASC] + ): PlatformNamespaceConnection + + """ + Reads and enables pagination through a set of `PlatformFunctionInvocation`. + """ + platformFunctionInvocations( + """Only read the first `n` values of the set.""" + first: Int + + """Only read the last `n` values of the set.""" + last: Int + + """ + Skip the first `n` values from our `after` cursor, an alternative to cursor + based pagination. May not be used with `last`. + """ + offset: Int + + """Read all values in the set before (above) this cursor.""" + before: Cursor + + """Read all values in the set after (below) this cursor.""" + after: Cursor + + """ + A filter to be used in determining which values should be returned by the collection. + """ + where: PlatformFunctionInvocationFilter + + """The method to use when ordering `PlatformFunctionInvocation`.""" + orderBy: [PlatformFunctionInvocationOrderBy!] = [PRIMARY_KEY_ASC] + ): PlatformFunctionInvocationConnection + + """ + Reads and enables pagination through a set of `PlatformNamespaceEvent`. + """ + platformNamespaceEvents( + """Only read the first `n` values of the set.""" + first: Int + + """Only read the last `n` values of the set.""" + last: Int + + """ + Skip the first `n` values from our `after` cursor, an alternative to cursor + based pagination. May not be used with `last`. + """ + offset: Int + + """Read all values in the set before (above) this cursor.""" + before: Cursor + + """Read all values in the set after (below) this cursor.""" + after: Cursor + + """ + A filter to be used in determining which values should be returned by the collection. + """ + where: PlatformNamespaceEventFilter + + """The method to use when ordering `PlatformNamespaceEvent`.""" + orderBy: [PlatformNamespaceEventOrderBy!] = [PRIMARY_KEY_ASC] + ): PlatformNamespaceEventConnection + + """ + Reads and enables pagination through a set of `PlatformFunctionDefinition`. + """ + platformFunctionDefinitions( + """Only read the first `n` values of the set.""" + first: Int + + """Only read the last `n` values of the set.""" + last: Int + + """ + Skip the first `n` values from our `after` cursor, an alternative to cursor + based pagination. May not be used with `last`. + """ + offset: Int + + """Read all values in the set before (above) this cursor.""" + before: Cursor + + """Read all values in the set after (below) this cursor.""" + after: Cursor + + """ + A filter to be used in determining which values should be returned by the collection. + """ + where: PlatformFunctionDefinitionFilter + + """The method to use when ordering `PlatformFunctionDefinition`.""" + orderBy: [PlatformFunctionDefinitionOrderBy!] = [PRIMARY_KEY_ASC] + ): PlatformFunctionDefinitionConnection + + """ + Metadata about the database schema, including tables, fields, indexes, and constraints. Useful for code generation tools. + """ + _meta: MetaSchema +} + +"""A connection to a list of `PlatformSecretDefinition` values.""" +type PlatformSecretDefinitionConnection { + """A list of `PlatformSecretDefinition` objects.""" + nodes: [PlatformSecretDefinition]! + + """ + A list of edges which contains the `PlatformSecretDefinition` and cursor to aid in pagination. + """ + edges: [PlatformSecretDefinitionEdge]! + + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """ + The count of *all* `PlatformSecretDefinition` you could get from the connection. + """ + totalCount: Int! +} + +""" +Global secret name registry — declares which secrets the platform recognizes. Actual values live in app_secrets. +""" +type PlatformSecretDefinition { + """Freeform metadata annotations for secret definitions""" + annotations: JSON! + createdAt: Datetime + + """Database that owns this resource (database-scoped isolation)""" + databaseId: UUID! + + """Human-readable description of what this secret is used for""" + description: String + id: UUID! + + """ + Whether this row was seeded as a built-in secret definition. Built-in rows are immutable. + """ + isBuiltIn: Boolean! + + """Key-value metadata for filtering and grouping secret definitions""" + labels: JSON! + + """Secret name (must match app_secrets.name for resolution)""" + name: String! + updatedAt: Datetime +} + +""" +Represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). +""" +scalar JSON + +""" +A point in time as described by the [ISO +8601](https://en.wikipedia.org/wiki/ISO_8601) and, if it has a timezone, [RFC +3339](https://datatracker.ietf.org/doc/html/rfc3339) standards. Input values +that do not conform to both ISO 8601 and RFC 3339 may be coerced, which may lead +to unexpected results. +""" +scalar Datetime + +""" +A universally unique identifier as defined by [RFC 4122](https://tools.ietf.org/html/rfc4122). +""" +scalar UUID + +"""A `PlatformSecretDefinition` edge in the connection.""" +type PlatformSecretDefinitionEdge { + """A cursor for use in pagination.""" + cursor: Cursor + + """The `PlatformSecretDefinition` at the end of the edge.""" + node: PlatformSecretDefinition +} + +"""A location in a connection that can be used for resuming pagination.""" +scalar Cursor + +"""Information about pagination in a connection.""" +type PageInfo { + """When paginating forwards, are there more items?""" + hasNextPage: Boolean! + + """When paginating backwards, are there more items?""" + hasPreviousPage: Boolean! + + """When paginating backwards, the cursor to continue.""" + startCursor: Cursor + + """When paginating forwards, the cursor to continue.""" + endCursor: Cursor +} + +""" +A filter to be used against `PlatformSecretDefinition` object types. All fields are combined with a logical ‘and.’ +""" +input PlatformSecretDefinitionFilter { + """Filter by the object’s `annotations` field.""" + annotations: JSONFilter + + """Filter by the object’s `createdAt` field.""" + createdAt: DatetimeFilter + + """Filter by the object’s `databaseId` field.""" + databaseId: UUIDFilter + + """Filter by the object’s `description` field.""" + description: StringFilter + + """Filter by the object’s `id` field.""" + id: UUIDFilter + + """Filter by the object’s `isBuiltIn` field.""" + isBuiltIn: BooleanFilter + + """Filter by the object’s `labels` field.""" + labels: JSONFilter + + """Filter by the object’s `name` field.""" + name: StringFilter + + """Filter by the object’s `updatedAt` field.""" + updatedAt: DatetimeFilter + + """Checks for all expressions in this list.""" + and: [PlatformSecretDefinitionFilter!] + + """Checks for any expressions in this list.""" + or: [PlatformSecretDefinitionFilter!] + + """Negates the expression.""" + not: PlatformSecretDefinitionFilter +} + +""" +A filter to be used against JSON fields. All fields are combined with a logical ‘and.’ +""" +input JSONFilter { + """ + Is null (if `true` is specified) or is not null (if `false` is specified). + """ + isNull: Boolean + + """Equal to the specified value.""" + equalTo: JSON + + """Not equal to the specified value.""" + notEqualTo: JSON + + """ + Not equal to the specified value, treating null like an ordinary value. + """ + distinctFrom: JSON + + """Equal to the specified value, treating null like an ordinary value.""" + notDistinctFrom: JSON + + """Included in the specified list.""" + in: [JSON!] + + """Not included in the specified list.""" + notIn: [JSON!] + + """Less than the specified value.""" + lessThan: JSON + + """Less than or equal to the specified value.""" + lessThanOrEqualTo: JSON + + """Greater than the specified value.""" + greaterThan: JSON + + """Greater than or equal to the specified value.""" + greaterThanOrEqualTo: JSON + + """Contains the specified JSON.""" + contains: JSON + + """Contains the specified key.""" + containsKey: String + + """Contains all of the specified keys.""" + containsAllKeys: [String!] + + """Contains any of the specified keys.""" + containsAnyKeys: [String!] + + """Contained by the specified JSON.""" + containedBy: JSON +} + +""" +A filter to be used against Datetime fields. All fields are combined with a logical ‘and.’ +""" +input DatetimeFilter { + """ + Is null (if `true` is specified) or is not null (if `false` is specified). + """ + isNull: Boolean + + """Equal to the specified value.""" + equalTo: Datetime + + """Not equal to the specified value.""" + notEqualTo: Datetime + + """ + Not equal to the specified value, treating null like an ordinary value. + """ + distinctFrom: Datetime + + """Equal to the specified value, treating null like an ordinary value.""" + notDistinctFrom: Datetime + + """Included in the specified list.""" + in: [Datetime!] + + """Not included in the specified list.""" + notIn: [Datetime!] + + """Less than the specified value.""" + lessThan: Datetime + + """Less than or equal to the specified value.""" + lessThanOrEqualTo: Datetime + + """Greater than the specified value.""" + greaterThan: Datetime + + """Greater than or equal to the specified value.""" + greaterThanOrEqualTo: Datetime +} + +""" +A filter to be used against UUID fields. All fields are combined with a logical ‘and.’ +""" +input UUIDFilter { + """ + Is null (if `true` is specified) or is not null (if `false` is specified). + """ + isNull: Boolean + + """Equal to the specified value.""" + equalTo: UUID + + """Not equal to the specified value.""" + notEqualTo: UUID + + """ + Not equal to the specified value, treating null like an ordinary value. + """ + distinctFrom: UUID + + """Equal to the specified value, treating null like an ordinary value.""" + notDistinctFrom: UUID + + """Included in the specified list.""" + in: [UUID!] + + """Not included in the specified list.""" + notIn: [UUID!] + + """Less than the specified value.""" + lessThan: UUID + + """Less than or equal to the specified value.""" + lessThanOrEqualTo: UUID + + """Greater than the specified value.""" + greaterThan: UUID + + """Greater than or equal to the specified value.""" + greaterThanOrEqualTo: UUID +} + +""" +A filter to be used against String fields. All fields are combined with a logical ‘and.’ +""" +input StringFilter { + """ + Is null (if `true` is specified) or is not null (if `false` is specified). + """ + isNull: Boolean + + """Equal to the specified value.""" + equalTo: String + + """Not equal to the specified value.""" + notEqualTo: String + + """ + Not equal to the specified value, treating null like an ordinary value. + """ + distinctFrom: String + + """Equal to the specified value, treating null like an ordinary value.""" + notDistinctFrom: String + + """Included in the specified list.""" + in: [String!] + + """Not included in the specified list.""" + notIn: [String!] + + """Less than the specified value.""" + lessThan: String + + """Less than or equal to the specified value.""" + lessThanOrEqualTo: String + + """Greater than the specified value.""" + greaterThan: String + + """Greater than or equal to the specified value.""" + greaterThanOrEqualTo: String + + """Contains the specified string (case-sensitive).""" + includes: String + + """Does not contain the specified string (case-sensitive).""" + notIncludes: String + + """Contains the specified string (case-insensitive).""" + includesInsensitive: String + + """Does not contain the specified string (case-insensitive).""" + notIncludesInsensitive: String + + """Starts with the specified string (case-sensitive).""" + startsWith: String + + """Does not start with the specified string (case-sensitive).""" + notStartsWith: String + + """Starts with the specified string (case-insensitive).""" + startsWithInsensitive: String + + """Does not start with the specified string (case-insensitive).""" + notStartsWithInsensitive: String + + """Ends with the specified string (case-sensitive).""" + endsWith: String + + """Does not end with the specified string (case-sensitive).""" + notEndsWith: String + + """Ends with the specified string (case-insensitive).""" + endsWithInsensitive: String + + """Does not end with the specified string (case-insensitive).""" + notEndsWithInsensitive: String + + """ + Matches the specified pattern (case-sensitive). An underscore (_) matches any single character; a percent sign (%) matches any sequence of zero or more characters. + """ + like: String + + """ + Does not match the specified pattern (case-sensitive). An underscore (_) matches any single character; a percent sign (%) matches any sequence of zero or more characters. + """ + notLike: String + + """ + Matches the specified pattern (case-insensitive). An underscore (_) matches any single character; a percent sign (%) matches any sequence of zero or more characters. + """ + likeInsensitive: String + + """ + Does not match the specified pattern (case-insensitive). An underscore (_) matches any single character; a percent sign (%) matches any sequence of zero or more characters. + """ + notLikeInsensitive: String + + """Equal to the specified value (case-insensitive).""" + equalToInsensitive: String + + """Not equal to the specified value (case-insensitive).""" + notEqualToInsensitive: String + + """ + Not equal to the specified value, treating null like an ordinary value (case-insensitive). + """ + distinctFromInsensitive: String + + """ + Equal to the specified value, treating null like an ordinary value (case-insensitive). + """ + notDistinctFromInsensitive: String + + """Included in the specified list (case-insensitive).""" + inInsensitive: [String!] + + """Not included in the specified list (case-insensitive).""" + notInInsensitive: [String!] + + """Less than the specified value (case-insensitive).""" + lessThanInsensitive: String + + """Less than or equal to the specified value (case-insensitive).""" + lessThanOrEqualToInsensitive: String + + """Greater than the specified value (case-insensitive).""" + greaterThanInsensitive: String + + """Greater than or equal to the specified value (case-insensitive).""" + greaterThanOrEqualToInsensitive: String +} + +""" +A filter to be used against Boolean fields. All fields are combined with a logical ‘and.’ +""" +input BooleanFilter { + """ + Is null (if `true` is specified) or is not null (if `false` is specified). + """ + isNull: Boolean + + """Equal to the specified value.""" + equalTo: Boolean + + """Not equal to the specified value.""" + notEqualTo: Boolean + + """ + Not equal to the specified value, treating null like an ordinary value. + """ + distinctFrom: Boolean + + """Equal to the specified value, treating null like an ordinary value.""" + notDistinctFrom: Boolean + + """Included in the specified list.""" + in: [Boolean!] + + """Not included in the specified list.""" + notIn: [Boolean!] + + """Less than the specified value.""" + lessThan: Boolean + + """Less than or equal to the specified value.""" + lessThanOrEqualTo: Boolean + + """Greater than the specified value.""" + greaterThan: Boolean + + """Greater than or equal to the specified value.""" + greaterThanOrEqualTo: Boolean +} + +"""Methods to use when ordering `PlatformSecretDefinition`.""" +enum PlatformSecretDefinitionOrderBy { + NATURAL + PRIMARY_KEY_ASC + PRIMARY_KEY_DESC + ANNOTATIONS_ASC + ANNOTATIONS_DESC + CREATED_AT_ASC + CREATED_AT_DESC + DATABASE_ID_ASC + DATABASE_ID_DESC + DESCRIPTION_ASC + DESCRIPTION_DESC + ID_ASC + ID_DESC + IS_BUILT_IN_ASC + IS_BUILT_IN_DESC + LABELS_ASC + LABELS_DESC + NAME_ASC + NAME_DESC + UPDATED_AT_ASC + UPDATED_AT_DESC +} + +"""A connection to a list of `PlatformFunctionExecutionLog` values.""" +type PlatformFunctionExecutionLogConnection { + """A list of `PlatformFunctionExecutionLog` objects.""" + nodes: [PlatformFunctionExecutionLog]! + + """ + A list of edges which contains the `PlatformFunctionExecutionLog` and cursor to aid in pagination. + """ + edges: [PlatformFunctionExecutionLogEdge]! + + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """ + The count of *all* `PlatformFunctionExecutionLog` you could get from the connection. + """ + totalCount: Int! +} + +"""Function execution logs — structured console output per invocation""" +type PlatformFunctionExecutionLog { + """Log entry timestamp (partition key)""" + createdAt: Datetime! + + """User who triggered the execution (NULL for system/cron)""" + actorId: UUID + + """Database this log entry belongs to""" + databaseId: UUID! + + """Unique log entry identifier""" + id: UUID! + + """Invocation this log entry belongs to (NULL for jobs)""" + invocationId: UUID + + """Log severity: debug, info, warn, error""" + logLevel: String! + + """Log message text""" + message: String! + + """Structured context (labels, trace data, extra fields)""" + metadata: JSON + + """Function routing key (NULL for generic job logs)""" + taskIdentifier: String +} + +"""A `PlatformFunctionExecutionLog` edge in the connection.""" +type PlatformFunctionExecutionLogEdge { + """A cursor for use in pagination.""" + cursor: Cursor + + """The `PlatformFunctionExecutionLog` at the end of the edge.""" + node: PlatformFunctionExecutionLog +} + +""" +A filter to be used against `PlatformFunctionExecutionLog` object types. All fields are combined with a logical ‘and.’ +""" +input PlatformFunctionExecutionLogFilter { + """Filter by the object’s `createdAt` field.""" + createdAt: DatetimeFilter + + """Filter by the object’s `actorId` field.""" + actorId: UUIDFilter + + """Filter by the object’s `databaseId` field.""" + databaseId: UUIDFilter + + """Filter by the object’s `id` field.""" + id: UUIDFilter + + """Filter by the object’s `invocationId` field.""" + invocationId: UUIDFilter + + """Filter by the object’s `logLevel` field.""" + logLevel: StringFilter + + """Filter by the object’s `message` field.""" + message: StringFilter + + """Filter by the object’s `metadata` field.""" + metadata: JSONFilter + + """Filter by the object’s `taskIdentifier` field.""" + taskIdentifier: StringFilter + + """Checks for all expressions in this list.""" + and: [PlatformFunctionExecutionLogFilter!] + + """Checks for any expressions in this list.""" + or: [PlatformFunctionExecutionLogFilter!] + + """Negates the expression.""" + not: PlatformFunctionExecutionLogFilter +} + +"""Methods to use when ordering `PlatformFunctionExecutionLog`.""" +enum PlatformFunctionExecutionLogOrderBy { + NATURAL + PRIMARY_KEY_ASC + PRIMARY_KEY_DESC + CREATED_AT_ASC + CREATED_AT_DESC + ACTOR_ID_ASC + ACTOR_ID_DESC + DATABASE_ID_ASC + DATABASE_ID_DESC + ID_ASC + ID_DESC + INVOCATION_ID_ASC + INVOCATION_ID_DESC + LOG_LEVEL_ASC + LOG_LEVEL_DESC + MESSAGE_ASC + MESSAGE_DESC + METADATA_ASC + METADATA_DESC + TASK_IDENTIFIER_ASC + TASK_IDENTIFIER_DESC +} + +"""A connection to a list of `PlatformNamespace` values.""" +type PlatformNamespaceConnection { + """A list of `PlatformNamespace` objects.""" + nodes: [PlatformNamespace]! + + """ + A list of edges which contains the `PlatformNamespace` and cursor to aid in pagination. + """ + edges: [PlatformNamespaceEdge]! + + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """ + The count of *all* `PlatformNamespace` you could get from the connection. + """ + totalCount: Int! +} + +""" +Logical namespace containers for grouping secrets, config, functions, and other resources +""" +type PlatformNamespace { + """Freeform metadata for tooling and operational notes""" + annotations: JSON! + createdAt: Datetime + + """Database that owns this resource (database-scoped isolation)""" + databaseId: UUID! + + """Optional human-readable description of this namespace""" + description: String + id: UUID! + + """Whether this namespace is active (soft-disable for filtering)""" + isActive: Boolean! + + """Key/value pairs for selecting and filtering namespaces""" + labels: JSON! + + """Human-readable namespace name (e.g. default, production, oauth)""" + name: String! + + """ + Globally unique computed namespace identifier via inflection.underscore + """ + namespaceName: String! + updatedAt: Datetime +} + +"""A `PlatformNamespace` edge in the connection.""" +type PlatformNamespaceEdge { + """A cursor for use in pagination.""" + cursor: Cursor + + """The `PlatformNamespace` at the end of the edge.""" + node: PlatformNamespace +} + +""" +A filter to be used against `PlatformNamespace` object types. All fields are combined with a logical ‘and.’ +""" +input PlatformNamespaceFilter { + """Filter by the object’s `annotations` field.""" + annotations: JSONFilter + + """Filter by the object’s `createdAt` field.""" + createdAt: DatetimeFilter + + """Filter by the object’s `databaseId` field.""" + databaseId: UUIDFilter + + """Filter by the object’s `description` field.""" + description: StringFilter + + """Filter by the object’s `id` field.""" + id: UUIDFilter + + """Filter by the object’s `isActive` field.""" + isActive: BooleanFilter + + """Filter by the object’s `labels` field.""" + labels: JSONFilter + + """Filter by the object’s `name` field.""" + name: StringFilter + + """Filter by the object’s `namespaceName` field.""" + namespaceName: StringFilter + + """Filter by the object’s `updatedAt` field.""" + updatedAt: DatetimeFilter + + """Checks for all expressions in this list.""" + and: [PlatformNamespaceFilter!] + + """Checks for any expressions in this list.""" + or: [PlatformNamespaceFilter!] + + """Negates the expression.""" + not: PlatformNamespaceFilter +} + +"""Methods to use when ordering `PlatformNamespace`.""" +enum PlatformNamespaceOrderBy { + NATURAL + PRIMARY_KEY_ASC + PRIMARY_KEY_DESC + ANNOTATIONS_ASC + ANNOTATIONS_DESC + CREATED_AT_ASC + CREATED_AT_DESC + DATABASE_ID_ASC + DATABASE_ID_DESC + DESCRIPTION_ASC + DESCRIPTION_DESC + ID_ASC + ID_DESC + IS_ACTIVE_ASC + IS_ACTIVE_DESC + LABELS_ASC + LABELS_DESC + NAME_ASC + NAME_DESC + NAMESPACE_NAME_ASC + NAMESPACE_NAME_DESC + UPDATED_AT_ASC + UPDATED_AT_DESC +} + +"""A connection to a list of `PlatformFunctionInvocation` values.""" +type PlatformFunctionInvocationConnection { + """A list of `PlatformFunctionInvocation` objects.""" + nodes: [PlatformFunctionInvocation]! + + """ + A list of edges which contains the `PlatformFunctionInvocation` and cursor to aid in pagination. + """ + edges: [PlatformFunctionInvocationEdge]! + + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """ + The count of *all* `PlatformFunctionInvocation` you could get from the connection. + """ + totalCount: Int! +} + +""" +Function invocation log — INSERT to call a function (business-layer, metered) +""" +type PlatformFunctionInvocation { + """Invocation creation timestamp (partition key)""" + createdAt: Datetime! + + """Who triggered the invocation""" + actorId: UUID + + """When execution completed""" + completedAt: Datetime + + """Database that owns this resource (database-scoped isolation)""" + databaseId: UUID! + + """Wall-clock execution time in milliseconds""" + durationMs: Int + + """Error message when status is failed""" + error: String + + """Resolved function definition ID""" + functionId: UUID + + """Unique invocation identifier""" + id: UUID! + + """FK to app_jobs.jobs — the underlying transport""" + jobId: BigInt + + """Function input payload""" + payload: JSON + + """Function return value (success) or structured error (failure)""" + result: JSON + + """When execution started""" + startedAt: Datetime + + """Lifecycle: pending → running → completed/failed/cancelled""" + status: String! + + """Routing slug (scope:name) for the job worker""" + taskIdentifier: String! +} + +""" +A signed eight-byte integer. The upper big integer values are greater than the +max value for a JavaScript number. Therefore all big integers will be output as +strings and not numbers. +""" +scalar BigInt + +"""A `PlatformFunctionInvocation` edge in the connection.""" +type PlatformFunctionInvocationEdge { + """A cursor for use in pagination.""" + cursor: Cursor + + """The `PlatformFunctionInvocation` at the end of the edge.""" + node: PlatformFunctionInvocation +} + +""" +A filter to be used against `PlatformFunctionInvocation` object types. All fields are combined with a logical ‘and.’ +""" +input PlatformFunctionInvocationFilter { + """Filter by the object’s `createdAt` field.""" + createdAt: DatetimeFilter + + """Filter by the object’s `actorId` field.""" + actorId: UUIDFilter + + """Filter by the object’s `completedAt` field.""" + completedAt: DatetimeFilter + + """Filter by the object’s `databaseId` field.""" + databaseId: UUIDFilter + + """Filter by the object’s `durationMs` field.""" + durationMs: IntFilter + + """Filter by the object’s `error` field.""" + error: StringFilter + + """Filter by the object’s `functionId` field.""" + functionId: UUIDFilter + + """Filter by the object’s `id` field.""" + id: UUIDFilter + + """Filter by the object’s `jobId` field.""" + jobId: BigIntFilter + + """Filter by the object’s `payload` field.""" + payload: JSONFilter + + """Filter by the object’s `result` field.""" + result: JSONFilter + + """Filter by the object’s `startedAt` field.""" + startedAt: DatetimeFilter + + """Filter by the object’s `status` field.""" + status: StringFilter + + """Filter by the object’s `taskIdentifier` field.""" + taskIdentifier: StringFilter + + """Checks for all expressions in this list.""" + and: [PlatformFunctionInvocationFilter!] + + """Checks for any expressions in this list.""" + or: [PlatformFunctionInvocationFilter!] + + """Negates the expression.""" + not: PlatformFunctionInvocationFilter +} + +""" +A filter to be used against Int fields. All fields are combined with a logical ‘and.’ +""" +input IntFilter { + """ + Is null (if `true` is specified) or is not null (if `false` is specified). + """ + isNull: Boolean + + """Equal to the specified value.""" + equalTo: Int + + """Not equal to the specified value.""" + notEqualTo: Int + + """ + Not equal to the specified value, treating null like an ordinary value. + """ + distinctFrom: Int + + """Equal to the specified value, treating null like an ordinary value.""" + notDistinctFrom: Int + + """Included in the specified list.""" + in: [Int!] + + """Not included in the specified list.""" + notIn: [Int!] + + """Less than the specified value.""" + lessThan: Int + + """Less than or equal to the specified value.""" + lessThanOrEqualTo: Int + + """Greater than the specified value.""" + greaterThan: Int + + """Greater than or equal to the specified value.""" + greaterThanOrEqualTo: Int +} + +""" +A filter to be used against BigInt fields. All fields are combined with a logical ‘and.’ +""" +input BigIntFilter { + """ + Is null (if `true` is specified) or is not null (if `false` is specified). + """ + isNull: Boolean + + """Equal to the specified value.""" + equalTo: BigInt + + """Not equal to the specified value.""" + notEqualTo: BigInt + + """ + Not equal to the specified value, treating null like an ordinary value. + """ + distinctFrom: BigInt + + """Equal to the specified value, treating null like an ordinary value.""" + notDistinctFrom: BigInt + + """Included in the specified list.""" + in: [BigInt!] + + """Not included in the specified list.""" + notIn: [BigInt!] + + """Less than the specified value.""" + lessThan: BigInt + + """Less than or equal to the specified value.""" + lessThanOrEqualTo: BigInt + + """Greater than the specified value.""" + greaterThan: BigInt + + """Greater than or equal to the specified value.""" + greaterThanOrEqualTo: BigInt +} + +"""Methods to use when ordering `PlatformFunctionInvocation`.""" +enum PlatformFunctionInvocationOrderBy { + NATURAL + PRIMARY_KEY_ASC + PRIMARY_KEY_DESC + CREATED_AT_ASC + CREATED_AT_DESC + ACTOR_ID_ASC + ACTOR_ID_DESC + COMPLETED_AT_ASC + COMPLETED_AT_DESC + DATABASE_ID_ASC + DATABASE_ID_DESC + DURATION_MS_ASC + DURATION_MS_DESC + ERROR_ASC + ERROR_DESC + FUNCTION_ID_ASC + FUNCTION_ID_DESC + ID_ASC + ID_DESC + JOB_ID_ASC + JOB_ID_DESC + PAYLOAD_ASC + PAYLOAD_DESC + RESULT_ASC + RESULT_DESC + STARTED_AT_ASC + STARTED_AT_DESC + STATUS_ASC + STATUS_DESC + TASK_IDENTIFIER_ASC + TASK_IDENTIFIER_DESC +} + +"""A connection to a list of `PlatformNamespaceEvent` values.""" +type PlatformNamespaceEventConnection { + """A list of `PlatformNamespaceEvent` objects.""" + nodes: [PlatformNamespaceEvent]! + + """ + A list of edges which contains the `PlatformNamespaceEvent` and cursor to aid in pagination. + """ + edges: [PlatformNamespaceEventEdge]! + + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """ + The count of *all* `PlatformNamespaceEvent` you could get from the connection. + """ + totalCount: Int! +} + +""" +Namespace lifecycle events — audit log of creation, activation, deactivation, label changes +""" +type PlatformNamespaceEvent { + """Event timestamp (partition key)""" + createdAt: Datetime! + + """User who triggered this event (NULL for system/automated)""" + actorId: UUID + + """CPU usage in millicores at time of event""" + cpuMillicores: Int + + """Database that owns this resource (database-scoped isolation)""" + databaseId: UUID! + + """ + Event type: created, activated, deactivated, labels_updated, annotations_updated, renamed + """ + eventType: String! + + """Unique event identifier""" + id: UUID! + + """Memory usage in bytes at time of event""" + memoryBytes: BigInt + + """Human-readable description of the event""" + message: String + + """Structured context (old/new values, labels diff, etc.)""" + metadata: JSON + + """Additional resource metrics (gpu, replicas, quotas, etc.)""" + metrics: JSON + + """Namespace this event belongs to""" + namespaceId: UUID! + + """Network egress in bytes during event window""" + networkEgressBytes: BigInt + + """Network ingress in bytes during event window""" + networkIngressBytes: BigInt + + """Number of active pods in the namespace at time of event""" + podCount: Int + + """Storage usage in bytes at time of event""" + storageBytes: BigInt +} + +"""A `PlatformNamespaceEvent` edge in the connection.""" +type PlatformNamespaceEventEdge { + """A cursor for use in pagination.""" + cursor: Cursor + + """The `PlatformNamespaceEvent` at the end of the edge.""" + node: PlatformNamespaceEvent +} + +""" +A filter to be used against `PlatformNamespaceEvent` object types. All fields are combined with a logical ‘and.’ +""" +input PlatformNamespaceEventFilter { + """Filter by the object’s `createdAt` field.""" + createdAt: DatetimeFilter + + """Filter by the object’s `actorId` field.""" + actorId: UUIDFilter + + """Filter by the object’s `cpuMillicores` field.""" + cpuMillicores: IntFilter + + """Filter by the object’s `databaseId` field.""" + databaseId: UUIDFilter + + """Filter by the object’s `eventType` field.""" + eventType: StringFilter + + """Filter by the object’s `id` field.""" + id: UUIDFilter + + """Filter by the object’s `memoryBytes` field.""" + memoryBytes: BigIntFilter + + """Filter by the object’s `message` field.""" + message: StringFilter + + """Filter by the object’s `metadata` field.""" + metadata: JSONFilter + + """Filter by the object’s `metrics` field.""" + metrics: JSONFilter + + """Filter by the object’s `namespaceId` field.""" + namespaceId: UUIDFilter + + """Filter by the object’s `networkEgressBytes` field.""" + networkEgressBytes: BigIntFilter + + """Filter by the object’s `networkIngressBytes` field.""" + networkIngressBytes: BigIntFilter + + """Filter by the object’s `podCount` field.""" + podCount: IntFilter + + """Filter by the object’s `storageBytes` field.""" + storageBytes: BigIntFilter + + """Checks for all expressions in this list.""" + and: [PlatformNamespaceEventFilter!] + + """Checks for any expressions in this list.""" + or: [PlatformNamespaceEventFilter!] + + """Negates the expression.""" + not: PlatformNamespaceEventFilter +} + +"""Methods to use when ordering `PlatformNamespaceEvent`.""" +enum PlatformNamespaceEventOrderBy { + NATURAL + PRIMARY_KEY_ASC + PRIMARY_KEY_DESC + CREATED_AT_ASC + CREATED_AT_DESC + ACTOR_ID_ASC + ACTOR_ID_DESC + CPU_MILLICORES_ASC + CPU_MILLICORES_DESC + DATABASE_ID_ASC + DATABASE_ID_DESC + EVENT_TYPE_ASC + EVENT_TYPE_DESC + ID_ASC + ID_DESC + MEMORY_BYTES_ASC + MEMORY_BYTES_DESC + MESSAGE_ASC + MESSAGE_DESC + METADATA_ASC + METADATA_DESC + METRICS_ASC + METRICS_DESC + NAMESPACE_ID_ASC + NAMESPACE_ID_DESC + NETWORK_EGRESS_BYTES_ASC + NETWORK_EGRESS_BYTES_DESC + NETWORK_INGRESS_BYTES_ASC + NETWORK_INGRESS_BYTES_DESC + POD_COUNT_ASC + POD_COUNT_DESC + STORAGE_BYTES_ASC + STORAGE_BYTES_DESC +} + +"""A connection to a list of `PlatformFunctionDefinition` values.""" +type PlatformFunctionDefinitionConnection { + """A list of `PlatformFunctionDefinition` objects.""" + nodes: [PlatformFunctionDefinition]! + + """ + A list of edges which contains the `PlatformFunctionDefinition` and cursor to aid in pagination. + """ + edges: [PlatformFunctionDefinitionEdge]! + + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """ + The count of *all* `PlatformFunctionDefinition` you could get from the connection. + """ + totalCount: Int! +} + +""" +Function definitions — registered cloud functions with routing, queue, and retry configuration +""" +type PlatformFunctionDefinition { + createdAt: Datetime + + """Human-readable description of what this function does""" + description: String + id: UUID! + + """ + Whether this function is a built-in platform function (synced from platform) vs user-created + """ + isBuiltIn: Boolean! + + """ + Whether this function can be called via function_invocations (public API). Default false = internal-only via add_job() + """ + isInvocable: Boolean! + + """Maximum retry attempts for the underlying job""" + maxAttempts: Int! + + """ + Function name within scope (e.g. send_verification_link, process_file_embedding) + """ + name: String! + + """Namespace this function belongs to (FK to namespaces table)""" + namespaceId: UUID + + """Job priority (lower = higher priority)""" + priority: Int! + + """Job queue name for serialization (e.g. email, ai, default)""" + queueName: String! + + """Function grouping scope (e.g. email, embed, chunk, custom)""" + scope: String! + + """ + Optional service URL override for function dispatch. NULL = use gateway convention (gatewayUrl/task_identifier). Set for customer-deployed functions or external endpoints. + """ + serviceUrl: String + + """ + Computed routing slug: scope:name (used by Knative job worker for dispatch) + """ + taskIdentifier: String! + updatedAt: Datetime + payloadSchema: JSON + + """Embedded config requirements: array of (name, required) tuples""" + requiredConfigs: [FunctionRequirement]! + + """Embedded secret requirements: array of (name, required) tuples""" + requiredSecrets: [FunctionRequirement]! + + """ + Reads a single `PlatformNamespace` that is related to this `PlatformFunctionDefinition`. + """ + namespace: PlatformNamespace +} + +type FunctionRequirement { + name: String + required: Boolean +} + +"""A `PlatformFunctionDefinition` edge in the connection.""" +type PlatformFunctionDefinitionEdge { + """A cursor for use in pagination.""" + cursor: Cursor + + """The `PlatformFunctionDefinition` at the end of the edge.""" + node: PlatformFunctionDefinition +} + +""" +A filter to be used against `PlatformFunctionDefinition` object types. All fields are combined with a logical ‘and.’ +""" +input PlatformFunctionDefinitionFilter { + """Filter by the object’s `createdAt` field.""" + createdAt: DatetimeFilter + + """Filter by the object’s `description` field.""" + description: StringFilter + + """Filter by the object’s `id` field.""" + id: UUIDFilter + + """Filter by the object’s `isBuiltIn` field.""" + isBuiltIn: BooleanFilter + + """Filter by the object’s `isInvocable` field.""" + isInvocable: BooleanFilter + + """Filter by the object’s `maxAttempts` field.""" + maxAttempts: IntFilter + + """Filter by the object’s `name` field.""" + name: StringFilter + + """Filter by the object’s `namespaceId` field.""" + namespaceId: UUIDFilter + + """Filter by the object’s `priority` field.""" + priority: IntFilter + + """Filter by the object’s `queueName` field.""" + queueName: StringFilter + + """Filter by the object’s `scope` field.""" + scope: StringFilter + + """Filter by the object’s `serviceUrl` field.""" + serviceUrl: StringFilter + + """Filter by the object’s `taskIdentifier` field.""" + taskIdentifier: StringFilter + + """Filter by the object’s `updatedAt` field.""" + updatedAt: DatetimeFilter + + """Filter by the object’s `payloadSchema` field.""" + payloadSchema: JSONFilter + + """Checks for all expressions in this list.""" + and: [PlatformFunctionDefinitionFilter!] + + """Checks for any expressions in this list.""" + or: [PlatformFunctionDefinitionFilter!] + + """Negates the expression.""" + not: PlatformFunctionDefinitionFilter + + """Filter by the object’s `namespace` relation.""" + namespace: PlatformNamespaceFilter + + """A related `namespace` exists.""" + namespaceExists: Boolean +} + +"""Methods to use when ordering `PlatformFunctionDefinition`.""" +enum PlatformFunctionDefinitionOrderBy { + NATURAL + PRIMARY_KEY_ASC + PRIMARY_KEY_DESC + CREATED_AT_ASC + CREATED_AT_DESC + DESCRIPTION_ASC + DESCRIPTION_DESC + ID_ASC + ID_DESC + IS_BUILT_IN_ASC + IS_BUILT_IN_DESC + IS_INVOCABLE_ASC + IS_INVOCABLE_DESC + MAX_ATTEMPTS_ASC + MAX_ATTEMPTS_DESC + NAME_ASC + NAME_DESC + NAMESPACE_ID_ASC + NAMESPACE_ID_DESC + PRIORITY_ASC + PRIORITY_DESC + QUEUE_NAME_ASC + QUEUE_NAME_DESC + SCOPE_ASC + SCOPE_DESC + SERVICE_URL_ASC + SERVICE_URL_DESC + TASK_IDENTIFIER_ASC + TASK_IDENTIFIER_DESC + UPDATED_AT_ASC + UPDATED_AT_DESC + PAYLOAD_SCHEMA_ASC + PAYLOAD_SCHEMA_DESC + REQUIRED_CONFIGS_ASC + REQUIRED_CONFIGS_DESC + REQUIRED_SECRETS_ASC + REQUIRED_SECRETS_DESC +} + +"""Root meta schema type""" +type MetaSchema { + tables: [MetaTable!]! +} + +"""Information about a database table""" +type MetaTable { + name: String! + schemaName: String! + fields: [MetaField!]! + indexes: [MetaIndex!]! + constraints: MetaConstraints! + foreignKeyConstraints: [MetaForeignKeyConstraint!]! + primaryKeyConstraints: [MetaPrimaryKeyConstraint!]! + uniqueConstraints: [MetaUniqueConstraint!]! + relations: MetaRelations! + inflection: MetaInflection! + query: MetaQuery! +} + +"""Information about a table field/column""" +type MetaField { + name: String! + type: MetaType! + isNotNull: Boolean! + hasDefault: Boolean! + isPrimaryKey: Boolean! + isForeignKey: Boolean! + description: String +} + +"""Information about a PostgreSQL type""" +type MetaType { + pgType: String! + gqlType: String! + isArray: Boolean! + isNotNull: Boolean + hasDefault: Boolean + subtype: String +} + +"""Information about a database index""" +type MetaIndex { + name: String! + isUnique: Boolean! + isPrimary: Boolean! + columns: [String!]! + fields: [MetaField!] +} + +"""Table constraints""" +type MetaConstraints { + primaryKey: MetaPrimaryKeyConstraint + unique: [MetaUniqueConstraint!]! + foreignKey: [MetaForeignKeyConstraint!]! +} + +"""Information about a primary key constraint""" +type MetaPrimaryKeyConstraint { + name: String! + fields: [MetaField!]! +} + +"""Information about a unique constraint""" +type MetaUniqueConstraint { + name: String! + fields: [MetaField!]! +} + +"""Information about a foreign key constraint""" +type MetaForeignKeyConstraint { + name: String! + fields: [MetaField!]! + referencedTable: String! + referencedFields: [String!]! + refFields: [MetaField!] + refTable: MetaRefTable +} + +"""Reference to a related table""" +type MetaRefTable { + name: String! +} + +"""Table relations""" +type MetaRelations { + belongsTo: [MetaBelongsToRelation!]! + has: [MetaHasRelation!]! + hasOne: [MetaHasRelation!]! + hasMany: [MetaHasRelation!]! + manyToMany: [MetaManyToManyRelation!]! +} + +"""A belongs-to (forward FK) relation""" +type MetaBelongsToRelation { + fieldName: String + isUnique: Boolean! + type: String + keys: [MetaField!]! + references: MetaRefTable! +} + +"""A has-one or has-many (reverse FK) relation""" +type MetaHasRelation { + fieldName: String + isUnique: Boolean! + type: String + keys: [MetaField!]! + referencedBy: MetaRefTable! +} + +"""A many-to-many relation via junction table""" +type MetaManyToManyRelation { + fieldName: String + type: String + junctionTable: MetaRefTable! + junctionLeftConstraint: MetaForeignKeyConstraint! + junctionLeftKeyAttributes: [MetaField!]! + junctionRightConstraint: MetaForeignKeyConstraint! + junctionRightKeyAttributes: [MetaField!]! + leftKeyAttributes: [MetaField!]! + rightKeyAttributes: [MetaField!]! + rightTable: MetaRefTable! +} + +"""Table inflection names""" +type MetaInflection { + tableType: String! + allRows: String! + connection: String! + edge: String! + filterType: String + orderByType: String! + conditionType: String! + patchType: String + createInputType: String! + createPayloadType: String! + updatePayloadType: String + deletePayloadType: String! +} + +"""Table query/mutation names""" +type MetaQuery { + all: String! + one: String + create: String + update: String + delete: String +} + +""" +The root mutation type which contains root level fields which mutate data. +""" +type Mutation { + """Creates a single `PlatformSecretDefinition`.""" + createPlatformSecretDefinition( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: CreatePlatformSecretDefinitionInput! + ): CreatePlatformSecretDefinitionPayload + + """Creates a single `PlatformFunctionExecutionLog`.""" + createPlatformFunctionExecutionLog( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: CreatePlatformFunctionExecutionLogInput! + ): CreatePlatformFunctionExecutionLogPayload + + """Creates a single `PlatformNamespace`.""" + createPlatformNamespace( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: CreatePlatformNamespaceInput! + ): CreatePlatformNamespacePayload + + """Creates a single `PlatformFunctionInvocation`.""" + createPlatformFunctionInvocation( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: CreatePlatformFunctionInvocationInput! + ): CreatePlatformFunctionInvocationPayload + + """Creates a single `PlatformNamespaceEvent`.""" + createPlatformNamespaceEvent( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: CreatePlatformNamespaceEventInput! + ): CreatePlatformNamespaceEventPayload + + """Creates a single `PlatformFunctionDefinition`.""" + createPlatformFunctionDefinition( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: CreatePlatformFunctionDefinitionInput! + ): CreatePlatformFunctionDefinitionPayload + + """ + Updates a single `PlatformSecretDefinition` using a unique key and a patch. + """ + updatePlatformSecretDefinition( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: UpdatePlatformSecretDefinitionInput! + ): UpdatePlatformSecretDefinitionPayload + + """ + Updates a single `PlatformFunctionExecutionLog` using a unique key and a patch. + """ + updatePlatformFunctionExecutionLog( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: UpdatePlatformFunctionExecutionLogInput! + ): UpdatePlatformFunctionExecutionLogPayload + + """Updates a single `PlatformNamespace` using a unique key and a patch.""" + updatePlatformNamespace( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: UpdatePlatformNamespaceInput! + ): UpdatePlatformNamespacePayload + + """ + Updates a single `PlatformFunctionInvocation` using a unique key and a patch. + """ + updatePlatformFunctionInvocation( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: UpdatePlatformFunctionInvocationInput! + ): UpdatePlatformFunctionInvocationPayload + + """ + Updates a single `PlatformNamespaceEvent` using a unique key and a patch. + """ + updatePlatformNamespaceEvent( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: UpdatePlatformNamespaceEventInput! + ): UpdatePlatformNamespaceEventPayload + + """ + Updates a single `PlatformFunctionDefinition` using a unique key and a patch. + """ + updatePlatformFunctionDefinition( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: UpdatePlatformFunctionDefinitionInput! + ): UpdatePlatformFunctionDefinitionPayload + + """Deletes a single `PlatformSecretDefinition` using a unique key.""" + deletePlatformSecretDefinition( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: DeletePlatformSecretDefinitionInput! + ): DeletePlatformSecretDefinitionPayload + + """Deletes a single `PlatformFunctionExecutionLog` using a unique key.""" + deletePlatformFunctionExecutionLog( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: DeletePlatformFunctionExecutionLogInput! + ): DeletePlatformFunctionExecutionLogPayload + + """Deletes a single `PlatformNamespace` using a unique key.""" + deletePlatformNamespace( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: DeletePlatformNamespaceInput! + ): DeletePlatformNamespacePayload + + """Deletes a single `PlatformFunctionInvocation` using a unique key.""" + deletePlatformFunctionInvocation( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: DeletePlatformFunctionInvocationInput! + ): DeletePlatformFunctionInvocationPayload + + """Deletes a single `PlatformNamespaceEvent` using a unique key.""" + deletePlatformNamespaceEvent( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: DeletePlatformNamespaceEventInput! + ): DeletePlatformNamespaceEventPayload + + """Deletes a single `PlatformFunctionDefinition` using a unique key.""" + deletePlatformFunctionDefinition( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: DeletePlatformFunctionDefinitionInput! + ): DeletePlatformFunctionDefinitionPayload + + """ + Provision an S3 bucket for a logical bucket in the database. + Reads the bucket config via RLS, then creates and configures + the S3 bucket with the appropriate privacy policies, CORS rules, + and lifecycle settings. + """ + provisionBucket( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: ProvisionBucketInput! + ): ProvisionBucketPayload +} + +"""The output of our create `PlatformSecretDefinition` mutation.""" +type CreatePlatformSecretDefinitionPayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """The `PlatformSecretDefinition` that was created by this mutation.""" + platformSecretDefinition: PlatformSecretDefinition + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + + """An edge for our `PlatformSecretDefinition`. May be used by Relay 1.""" + platformSecretDefinitionEdge( + """The method to use when ordering `PlatformSecretDefinition`.""" + orderBy: [PlatformSecretDefinitionOrderBy!]! = [PRIMARY_KEY_ASC] + ): PlatformSecretDefinitionEdge +} + +"""All input for the create `PlatformSecretDefinition` mutation.""" +input CreatePlatformSecretDefinitionInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + + """The `PlatformSecretDefinition` to be created by this mutation.""" + platformSecretDefinition: PlatformSecretDefinitionInput! +} + +"""An input for mutations affecting `PlatformSecretDefinition`""" +input PlatformSecretDefinitionInput { + """Freeform metadata annotations for secret definitions""" + annotations: JSON + createdAt: Datetime + + """Database that owns this resource (database-scoped isolation)""" + databaseId: UUID! + + """Human-readable description of what this secret is used for""" + description: String + id: UUID + + """ + Whether this row was seeded as a built-in secret definition. Built-in rows are immutable. + """ + isBuiltIn: Boolean + + """Key-value metadata for filtering and grouping secret definitions""" + labels: JSON + + """Secret name (must match app_secrets.name for resolution)""" + name: String! + updatedAt: Datetime +} + +"""The output of our create `PlatformFunctionExecutionLog` mutation.""" +type CreatePlatformFunctionExecutionLogPayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """The `PlatformFunctionExecutionLog` that was created by this mutation.""" + platformFunctionExecutionLog: PlatformFunctionExecutionLog + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + + """ + An edge for our `PlatformFunctionExecutionLog`. May be used by Relay 1. + """ + platformFunctionExecutionLogEdge( + """The method to use when ordering `PlatformFunctionExecutionLog`.""" + orderBy: [PlatformFunctionExecutionLogOrderBy!]! = [PRIMARY_KEY_ASC] + ): PlatformFunctionExecutionLogEdge +} + +"""All input for the create `PlatformFunctionExecutionLog` mutation.""" +input CreatePlatformFunctionExecutionLogInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + + """The `PlatformFunctionExecutionLog` to be created by this mutation.""" + platformFunctionExecutionLog: PlatformFunctionExecutionLogInput! +} + +"""An input for mutations affecting `PlatformFunctionExecutionLog`""" +input PlatformFunctionExecutionLogInput { + """Log entry timestamp (partition key)""" + createdAt: Datetime + + """User who triggered the execution (NULL for system/cron)""" + actorId: UUID + + """Database this log entry belongs to""" + databaseId: UUID! + + """Unique log entry identifier""" + id: UUID + + """Invocation this log entry belongs to (NULL for jobs)""" + invocationId: UUID + + """Log severity: debug, info, warn, error""" + logLevel: String + + """Log message text""" + message: String! + + """Structured context (labels, trace data, extra fields)""" + metadata: JSON + + """Function routing key (NULL for generic job logs)""" + taskIdentifier: String +} + +"""The output of our create `PlatformNamespace` mutation.""" +type CreatePlatformNamespacePayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """The `PlatformNamespace` that was created by this mutation.""" + platformNamespace: PlatformNamespace + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + + """An edge for our `PlatformNamespace`. May be used by Relay 1.""" + platformNamespaceEdge( + """The method to use when ordering `PlatformNamespace`.""" + orderBy: [PlatformNamespaceOrderBy!]! = [PRIMARY_KEY_ASC] + ): PlatformNamespaceEdge +} + +"""All input for the create `PlatformNamespace` mutation.""" +input CreatePlatformNamespaceInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + + """The `PlatformNamespace` to be created by this mutation.""" + platformNamespace: PlatformNamespaceInput! +} + +"""An input for mutations affecting `PlatformNamespace`""" +input PlatformNamespaceInput { + """Freeform metadata for tooling and operational notes""" + annotations: JSON + createdAt: Datetime + + """Database that owns this resource (database-scoped isolation)""" + databaseId: UUID! + + """Optional human-readable description of this namespace""" + description: String + id: UUID + + """Whether this namespace is active (soft-disable for filtering)""" + isActive: Boolean + + """Key/value pairs for selecting and filtering namespaces""" + labels: JSON + + """Human-readable namespace name (e.g. default, production, oauth)""" + name: String! + + """ + Globally unique computed namespace identifier via inflection.underscore + """ + namespaceName: String! + updatedAt: Datetime +} + +"""The output of our create `PlatformFunctionInvocation` mutation.""" +type CreatePlatformFunctionInvocationPayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """The `PlatformFunctionInvocation` that was created by this mutation.""" + platformFunctionInvocation: PlatformFunctionInvocation + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + + """An edge for our `PlatformFunctionInvocation`. May be used by Relay 1.""" + platformFunctionInvocationEdge( + """The method to use when ordering `PlatformFunctionInvocation`.""" + orderBy: [PlatformFunctionInvocationOrderBy!]! = [PRIMARY_KEY_ASC] + ): PlatformFunctionInvocationEdge +} + +"""All input for the create `PlatformFunctionInvocation` mutation.""" +input CreatePlatformFunctionInvocationInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + + """The `PlatformFunctionInvocation` to be created by this mutation.""" + platformFunctionInvocation: PlatformFunctionInvocationInput! +} + +"""An input for mutations affecting `PlatformFunctionInvocation`""" +input PlatformFunctionInvocationInput { + """Invocation creation timestamp (partition key)""" + createdAt: Datetime + + """Who triggered the invocation""" + actorId: UUID + + """When execution completed""" + completedAt: Datetime + + """Database that owns this resource (database-scoped isolation)""" + databaseId: UUID! + + """Wall-clock execution time in milliseconds""" + durationMs: Int + + """Error message when status is failed""" + error: String + + """Resolved function definition ID""" + functionId: UUID + + """Unique invocation identifier""" + id: UUID + + """FK to app_jobs.jobs — the underlying transport""" + jobId: BigInt + + """Function input payload""" + payload: JSON + + """Function return value (success) or structured error (failure)""" + result: JSON + + """When execution started""" + startedAt: Datetime + + """Lifecycle: pending → running → completed/failed/cancelled""" + status: String + + """Routing slug (scope:name) for the job worker""" + taskIdentifier: String! +} + +"""The output of our create `PlatformNamespaceEvent` mutation.""" +type CreatePlatformNamespaceEventPayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """The `PlatformNamespaceEvent` that was created by this mutation.""" + platformNamespaceEvent: PlatformNamespaceEvent + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + + """An edge for our `PlatformNamespaceEvent`. May be used by Relay 1.""" + platformNamespaceEventEdge( + """The method to use when ordering `PlatformNamespaceEvent`.""" + orderBy: [PlatformNamespaceEventOrderBy!]! = [PRIMARY_KEY_ASC] + ): PlatformNamespaceEventEdge +} + +"""All input for the create `PlatformNamespaceEvent` mutation.""" +input CreatePlatformNamespaceEventInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + + """The `PlatformNamespaceEvent` to be created by this mutation.""" + platformNamespaceEvent: PlatformNamespaceEventInput! +} + +"""An input for mutations affecting `PlatformNamespaceEvent`""" +input PlatformNamespaceEventInput { + """Event timestamp (partition key)""" + createdAt: Datetime + + """User who triggered this event (NULL for system/automated)""" + actorId: UUID + + """CPU usage in millicores at time of event""" + cpuMillicores: Int + + """Database that owns this resource (database-scoped isolation)""" + databaseId: UUID! + + """ + Event type: created, activated, deactivated, labels_updated, annotations_updated, renamed + """ + eventType: String! + + """Unique event identifier""" + id: UUID + + """Memory usage in bytes at time of event""" + memoryBytes: BigInt + + """Human-readable description of the event""" + message: String + + """Structured context (old/new values, labels diff, etc.)""" + metadata: JSON + + """Additional resource metrics (gpu, replicas, quotas, etc.)""" + metrics: JSON + + """Namespace this event belongs to""" + namespaceId: UUID! + + """Network egress in bytes during event window""" + networkEgressBytes: BigInt + + """Network ingress in bytes during event window""" + networkIngressBytes: BigInt + + """Number of active pods in the namespace at time of event""" + podCount: Int + + """Storage usage in bytes at time of event""" + storageBytes: BigInt +} + +"""The output of our create `PlatformFunctionDefinition` mutation.""" +type CreatePlatformFunctionDefinitionPayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """The `PlatformFunctionDefinition` that was created by this mutation.""" + platformFunctionDefinition: PlatformFunctionDefinition + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + + """An edge for our `PlatformFunctionDefinition`. May be used by Relay 1.""" + platformFunctionDefinitionEdge( + """The method to use when ordering `PlatformFunctionDefinition`.""" + orderBy: [PlatformFunctionDefinitionOrderBy!]! = [PRIMARY_KEY_ASC] + ): PlatformFunctionDefinitionEdge +} + +"""All input for the create `PlatformFunctionDefinition` mutation.""" +input CreatePlatformFunctionDefinitionInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + + """The `PlatformFunctionDefinition` to be created by this mutation.""" + platformFunctionDefinition: PlatformFunctionDefinitionInput! +} + +"""An input for mutations affecting `PlatformFunctionDefinition`""" +input PlatformFunctionDefinitionInput { + createdAt: Datetime + + """Human-readable description of what this function does""" + description: String + id: UUID + + """ + Whether this function is a built-in platform function (synced from platform) vs user-created + """ + isBuiltIn: Boolean + + """ + Whether this function can be called via function_invocations (public API). Default false = internal-only via add_job() + """ + isInvocable: Boolean + + """Maximum retry attempts for the underlying job""" + maxAttempts: Int + + """ + Function name within scope (e.g. send_verification_link, process_file_embedding) + """ + name: String! + + """Namespace this function belongs to (FK to namespaces table)""" + namespaceId: UUID + + """Job priority (lower = higher priority)""" + priority: Int + + """Job queue name for serialization (e.g. email, ai, default)""" + queueName: String + + """Function grouping scope (e.g. email, embed, chunk, custom)""" + scope: String! + + """ + Optional service URL override for function dispatch. NULL = use gateway convention (gatewayUrl/task_identifier). Set for customer-deployed functions or external endpoints. + """ + serviceUrl: String + + """ + Computed routing slug: scope:name (used by Knative job worker for dispatch) + """ + taskIdentifier: String! + updatedAt: Datetime + payloadSchema: JSON + + """Embedded config requirements: array of (name, required) tuples""" + requiredConfigs: [FunctionRequirementInput] + + """Embedded secret requirements: array of (name, required) tuples""" + requiredSecrets: [FunctionRequirementInput] +} + +"""An input for mutations affecting `FunctionRequirement`""" +input FunctionRequirementInput { + name: String + required: Boolean +} + +"""The output of our update `PlatformSecretDefinition` mutation.""" +type UpdatePlatformSecretDefinitionPayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """The `PlatformSecretDefinition` that was updated by this mutation.""" + platformSecretDefinition: PlatformSecretDefinition + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + + """An edge for our `PlatformSecretDefinition`. May be used by Relay 1.""" + platformSecretDefinitionEdge( + """The method to use when ordering `PlatformSecretDefinition`.""" + orderBy: [PlatformSecretDefinitionOrderBy!]! = [PRIMARY_KEY_ASC] + ): PlatformSecretDefinitionEdge +} + +"""All input for the `updatePlatformSecretDefinition` mutation.""" +input UpdatePlatformSecretDefinitionInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + id: UUID! + + """ + An object where the defined keys will be set on the `PlatformSecretDefinition` being updated. + """ + platformSecretDefinitionPatch: PlatformSecretDefinitionPatch! +} + +""" +Represents an update to a `PlatformSecretDefinition`. Fields that are set will be updated. +""" +input PlatformSecretDefinitionPatch { + """Freeform metadata annotations for secret definitions""" + annotations: JSON + createdAt: Datetime + + """Database that owns this resource (database-scoped isolation)""" + databaseId: UUID + + """Human-readable description of what this secret is used for""" + description: String + id: UUID + + """ + Whether this row was seeded as a built-in secret definition. Built-in rows are immutable. + """ + isBuiltIn: Boolean + + """Key-value metadata for filtering and grouping secret definitions""" + labels: JSON + + """Secret name (must match app_secrets.name for resolution)""" + name: String + updatedAt: Datetime +} + +"""The output of our update `PlatformFunctionExecutionLog` mutation.""" +type UpdatePlatformFunctionExecutionLogPayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """The `PlatformFunctionExecutionLog` that was updated by this mutation.""" + platformFunctionExecutionLog: PlatformFunctionExecutionLog + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + + """ + An edge for our `PlatformFunctionExecutionLog`. May be used by Relay 1. + """ + platformFunctionExecutionLogEdge( + """The method to use when ordering `PlatformFunctionExecutionLog`.""" + orderBy: [PlatformFunctionExecutionLogOrderBy!]! = [PRIMARY_KEY_ASC] + ): PlatformFunctionExecutionLogEdge +} + +"""All input for the `updatePlatformFunctionExecutionLog` mutation.""" +input UpdatePlatformFunctionExecutionLogInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + + """Log entry timestamp (partition key)""" + createdAt: Datetime! + + """Unique log entry identifier""" + id: UUID! + + """ + An object where the defined keys will be set on the `PlatformFunctionExecutionLog` being updated. + """ + platformFunctionExecutionLogPatch: PlatformFunctionExecutionLogPatch! +} + +""" +Represents an update to a `PlatformFunctionExecutionLog`. Fields that are set will be updated. +""" +input PlatformFunctionExecutionLogPatch { + """Log entry timestamp (partition key)""" + createdAt: Datetime + + """User who triggered the execution (NULL for system/cron)""" + actorId: UUID + + """Database this log entry belongs to""" + databaseId: UUID + + """Unique log entry identifier""" + id: UUID + + """Invocation this log entry belongs to (NULL for jobs)""" + invocationId: UUID + + """Log severity: debug, info, warn, error""" + logLevel: String + + """Log message text""" + message: String + + """Structured context (labels, trace data, extra fields)""" + metadata: JSON + + """Function routing key (NULL for generic job logs)""" + taskIdentifier: String +} + +"""The output of our update `PlatformNamespace` mutation.""" +type UpdatePlatformNamespacePayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """The `PlatformNamespace` that was updated by this mutation.""" + platformNamespace: PlatformNamespace + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + + """An edge for our `PlatformNamespace`. May be used by Relay 1.""" + platformNamespaceEdge( + """The method to use when ordering `PlatformNamespace`.""" + orderBy: [PlatformNamespaceOrderBy!]! = [PRIMARY_KEY_ASC] + ): PlatformNamespaceEdge +} + +"""All input for the `updatePlatformNamespace` mutation.""" +input UpdatePlatformNamespaceInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + id: UUID! + + """ + An object where the defined keys will be set on the `PlatformNamespace` being updated. + """ + platformNamespacePatch: PlatformNamespacePatch! +} + +""" +Represents an update to a `PlatformNamespace`. Fields that are set will be updated. +""" +input PlatformNamespacePatch { + """Freeform metadata for tooling and operational notes""" + annotations: JSON + createdAt: Datetime + + """Database that owns this resource (database-scoped isolation)""" + databaseId: UUID + + """Optional human-readable description of this namespace""" + description: String + id: UUID + + """Whether this namespace is active (soft-disable for filtering)""" + isActive: Boolean + + """Key/value pairs for selecting and filtering namespaces""" + labels: JSON + + """Human-readable namespace name (e.g. default, production, oauth)""" + name: String + + """ + Globally unique computed namespace identifier via inflection.underscore + """ + namespaceName: String + updatedAt: Datetime +} + +"""The output of our update `PlatformFunctionInvocation` mutation.""" +type UpdatePlatformFunctionInvocationPayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """The `PlatformFunctionInvocation` that was updated by this mutation.""" + platformFunctionInvocation: PlatformFunctionInvocation + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + + """An edge for our `PlatformFunctionInvocation`. May be used by Relay 1.""" + platformFunctionInvocationEdge( + """The method to use when ordering `PlatformFunctionInvocation`.""" + orderBy: [PlatformFunctionInvocationOrderBy!]! = [PRIMARY_KEY_ASC] + ): PlatformFunctionInvocationEdge +} + +"""All input for the `updatePlatformFunctionInvocation` mutation.""" +input UpdatePlatformFunctionInvocationInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + + """Invocation creation timestamp (partition key)""" + createdAt: Datetime! + + """Unique invocation identifier""" + id: UUID! + + """ + An object where the defined keys will be set on the `PlatformFunctionInvocation` being updated. + """ + platformFunctionInvocationPatch: PlatformFunctionInvocationPatch! +} + +""" +Represents an update to a `PlatformFunctionInvocation`. Fields that are set will be updated. +""" +input PlatformFunctionInvocationPatch { + """Invocation creation timestamp (partition key)""" + createdAt: Datetime + + """Who triggered the invocation""" + actorId: UUID + + """When execution completed""" + completedAt: Datetime + + """Database that owns this resource (database-scoped isolation)""" + databaseId: UUID + + """Wall-clock execution time in milliseconds""" + durationMs: Int + + """Error message when status is failed""" + error: String + + """Resolved function definition ID""" + functionId: UUID + + """Unique invocation identifier""" + id: UUID + + """FK to app_jobs.jobs — the underlying transport""" + jobId: BigInt + + """Function input payload""" + payload: JSON + + """Function return value (success) or structured error (failure)""" + result: JSON + + """When execution started""" + startedAt: Datetime + + """Lifecycle: pending → running → completed/failed/cancelled""" + status: String + + """Routing slug (scope:name) for the job worker""" + taskIdentifier: String +} + +"""The output of our update `PlatformNamespaceEvent` mutation.""" +type UpdatePlatformNamespaceEventPayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """The `PlatformNamespaceEvent` that was updated by this mutation.""" + platformNamespaceEvent: PlatformNamespaceEvent + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + + """An edge for our `PlatformNamespaceEvent`. May be used by Relay 1.""" + platformNamespaceEventEdge( + """The method to use when ordering `PlatformNamespaceEvent`.""" + orderBy: [PlatformNamespaceEventOrderBy!]! = [PRIMARY_KEY_ASC] + ): PlatformNamespaceEventEdge +} + +"""All input for the `updatePlatformNamespaceEvent` mutation.""" +input UpdatePlatformNamespaceEventInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + + """Event timestamp (partition key)""" + createdAt: Datetime! + + """Unique event identifier""" + id: UUID! + + """ + An object where the defined keys will be set on the `PlatformNamespaceEvent` being updated. + """ + platformNamespaceEventPatch: PlatformNamespaceEventPatch! +} + +""" +Represents an update to a `PlatformNamespaceEvent`. Fields that are set will be updated. +""" +input PlatformNamespaceEventPatch { + """Event timestamp (partition key)""" + createdAt: Datetime + + """User who triggered this event (NULL for system/automated)""" + actorId: UUID + + """CPU usage in millicores at time of event""" + cpuMillicores: Int + + """Database that owns this resource (database-scoped isolation)""" + databaseId: UUID + + """ + Event type: created, activated, deactivated, labels_updated, annotations_updated, renamed + """ + eventType: String + + """Unique event identifier""" + id: UUID + + """Memory usage in bytes at time of event""" + memoryBytes: BigInt + + """Human-readable description of the event""" + message: String + + """Structured context (old/new values, labels diff, etc.)""" + metadata: JSON + + """Additional resource metrics (gpu, replicas, quotas, etc.)""" + metrics: JSON + + """Namespace this event belongs to""" + namespaceId: UUID + + """Network egress in bytes during event window""" + networkEgressBytes: BigInt + + """Network ingress in bytes during event window""" + networkIngressBytes: BigInt + + """Number of active pods in the namespace at time of event""" + podCount: Int + + """Storage usage in bytes at time of event""" + storageBytes: BigInt +} + +"""The output of our update `PlatformFunctionDefinition` mutation.""" +type UpdatePlatformFunctionDefinitionPayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """The `PlatformFunctionDefinition` that was updated by this mutation.""" + platformFunctionDefinition: PlatformFunctionDefinition + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + + """An edge for our `PlatformFunctionDefinition`. May be used by Relay 1.""" + platformFunctionDefinitionEdge( + """The method to use when ordering `PlatformFunctionDefinition`.""" + orderBy: [PlatformFunctionDefinitionOrderBy!]! = [PRIMARY_KEY_ASC] + ): PlatformFunctionDefinitionEdge +} + +"""All input for the `updatePlatformFunctionDefinition` mutation.""" +input UpdatePlatformFunctionDefinitionInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + id: UUID! + + """ + An object where the defined keys will be set on the `PlatformFunctionDefinition` being updated. + """ + platformFunctionDefinitionPatch: PlatformFunctionDefinitionPatch! +} + +""" +Represents an update to a `PlatformFunctionDefinition`. Fields that are set will be updated. +""" +input PlatformFunctionDefinitionPatch { + createdAt: Datetime + + """Human-readable description of what this function does""" + description: String + id: UUID + + """ + Whether this function is a built-in platform function (synced from platform) vs user-created + """ + isBuiltIn: Boolean + + """ + Whether this function can be called via function_invocations (public API). Default false = internal-only via add_job() + """ + isInvocable: Boolean + + """Maximum retry attempts for the underlying job""" + maxAttempts: Int + + """ + Function name within scope (e.g. send_verification_link, process_file_embedding) + """ + name: String + + """Namespace this function belongs to (FK to namespaces table)""" + namespaceId: UUID + + """Job priority (lower = higher priority)""" + priority: Int + + """Job queue name for serialization (e.g. email, ai, default)""" + queueName: String + + """Function grouping scope (e.g. email, embed, chunk, custom)""" + scope: String + + """ + Optional service URL override for function dispatch. NULL = use gateway convention (gatewayUrl/task_identifier). Set for customer-deployed functions or external endpoints. + """ + serviceUrl: String + + """ + Computed routing slug: scope:name (used by Knative job worker for dispatch) + """ + taskIdentifier: String + updatedAt: Datetime + payloadSchema: JSON + + """Embedded config requirements: array of (name, required) tuples""" + requiredConfigs: [FunctionRequirementInput] + + """Embedded secret requirements: array of (name, required) tuples""" + requiredSecrets: [FunctionRequirementInput] +} + +"""The output of our delete `PlatformSecretDefinition` mutation.""" +type DeletePlatformSecretDefinitionPayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """The `PlatformSecretDefinition` that was deleted by this mutation.""" + platformSecretDefinition: PlatformSecretDefinition + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + + """An edge for our `PlatformSecretDefinition`. May be used by Relay 1.""" + platformSecretDefinitionEdge( + """The method to use when ordering `PlatformSecretDefinition`.""" + orderBy: [PlatformSecretDefinitionOrderBy!]! = [PRIMARY_KEY_ASC] + ): PlatformSecretDefinitionEdge +} + +"""All input for the `deletePlatformSecretDefinition` mutation.""" +input DeletePlatformSecretDefinitionInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + id: UUID! +} + +"""The output of our delete `PlatformFunctionExecutionLog` mutation.""" +type DeletePlatformFunctionExecutionLogPayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """The `PlatformFunctionExecutionLog` that was deleted by this mutation.""" + platformFunctionExecutionLog: PlatformFunctionExecutionLog + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + + """ + An edge for our `PlatformFunctionExecutionLog`. May be used by Relay 1. + """ + platformFunctionExecutionLogEdge( + """The method to use when ordering `PlatformFunctionExecutionLog`.""" + orderBy: [PlatformFunctionExecutionLogOrderBy!]! = [PRIMARY_KEY_ASC] + ): PlatformFunctionExecutionLogEdge +} + +"""All input for the `deletePlatformFunctionExecutionLog` mutation.""" +input DeletePlatformFunctionExecutionLogInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + + """Log entry timestamp (partition key)""" + createdAt: Datetime! + + """Unique log entry identifier""" + id: UUID! +} + +"""The output of our delete `PlatformNamespace` mutation.""" +type DeletePlatformNamespacePayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """The `PlatformNamespace` that was deleted by this mutation.""" + platformNamespace: PlatformNamespace + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + + """An edge for our `PlatformNamespace`. May be used by Relay 1.""" + platformNamespaceEdge( + """The method to use when ordering `PlatformNamespace`.""" + orderBy: [PlatformNamespaceOrderBy!]! = [PRIMARY_KEY_ASC] + ): PlatformNamespaceEdge +} + +"""All input for the `deletePlatformNamespace` mutation.""" +input DeletePlatformNamespaceInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + id: UUID! +} + +"""The output of our delete `PlatformFunctionInvocation` mutation.""" +type DeletePlatformFunctionInvocationPayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """The `PlatformFunctionInvocation` that was deleted by this mutation.""" + platformFunctionInvocation: PlatformFunctionInvocation + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + + """An edge for our `PlatformFunctionInvocation`. May be used by Relay 1.""" + platformFunctionInvocationEdge( + """The method to use when ordering `PlatformFunctionInvocation`.""" + orderBy: [PlatformFunctionInvocationOrderBy!]! = [PRIMARY_KEY_ASC] + ): PlatformFunctionInvocationEdge +} + +"""All input for the `deletePlatformFunctionInvocation` mutation.""" +input DeletePlatformFunctionInvocationInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + + """Invocation creation timestamp (partition key)""" + createdAt: Datetime! + + """Unique invocation identifier""" + id: UUID! +} + +"""The output of our delete `PlatformNamespaceEvent` mutation.""" +type DeletePlatformNamespaceEventPayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """The `PlatformNamespaceEvent` that was deleted by this mutation.""" + platformNamespaceEvent: PlatformNamespaceEvent + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + + """An edge for our `PlatformNamespaceEvent`. May be used by Relay 1.""" + platformNamespaceEventEdge( + """The method to use when ordering `PlatformNamespaceEvent`.""" + orderBy: [PlatformNamespaceEventOrderBy!]! = [PRIMARY_KEY_ASC] + ): PlatformNamespaceEventEdge +} + +"""All input for the `deletePlatformNamespaceEvent` mutation.""" +input DeletePlatformNamespaceEventInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + + """Event timestamp (partition key)""" + createdAt: Datetime! + + """Unique event identifier""" + id: UUID! +} + +"""The output of our delete `PlatformFunctionDefinition` mutation.""" +type DeletePlatformFunctionDefinitionPayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """The `PlatformFunctionDefinition` that was deleted by this mutation.""" + platformFunctionDefinition: PlatformFunctionDefinition + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + + """An edge for our `PlatformFunctionDefinition`. May be used by Relay 1.""" + platformFunctionDefinitionEdge( + """The method to use when ordering `PlatformFunctionDefinition`.""" + orderBy: [PlatformFunctionDefinitionOrderBy!]! = [PRIMARY_KEY_ASC] + ): PlatformFunctionDefinitionEdge +} + +"""All input for the `deletePlatformFunctionDefinition` mutation.""" +input DeletePlatformFunctionDefinitionInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + id: UUID! +} + +input ProvisionBucketInput { + """The logical bucket key (e.g., "public", "private")""" + bucketKey: String! + + """ + Owner entity ID for entity-scoped bucket provisioning. + Omit for app-level (database-wide) storage. + """ + ownerId: UUID +} + +type ProvisionBucketPayload { + """Whether provisioning succeeded""" + success: Boolean! + + """The S3 bucket name that was provisioned""" + bucketName: String! + + """The access type applied""" + accessType: String! + + """The storage provider used""" + provider: String! + + """The S3 endpoint (null for AWS S3 default)""" + endpoint: String + + """Error message if provisioning failed""" + error: String +} \ No newline at end of file diff --git a/sdk/functions-schema/scripts/generate-introspection.ts b/sdk/functions-schema/scripts/generate-introspection.ts new file mode 100644 index 00000000..db44343c --- /dev/null +++ b/sdk/functions-schema/scripts/generate-introspection.ts @@ -0,0 +1,58 @@ +import { PgpmPackage } from '@pgpmjs/core'; +import fs from 'fs'; +import { buildIntrospectionJSON } from 'graphile-schema'; +import path from 'path'; +import { createEphemeralDb } from 'pgsql-client'; +import { deployPgpm } from 'pgsql-seed'; + +const MODULE_PATH = path.resolve(__dirname, '../../../pgpm/constructive-infra'); +const INTROSPECTION_DIR = path.resolve(__dirname, '../introspection'); + +const ALL_PUBLIC_SCHEMAS = ['constructive_infra_public'] as const; + +async function main() { + console.log('Generating introspection JSON...'); + console.log(`Module: ${MODULE_PATH}`); + + const pkg = new PgpmPackage(MODULE_PATH); + if (!pkg.isInModule()) { + console.error(`Not a valid PGPM module: ${MODULE_PATH}`); + process.exit(1); + } + + console.log('Creating ephemeral database...'); + const { config: dbConfig, teardown } = createEphemeralDb({ + prefix: 'codegen_introspection_', + verbose: false, + }); + console.log(`Database: ${dbConfig.database}`); + + try { + console.log('Deploying PGPM module...'); + await deployPgpm(dbConfig, MODULE_PATH, false); + console.log('PGPM deployment complete.'); + + fs.mkdirSync(INTROSPECTION_DIR, { recursive: true }); + + console.log(`Schemas: ${ALL_PUBLIC_SCHEMAS.join(', ')}`); + console.log('Building introspection metadata...'); + + const tables = await buildIntrospectionJSON({ + database: dbConfig.database!, + schemas: [...ALL_PUBLIC_SCHEMAS], + }); + + const outPath = path.join(INTROSPECTION_DIR, 'introspection.json'); + fs.writeFileSync(outPath, JSON.stringify(tables, null, 2), 'utf-8'); + console.log(`Written: ${outPath} (${tables.length} tables)`); + + console.log('\nIntrospection JSON generated successfully!'); + } finally { + teardown({ keepDb: false }); + } +} + +main().catch((err) => { + console.error('Fatal error:', err); + process.exit(1); +}); diff --git a/sdk/functions-schema/scripts/generate-schemas.ts b/sdk/functions-schema/scripts/generate-schemas.ts new file mode 100644 index 00000000..0a3a9111 --- /dev/null +++ b/sdk/functions-schema/scripts/generate-schemas.ts @@ -0,0 +1,106 @@ +import { PgpmPackage } from '@pgpmjs/core'; +import fs from 'fs'; +import { buildSchemaSDL } from 'graphile-schema'; +import path from 'path'; +import { createEphemeralDb } from 'pgsql-client'; +import { deployPgpm } from 'pgsql-seed'; + +// The pgpm module that owns the infra schemas. Deployed to an ephemeral DB so we +// can introspect a real PostGraphile schema from the live catalog. +const MODULE_PATH = path.resolve(__dirname, '../../../pgpm/constructive-infra'); +const SCHEMAS_DIR = path.resolve(__dirname, '../schemas'); +const INDEX_PATH = path.resolve(__dirname, '../src/index.ts'); + +// ========================================================================== +// API target -> Postgres schema mapping +// ========================================================================== +// Each key becomes a generated `.graphql` file and, downstream, a separate +// ORM target. constructive_infra_public holds the platform function registry: +// platform_function_definitions / _invocations / _execution_logs / +// _secret_definitions / platform_namespaces / platform_namespace_events. +const API_SCHEMA_MAP: Record = { + infra: ['constructive_infra_public'], +}; + +async function main() { + const apiNames = Object.keys(API_SCHEMA_MAP); + console.log('Generating schemas for all APIs...'); + console.log(`APIs: ${apiNames.join(', ')}`); + console.log(`Module: ${MODULE_PATH}`); + + const pkg = new PgpmPackage(MODULE_PATH); + if (!pkg.isInModule()) { + console.error(`Not a valid PGPM module: ${MODULE_PATH}`); + process.exit(1); + } + + console.log('Creating ephemeral database...'); + const { config: dbConfig, teardown } = createEphemeralDb({ + prefix: 'codegen_schema_export_', + verbose: false, + }); + console.log(`Database: ${dbConfig.database}`); + + try { + console.log('Deploying PGPM module...'); + await deployPgpm(dbConfig, MODULE_PATH, false); + console.log('PGPM deployment complete.'); + + fs.mkdirSync(SCHEMAS_DIR, { recursive: true }); + + let hasError = false; + + for (const apiName of apiNames) { + const schemas = [...API_SCHEMA_MAP[apiName]]; + console.log(`\n[${apiName}] Schemas: ${schemas.join(', ')}`); + + try { + console.log(`[${apiName}] Building SDL...`); + const sdl = await buildSchemaSDL({ + database: dbConfig.database!, + schemas, + }); + + if (!sdl.trim()) { + console.error(`[${apiName}] ERROR: Empty schema returned`); + hasError = true; + continue; + } + + const outPath = path.join(SCHEMAS_DIR, `${apiName}.graphql`); + fs.writeFileSync(outPath, sdl, 'utf-8'); + console.log(`[${apiName}] Written: ${outPath} (${sdl.length} bytes)`); + } catch (err) { + console.error( + `[${apiName}] ERROR: ${err instanceof Error ? err.message : String(err)}`, + ); + hasError = true; + } + } + + if (hasError) { + console.error('\nSchema generation failed for one or more APIs'); + process.exit(1); + } + + // Auto-generate src/index.ts from API_SCHEMA_MAP keys + const indexContent = [ + `export const API_NAMES = ${JSON.stringify(apiNames)} as const;`, + '', + 'export type ApiName = (typeof API_NAMES)[number];', + '', + ].join('\n'); + fs.mkdirSync(path.dirname(INDEX_PATH), { recursive: true }); + fs.writeFileSync(INDEX_PATH, indexContent, 'utf-8'); + console.log(`\nWrote ${INDEX_PATH}`); + + console.log('\nSchema generation completed successfully!'); + } finally { + teardown({ keepDb: false }); + } +} + +main().catch((err) => { + console.error('Fatal error:', err); + process.exit(1); +}); diff --git a/sdk/functions-schema/src/index.ts b/sdk/functions-schema/src/index.ts new file mode 100644 index 00000000..6c428f49 --- /dev/null +++ b/sdk/functions-schema/src/index.ts @@ -0,0 +1,3 @@ +export const API_NAMES = ["infra"] as const; + +export type ApiName = (typeof API_NAMES)[number]; diff --git a/sdk/functions-schema/tsconfig.json b/sdk/functions-schema/tsconfig.json new file mode 100644 index 00000000..443e20a1 --- /dev/null +++ b/sdk/functions-schema/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "declaration": true + }, + "include": ["src/**/*.ts"], + "exclude": ["dist", "node_modules", "scripts"] +} diff --git a/sdk/functions-sdk/README.md b/sdk/functions-sdk/README.md new file mode 100644 index 00000000..b6fec177 --- /dev/null +++ b/sdk/functions-sdk/README.md @@ -0,0 +1,50 @@ +# @constructive-io/functions-sdk + +Typed GraphQL ORM client for the constructive-functions infra schemas. + +Generated from the SDL exported by `@constructive-io/functions-schema` using +`@constructive-io/graphql-codegen`. One ORM target is produced per `.graphql` +file (currently `infra`). + +## Generate + +```bash +# 1. export SDL from the pgpm module +pnpm --filter @constructive-io/functions-schema run generate +# 2. codegen the ORM from the SDL +pnpm --filter @constructive-io/functions-sdk run generate +``` + +Or from the repo root: + +```bash +pnpm run generate:sdk +``` + +## Usage + +Each target is exported as a namespace (`infra`) exposing a `createClient` +factory with one accessor per table. + +```ts +import { infra } from '@constructive-io/functions-sdk'; + +const db = infra.createClient({ + endpoint: process.env.GRAPHQL_URL!, + headers: { 'X-Database-Id': databaseId }, +}); + +const fns = await db.platformFunctionDefinition + .findMany({ select: { id: true, name: true, taskIdentifier: true }, first: 50 }) + .execute(); +``` + +> The exact exported client/method names are determined by codegen — see the +> generated `src//` and the `orm-infra` skill in `.agents/skills/`. + +## Generated (do not edit) + +- `src/**` + +Edit the pgpm source under `pgpm/constructive-infra`, regenerate the schema, then +regenerate this SDK. diff --git a/sdk/functions-sdk/package.json b/sdk/functions-sdk/package.json new file mode 100644 index 00000000..cd86952d --- /dev/null +++ b/sdk/functions-sdk/package.json @@ -0,0 +1,48 @@ +{ + "name": "@constructive-io/functions-sdk", + "version": "0.0.1", + "description": "Typed GraphQL ORM client for constructive-functions infra schemas, generated from SDL", + "author": "Constructive ", + "license": "SEE LICENSE IN LICENSE", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "dist", + "README.md" + ], + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/constructive-io/constructive-functions" + }, + "scripts": { + "build": "tsc -p tsconfig.json", + "clean": "rimraf dist", + "generate": "rimraf src/index.ts && tsx scripts/generate-sdk.ts", + "lint": "eslint . --fix" + }, + "keywords": [ + "graphql", + "sdk", + "orm", + "constructive", + "postgraphile" + ], + "dependencies": { + "@0no-co/graphql.web": "^1.1.2", + "@constructive-io/graphql-query": "^3.27.1", + "@constructive-io/graphql-types": "^3.12.0", + "gql-ast": "^3.11.0", + "graphql": "16.13.0" + }, + "devDependencies": { + "@constructive-io/functions-schema": "workspace:^", + "@constructive-io/graphql-codegen": "^4.47.0", + "@types/node": "^22.10.4", + "rimraf": "^5.0.10", + "tsx": "^4.19.0", + "typescript": "^5.1.6" + } +} diff --git a/sdk/functions-sdk/scripts/generate-sdk.ts b/sdk/functions-sdk/scripts/generate-sdk.ts new file mode 100644 index 00000000..ac180b68 --- /dev/null +++ b/sdk/functions-sdk/scripts/generate-sdk.ts @@ -0,0 +1,178 @@ +import { + expandSchemaDirToMultiTarget, + generateMulti, +} from '@constructive-io/graphql-codegen'; +import * as fs from 'fs'; +import * as path from 'path'; + +const SCHEMA_DIR = '../functions-schema/schemas'; +const SRC_DIR = path.resolve(__dirname, '../src'); + +// Targets that exist only as internal schemas and should not get an ORM client. +const EXCLUDE_TARGETS: string[] = []; + +async function main() { + console.log('Generating SDK from schema files...'); + console.log(`Schema directory: ${SCHEMA_DIR}`); + + const baseConfig = { + schemaDir: SCHEMA_DIR, + output: './src', + orm: true, + docs: { skills: true, agents: false }, + verbose: true, + }; + + const expanded = expandSchemaDirToMultiTarget(baseConfig); + if (!expanded) { + console.error('No .graphql files found in schema directory.'); + console.error( + 'Run "pnpm run generate" in @constructive-io/functions-schema first.', + ); + process.exit(1); + } + + for (const target of EXCLUDE_TARGETS) { + if (target in expanded) { + delete expanded[target]; + console.log(`Excluding target: ${target}`); + } + } + + console.log(`Found targets: ${Object.keys(expanded).join(', ')}`); + + const { results, hasError } = await generateMulti({ + configs: expanded, + cleanStaleTargets: true, + }); + + let realError = false; + + for (const { name, result } of results) { + if (result.success) { + console.log(`[${name}] ${result.message}`); + if (result.tables?.length) { + console.log(` Tables: ${result.tables.join(', ')}`); + } + } else if (result.message?.includes('No tables found')) { + console.log(`[${name}] SKIP: no tables (empty schema)`); + } else { + console.error(`[${name}] ERROR: ${result.message}`); + realError = true; + } + } + + if (realError || hasError) { + console.error('\nSDK generation failed for one or more targets'); + process.exit(1); + } + + // generateMulti only writes the root barrel (src/index.ts) when there are + // 2+ targets. We have a single target today, so write the barrel ourselves so + // the package always has a stable entry point that re-exports every target. + const targets = results + .filter((r) => r.result.success && r.result.tables?.length) + .map((r) => r.name) + .sort(); + + for (const target of targets) { + stubMissingCompositeInputs(target); + } + + writeRootBarrel(targets); + + console.log('\nSDK generation completed successfully!'); +} + +/** + * PostGraphile exposes PostgreSQL composite types (e.g. `function_requirement`) + * as both an object type (`FunctionRequirement`) and an input type + * (`FunctionRequirementInput`). The ORM codegen stubs the object form as + * `export type FunctionRequirement = unknown;` but does not emit the `*Input` + * counterpart, leaving dangling references that break `tsc`. + * + * This appends `export type Input = unknown;` for any input type that is + * referenced in the generated code but never declared, mirroring how codegen + * already treats the object form. It is derived from the exported SDL so it + * stays in sync as the schema evolves. + */ +function stubMissingCompositeInputs(target: string) { + const targetDir = path.join(SRC_DIR, target); + // SCHEMA_DIR is relative to the package root (cwd), matching how + // expandSchemaDirToMultiTarget resolves it. + const sdlPath = path.resolve(process.cwd(), SCHEMA_DIR, `${target}.graphql`); + if (!fs.existsSync(sdlPath)) return; + + const sdl = fs.readFileSync(sdlPath, 'utf-8'); + const inputNames = new Set(); + // Only match real GraphQL input type definitions (`input Name {`), not the + // word "input" appearing inside description strings. + const inputRe = /(?:^|\n)\s*input\s+(\w+)\s*\{/g; + let m: RegExpExecArray | null; + while ((m = inputRe.exec(sdl)) !== null) inputNames.add(m[1]); + + const files = listTsFiles(targetDir); + const sources = files.map((f) => fs.readFileSync(f, 'utf-8')); + const combined = sources.join('\n'); + + const declared = new Set(); + const declRe = /export\s+(?:type|interface|enum|const)\s+(\w+)/g; + while ((m = declRe.exec(combined)) !== null) declared.add(m[1]); + + const missing = [...inputNames].filter( + (name) => + !declared.has(name) && + new RegExp(`\\b${name}\\b`).test(combined), + ); + if (missing.length === 0) return; + + const inputTypesPath = path.join(targetDir, 'orm', 'input-types.ts'); + if (!fs.existsSync(inputTypesPath)) return; + + const banner = + '\n// Composite input types stubbed by scripts/generate-sdk.ts ' + + '(codegen emits the object form as `unknown` but omits these).\n'; + const stubs = missing + .sort() + .map((name) => `export type ${name} = unknown;`) + .join('\n'); + fs.appendFileSync(inputTypesPath, banner + stubs + '\n', 'utf-8'); + console.log( + `[${target}] Stubbed ${missing.length} composite input type(s): ${missing + .sort() + .join(', ')}`, + ); +} + +function listTsFiles(dir: string): string[] { + const out: string[] = []; + if (!fs.existsSync(dir)) return out; + for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { + const full = path.join(dir, entry.name); + if (entry.isDirectory()) out.push(...listTsFiles(full)); + else if (entry.isFile() && full.endsWith('.ts')) out.push(full); + } + return out; +} + +function writeRootBarrel(targets: string[]) { + const lines = [ + '/**', + ' * @constructive-io/functions-sdk', + ' *', + ' * Auto-generated GraphQL types and ORM client.', + ' * Run `pnpm run generate` to populate this package from the schema files.', + ' *', + ' * @generated by scripts/generate-sdk.ts', + ' */', + ...targets.map((t) => `export * as ${t} from './${t}';`), + '', + ]; + fs.writeFileSync(path.join(SRC_DIR, 'index.ts'), lines.join('\n'), 'utf-8'); + console.log(`Wrote root barrel: src/index.ts (${targets.join(', ')})`); +} + +main().catch((err) => { + console.error('Fatal error:', err); + process.exit(1); +}); diff --git a/sdk/functions-sdk/src/index.ts b/sdk/functions-sdk/src/index.ts new file mode 100644 index 00000000..a52260be --- /dev/null +++ b/sdk/functions-sdk/src/index.ts @@ -0,0 +1,9 @@ +/** + * @constructive-io/functions-sdk + * + * Auto-generated GraphQL types and ORM client. + * Run `pnpm run generate` to populate this package from the schema files. + * + * @generated by scripts/generate-sdk.ts + */ +export * as infra from './infra'; diff --git a/sdk/functions-sdk/src/infra/README.md b/sdk/functions-sdk/src/infra/README.md new file mode 100644 index 00000000..3f92cd3b --- /dev/null +++ b/sdk/functions-sdk/src/infra/README.md @@ -0,0 +1,41 @@ +# Generated GraphQL SDK + +

+ +

+ + + +## Overview + +- **Tables:** 6 +- **Custom queries:** 0 +- **Custom mutations:** 1 + +**Generators:** ORM + +## Modules + +### ORM Client (`./orm`) + +Prisma-like ORM client for programmatic GraphQL access. + +```typescript +import { createClient } from './orm'; + +const db = createClient({ + endpoint: 'https://api.example.com/graphql', +}); +``` + +See [orm/README.md](./orm/README.md) for full API reference. + +--- + +Built by the [Constructive](https://constructive.io) team. + +## 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/sdk/functions-sdk/src/infra/index.ts b/sdk/functions-sdk/src/infra/index.ts new file mode 100644 index 00000000..654223e7 --- /dev/null +++ b/sdk/functions-sdk/src/infra/index.ts @@ -0,0 +1,5 @@ +/** + * GraphQL SDK - auto-generated, do not edit + * @generated by @constructive-io/graphql-codegen + */ +export * from './orm'; diff --git a/sdk/functions-sdk/src/infra/orm/README.md b/sdk/functions-sdk/src/infra/orm/README.md new file mode 100644 index 00000000..bc7793f2 --- /dev/null +++ b/sdk/functions-sdk/src/infra/orm/README.md @@ -0,0 +1,303 @@ +# ORM Client + +

+ +

+ + + +## Setup + +```typescript +import { createClient } from './orm'; + +const db = createClient({ + endpoint: 'https://api.example.com/graphql', + headers: { Authorization: 'Bearer ' }, +}); +``` + +## Models + +| Model | Operations | +|-------|------------| +| `platformSecretDefinition` | findMany, findOne, create, update, delete | +| `platformFunctionExecutionLog` | findMany, findOne, create, update, delete | +| `platformNamespace` | findMany, findOne, create, update, delete | +| `platformFunctionInvocation` | findMany, findOne, create, update, delete | +| `platformNamespaceEvent` | findMany, findOne, create, update, delete | +| `platformFunctionDefinition` | findMany, findOne, create, update, delete | + +## Table Operations + +### `db.platformSecretDefinition` + +CRUD operations for PlatformSecretDefinition records. + +**Fields:** + +| Field | Type | Editable | +|-------|------|----------| +| `annotations` | JSON | Yes | +| `createdAt` | Datetime | No | +| `databaseId` | UUID | Yes | +| `description` | String | Yes | +| `id` | UUID | No | +| `isBuiltIn` | Boolean | Yes | +| `labels` | JSON | Yes | +| `name` | String | Yes | +| `updatedAt` | Datetime | No | + +**Operations:** + +```typescript +// List all platformSecretDefinition records +const items = await db.platformSecretDefinition.findMany({ select: { annotations: true, createdAt: true, databaseId: true, description: true, id: true, isBuiltIn: true, labels: true, name: true, updatedAt: true } }).execute(); + +// Get one by id +const item = await db.platformSecretDefinition.findOne({ id: '', select: { annotations: true, createdAt: true, databaseId: true, description: true, id: true, isBuiltIn: true, labels: true, name: true, updatedAt: true } }).execute(); + +// Create +const created = await db.platformSecretDefinition.create({ data: { annotations: '', databaseId: '', description: '', isBuiltIn: '', labels: '', name: '' }, select: { id: true } }).execute(); + +// Update +const updated = await db.platformSecretDefinition.update({ where: { id: '' }, data: { annotations: '' }, select: { id: true } }).execute(); + +// Delete +const deleted = await db.platformSecretDefinition.delete({ where: { id: '' } }).execute(); +``` + +### `db.platformFunctionExecutionLog` + +CRUD operations for PlatformFunctionExecutionLog records. + +**Fields:** + +| Field | Type | Editable | +|-------|------|----------| +| `createdAt` | Datetime | No | +| `actorId` | UUID | Yes | +| `databaseId` | UUID | Yes | +| `id` | UUID | No | +| `invocationId` | UUID | Yes | +| `logLevel` | String | Yes | +| `message` | String | Yes | +| `metadata` | JSON | Yes | +| `taskIdentifier` | String | Yes | + +**Operations:** + +```typescript +// List all platformFunctionExecutionLog records +const items = await db.platformFunctionExecutionLog.findMany({ select: { createdAt: true, actorId: true, databaseId: true, id: true, invocationId: true, logLevel: true, message: true, metadata: true, taskIdentifier: true } }).execute(); + +// Get one by id +const item = await db.platformFunctionExecutionLog.findOne({ id: '', select: { createdAt: true, actorId: true, databaseId: true, id: true, invocationId: true, logLevel: true, message: true, metadata: true, taskIdentifier: true } }).execute(); + +// Create +const created = await db.platformFunctionExecutionLog.create({ data: { actorId: '', databaseId: '', invocationId: '', logLevel: '', message: '', metadata: '', taskIdentifier: '' }, select: { id: true } }).execute(); + +// Update +const updated = await db.platformFunctionExecutionLog.update({ where: { id: '' }, data: { actorId: '' }, select: { id: true } }).execute(); + +// Delete +const deleted = await db.platformFunctionExecutionLog.delete({ where: { id: '' } }).execute(); +``` + +### `db.platformNamespace` + +CRUD operations for PlatformNamespace records. + +**Fields:** + +| Field | Type | Editable | +|-------|------|----------| +| `annotations` | JSON | Yes | +| `createdAt` | Datetime | No | +| `databaseId` | UUID | Yes | +| `description` | String | Yes | +| `id` | UUID | No | +| `isActive` | Boolean | Yes | +| `labels` | JSON | Yes | +| `name` | String | Yes | +| `namespaceName` | String | Yes | +| `updatedAt` | Datetime | No | + +**Operations:** + +```typescript +// List all platformNamespace records +const items = await db.platformNamespace.findMany({ select: { annotations: true, createdAt: true, databaseId: true, description: true, id: true, isActive: true, labels: true, name: true, namespaceName: true, updatedAt: true } }).execute(); + +// Get one by id +const item = await db.platformNamespace.findOne({ id: '', select: { annotations: true, createdAt: true, databaseId: true, description: true, id: true, isActive: true, labels: true, name: true, namespaceName: true, updatedAt: true } }).execute(); + +// Create +const created = await db.platformNamespace.create({ data: { annotations: '', databaseId: '', description: '', isActive: '', labels: '', name: '', namespaceName: '' }, select: { id: true } }).execute(); + +// Update +const updated = await db.platformNamespace.update({ where: { id: '' }, data: { annotations: '' }, select: { id: true } }).execute(); + +// Delete +const deleted = await db.platformNamespace.delete({ where: { id: '' } }).execute(); +``` + +### `db.platformFunctionInvocation` + +CRUD operations for PlatformFunctionInvocation records. + +**Fields:** + +| Field | Type | Editable | +|-------|------|----------| +| `createdAt` | Datetime | No | +| `actorId` | UUID | Yes | +| `completedAt` | Datetime | Yes | +| `databaseId` | UUID | Yes | +| `durationMs` | Int | Yes | +| `error` | String | Yes | +| `functionId` | UUID | Yes | +| `id` | UUID | No | +| `jobId` | BigInt | Yes | +| `payload` | JSON | Yes | +| `result` | JSON | Yes | +| `startedAt` | Datetime | Yes | +| `status` | String | Yes | +| `taskIdentifier` | String | Yes | + +**Operations:** + +```typescript +// List all platformFunctionInvocation records +const items = await db.platformFunctionInvocation.findMany({ select: { createdAt: true, actorId: true, completedAt: true, databaseId: true, durationMs: true, error: true, functionId: true, id: true, jobId: true, payload: true, result: true, startedAt: true, status: true, taskIdentifier: true } }).execute(); + +// Get one by id +const item = await db.platformFunctionInvocation.findOne({ id: '', select: { createdAt: true, actorId: true, completedAt: true, databaseId: true, durationMs: true, error: true, functionId: true, id: true, jobId: true, payload: true, result: true, startedAt: true, status: true, taskIdentifier: true } }).execute(); + +// Create +const created = await db.platformFunctionInvocation.create({ data: { actorId: '', completedAt: '', databaseId: '', durationMs: '', error: '', functionId: '', jobId: '', payload: '', result: '', startedAt: '', status: '', taskIdentifier: '' }, select: { id: true } }).execute(); + +// Update +const updated = await db.platformFunctionInvocation.update({ where: { id: '' }, data: { actorId: '' }, select: { id: true } }).execute(); + +// Delete +const deleted = await db.platformFunctionInvocation.delete({ where: { id: '' } }).execute(); +``` + +### `db.platformNamespaceEvent` + +CRUD operations for PlatformNamespaceEvent records. + +**Fields:** + +| Field | Type | Editable | +|-------|------|----------| +| `createdAt` | Datetime | No | +| `actorId` | UUID | Yes | +| `cpuMillicores` | Int | Yes | +| `databaseId` | UUID | Yes | +| `eventType` | String | Yes | +| `id` | UUID | No | +| `memoryBytes` | BigInt | Yes | +| `message` | String | Yes | +| `metadata` | JSON | Yes | +| `metrics` | JSON | Yes | +| `namespaceId` | UUID | Yes | +| `networkEgressBytes` | BigInt | Yes | +| `networkIngressBytes` | BigInt | Yes | +| `podCount` | Int | Yes | +| `storageBytes` | BigInt | Yes | + +**Operations:** + +```typescript +// List all platformNamespaceEvent records +const items = await db.platformNamespaceEvent.findMany({ select: { createdAt: true, actorId: true, cpuMillicores: true, databaseId: true, eventType: true, id: true, memoryBytes: true, message: true, metadata: true, metrics: true, namespaceId: true, networkEgressBytes: true, networkIngressBytes: true, podCount: true, storageBytes: true } }).execute(); + +// Get one by id +const item = await db.platformNamespaceEvent.findOne({ id: '', select: { createdAt: true, actorId: true, cpuMillicores: true, databaseId: true, eventType: true, id: true, memoryBytes: true, message: true, metadata: true, metrics: true, namespaceId: true, networkEgressBytes: true, networkIngressBytes: true, podCount: true, storageBytes: true } }).execute(); + +// Create +const created = await db.platformNamespaceEvent.create({ data: { actorId: '', cpuMillicores: '', databaseId: '', eventType: '', memoryBytes: '', message: '', metadata: '', metrics: '', namespaceId: '', networkEgressBytes: '', networkIngressBytes: '', podCount: '', storageBytes: '' }, select: { id: true } }).execute(); + +// Update +const updated = await db.platformNamespaceEvent.update({ where: { id: '' }, data: { actorId: '' }, select: { id: true } }).execute(); + +// Delete +const deleted = await db.platformNamespaceEvent.delete({ where: { id: '' } }).execute(); +``` + +### `db.platformFunctionDefinition` + +CRUD operations for PlatformFunctionDefinition records. + +**Fields:** + +| Field | Type | Editable | +|-------|------|----------| +| `createdAt` | Datetime | No | +| `description` | String | Yes | +| `id` | UUID | No | +| `isBuiltIn` | Boolean | Yes | +| `isInvocable` | Boolean | Yes | +| `maxAttempts` | Int | Yes | +| `name` | String | Yes | +| `namespaceId` | UUID | Yes | +| `priority` | Int | Yes | +| `queueName` | String | Yes | +| `scope` | String | Yes | +| `serviceUrl` | String | Yes | +| `taskIdentifier` | String | Yes | +| `updatedAt` | Datetime | No | +| `payloadSchema` | JSON | Yes | +| `requiredConfigs` | FunctionRequirement | Yes | +| `requiredSecrets` | FunctionRequirement | Yes | + +**Operations:** + +```typescript +// List all platformFunctionDefinition records +const items = await db.platformFunctionDefinition.findMany({ select: { createdAt: true, description: true, id: true, isBuiltIn: true, isInvocable: true, maxAttempts: true, name: true, namespaceId: true, priority: true, queueName: true, scope: true, serviceUrl: true, taskIdentifier: true, updatedAt: true, payloadSchema: true, requiredConfigs: true, requiredSecrets: true } }).execute(); + +// Get one by id +const item = await db.platformFunctionDefinition.findOne({ id: '', select: { createdAt: true, description: true, id: true, isBuiltIn: true, isInvocable: true, maxAttempts: true, name: true, namespaceId: true, priority: true, queueName: true, scope: true, serviceUrl: true, taskIdentifier: true, updatedAt: true, payloadSchema: true, requiredConfigs: true, requiredSecrets: true } }).execute(); + +// Create +const created = await db.platformFunctionDefinition.create({ data: { description: '', isBuiltIn: '', isInvocable: '', maxAttempts: '', name: '', namespaceId: '', priority: '', queueName: '', scope: '', serviceUrl: '', taskIdentifier: '', payloadSchema: '', requiredConfigs: '', requiredSecrets: '' }, select: { id: true } }).execute(); + +// Update +const updated = await db.platformFunctionDefinition.update({ where: { id: '' }, data: { description: '' }, select: { id: true } }).execute(); + +// Delete +const deleted = await db.platformFunctionDefinition.delete({ where: { id: '' } }).execute(); +``` + +## Custom Operations + +### `db.mutation.provisionBucket` + +Provision an S3 bucket for a logical bucket in the database. +Reads the bucket config via RLS, then creates and configures +the S3 bucket with the appropriate privacy policies, CORS rules, +and lifecycle settings. + +- **Type:** mutation +- **Arguments:** + + | Argument | Type | + |----------|------| + | `input` | ProvisionBucketInput (required) | + +```typescript +const result = await db.mutation.provisionBucket({ input: { bucketKey: '', ownerId: '' } }).execute(); +``` + +--- + +Built by the [Constructive](https://constructive.io) team. + +## 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/sdk/functions-sdk/src/infra/orm/client.ts b/sdk/functions-sdk/src/infra/orm/client.ts new file mode 100644 index 00000000..16e683c7 --- /dev/null +++ b/sdk/functions-sdk/src/infra/orm/client.ts @@ -0,0 +1,244 @@ +/** + * ORM Client - Runtime GraphQL executor + * @generated by @constructive-io/graphql-codegen + * DO NOT EDIT - changes will be overwritten + */ +import type { + GraphQLAdapter, + GraphQLError, + QueryResult, +} from '@constructive-io/graphql-query/runtime'; +import { createFetch } from '@constructive-io/graphql-query/runtime'; + +import type { + ConnectionState, + ConnectionStateListener, + RealtimeConfig, + SubscribeOptions, + SubscriptionEvent, + SubscriptionFieldMeta, + Unsubscribe, +} from './realtime'; +import { RealtimeManager } from './realtime'; + +export type { + GraphQLAdapter, + GraphQLError, + QueryResult, +} from '@constructive-io/graphql-query/runtime'; + +export type { + ConnectionState, + ConnectionStateListener, + RealtimeConfig, + SubscribeOptions, + SubscriptionEvent, + SubscriptionFieldMeta, + SubscriptionOperation, + Unsubscribe, + WsClient, +} from './realtime'; +export { RealtimeManager } from './realtime'; + +/** + * Default adapter that uses fetch for HTTP requests. + * + * When no custom fetch is provided, uses @constructive-io/fetch which + * handles *.localhost DNS rewriting and Host header preservation in + * Node.js. Pass a custom fetch to override for test mocking or custom + * proxy/credentials. + */ +export class FetchAdapter implements GraphQLAdapter { + private headers: Record; + private fetchFn: typeof globalThis.fetch; + + constructor( + private endpoint: string, + headers?: Record, + fetchFn?: typeof globalThis.fetch + ) { + this.headers = headers ?? {}; + this.fetchFn = (fetchFn ?? createFetch()).bind(globalThis); + } + + async execute(document: string, variables?: Record): Promise> { + const response = await this.fetchFn(this.endpoint, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + ...this.headers, + }, + body: JSON.stringify({ + query: document, + variables: variables ?? {}, + }), + }); + + if (!response.ok) { + return { + ok: false, + data: null, + errors: [{ message: `HTTP ${response.status}: ${response.statusText}` }], + }; + } + + const json = (await response.json()) as { + data?: T; + errors?: GraphQLError[]; + }; + + if (json.errors && json.errors.length > 0) { + return { + ok: false, + data: null, + errors: json.errors, + }; + } + + return { + ok: true, + data: json.data as T, + errors: undefined, + }; + } + + setHeaders(headers: Record): void { + this.headers = { ...this.headers, ...headers }; + } + + getEndpoint(): string { + return this.endpoint; + } +} + +/** + * Configuration for creating an ORM client. + * Either provide endpoint (and optional headers/fetch) for HTTP requests, + * or provide a custom adapter for alternative execution strategies. + */ +export interface OrmClientConfig { + /** GraphQL endpoint URL (required if adapter not provided) */ + endpoint?: string; + /** Default headers for HTTP requests (only used with endpoint) */ + headers?: Record; + /** + * Custom fetch implementation. Defaults to createFetch() from + * @constructive-io/graphql-query/runtime which handles *.localhost + * DNS and Host headers in Node.js. Pass your own for test mocking + * or custom proxy/credentials. + */ + fetch?: typeof globalThis.fetch; + /** Custom adapter for GraphQL execution (overrides endpoint/headers/fetch) */ + adapter?: GraphQLAdapter; + /** + * Optional realtime (WebSocket) configuration. + * When provided, enables subscription methods on models. + * The WebSocket connection is created lazily on first subscribe(). + */ + realtime?: RealtimeConfig; +} + +/** + * Error thrown when GraphQL request fails + */ +export class GraphQLRequestError extends Error { + constructor( + public readonly errors: GraphQLError[], + public readonly data: unknown = null + ) { + const messages = errors.map((e) => e.message).join('; '); + super(`GraphQL Error: ${messages}`); + this.name = 'GraphQLRequestError'; + } +} + +export class OrmClient { + private adapter: GraphQLAdapter; + private realtimeManager?: RealtimeManager; + + constructor(config: OrmClientConfig) { + if (config.adapter) { + this.adapter = config.adapter; + } else if (config.endpoint) { + this.adapter = new FetchAdapter(config.endpoint, config.headers, config.fetch); + } else { + throw new Error('OrmClientConfig requires either an endpoint or a custom adapter'); + } + + if (config.realtime) { + this.realtimeManager = new RealtimeManager(config.realtime); + } + } + + async execute(document: string, variables?: Record): Promise> { + return this.adapter.execute(document, variables); + } + + /** + * Subscribe to a GraphQL subscription operation. + * Used by generated model subscribe() methods. + * @throws Error if realtime is not configured + */ + subscribe( + meta: SubscriptionFieldMeta, + document: string, + variables: Record, + options: { + onEvent: (event: SubscriptionEvent) => void; + onError?: (error: Error) => void; + onComplete?: () => void; + } + ): Unsubscribe { + if (!this.realtimeManager) { + throw new Error( + 'Realtime not configured. Pass a `realtime` option to createClient() to enable subscriptions.' + ); + } + return this.realtimeManager.subscribe(meta, document, variables, options); + } + + /** + * Set headers for requests. + * Only works if the adapter supports headers. + */ + setHeaders(headers: Record): void { + if (this.adapter.setHeaders) { + this.adapter.setHeaders(headers); + } + } + + /** + * Get the endpoint URL. + * Returns empty string if the adapter doesn't have an endpoint. + */ + getEndpoint(): string { + return this.adapter.getEndpoint?.() ?? ''; + } + + /** Get current WebSocket connection state */ + getConnectionState(): ConnectionState { + return this.realtimeManager?.getConnectionState() ?? 'disconnected'; + } + + /** Register a listener for WebSocket connection state changes */ + onConnectionStateChange(listener: ConnectionStateListener): Unsubscribe { + if (!this.realtimeManager) return () => {}; + return this.realtimeManager.onConnectionStateChange(listener); + } + + /** Number of active subscriptions */ + getActiveSubscriptionCount(): number { + return this.realtimeManager?.getActiveSubscriptionCount() ?? 0; + } + + /** Whether realtime is configured */ + get isRealtimeEnabled(): boolean { + return this.realtimeManager !== undefined; + } + + /** Dispose the realtime manager (close WebSocket) */ + dispose(): void { + this.realtimeManager?.dispose(); + } +} diff --git a/sdk/functions-sdk/src/infra/orm/index.ts b/sdk/functions-sdk/src/infra/orm/index.ts new file mode 100644 index 00000000..a93bd8ec --- /dev/null +++ b/sdk/functions-sdk/src/infra/orm/index.ts @@ -0,0 +1,55 @@ +/** + * ORM Client - createClient factory + * @generated by @constructive-io/graphql-codegen + * DO NOT EDIT - changes will be overwritten + */ +import { OrmClient } from './client'; +import type { OrmClientConfig } from './client'; +import { PlatformSecretDefinitionModel } from './models/platformSecretDefinition'; +import { PlatformFunctionExecutionLogModel } from './models/platformFunctionExecutionLog'; +import { PlatformNamespaceModel } from './models/platformNamespace'; +import { PlatformFunctionInvocationModel } from './models/platformFunctionInvocation'; +import { PlatformNamespaceEventModel } from './models/platformNamespaceEvent'; +import { PlatformFunctionDefinitionModel } from './models/platformFunctionDefinition'; +import { createMutationOperations } from './mutation'; +export type { OrmClientConfig, QueryResult, GraphQLError, GraphQLAdapter } from './client'; +export { GraphQLRequestError, FetchAdapter } from './client'; +export { QueryBuilder } from './query-builder'; +export * from './select-types'; +export * from './models'; +export { createMutationOperations } from './mutation'; +/** + * Create an ORM client instance + * + * @example + * ```typescript + * const db = createClient({ + * endpoint: 'https://api.example.com/graphql', + * headers: { Authorization: 'Bearer token' }, + * }); + * + * // Query users + * const users = await db.user.findMany({ + * select: { id: true, name: true }, + * first: 10, + * }).execute(); + * + * // Create a user + * const newUser = await db.user.create({ + * data: { name: 'John', email: 'john@example.com' }, + * select: { id: true }, + * }).execute(); + * ``` + */ +export function createClient(config: OrmClientConfig) { + const client = new OrmClient(config); + return { + platformSecretDefinition: new PlatformSecretDefinitionModel(client), + platformFunctionExecutionLog: new PlatformFunctionExecutionLogModel(client), + platformNamespace: new PlatformNamespaceModel(client), + platformFunctionInvocation: new PlatformFunctionInvocationModel(client), + platformNamespaceEvent: new PlatformNamespaceEventModel(client), + platformFunctionDefinition: new PlatformFunctionDefinitionModel(client), + mutation: createMutationOperations(client), + }; +} diff --git a/sdk/functions-sdk/src/infra/orm/input-types.ts b/sdk/functions-sdk/src/infra/orm/input-types.ts new file mode 100644 index 00000000..7c76315c --- /dev/null +++ b/sdk/functions-sdk/src/infra/orm/input-types.ts @@ -0,0 +1,1479 @@ +/** + * GraphQL types for ORM client + * @generated by @constructive-io/graphql-codegen + * DO NOT EDIT - changes will be overwritten + */ +// ============ Scalar Filter Types ============ +export interface StringFilter { + isNull?: boolean; + equalTo?: string; + notEqualTo?: string; + distinctFrom?: string; + notDistinctFrom?: string; + in?: string[]; + notIn?: string[]; + lessThan?: string; + lessThanOrEqualTo?: string; + greaterThan?: string; + greaterThanOrEqualTo?: string; + includes?: string; + notIncludes?: string; + includesInsensitive?: string; + notIncludesInsensitive?: string; + startsWith?: string; + notStartsWith?: string; + startsWithInsensitive?: string; + notStartsWithInsensitive?: string; + endsWith?: string; + notEndsWith?: string; + endsWithInsensitive?: string; + notEndsWithInsensitive?: string; + like?: string; + notLike?: string; + likeInsensitive?: string; + notLikeInsensitive?: string; +} +export interface IntFilter { + isNull?: boolean; + equalTo?: number; + notEqualTo?: number; + distinctFrom?: number; + notDistinctFrom?: number; + in?: number[]; + notIn?: number[]; + lessThan?: number; + lessThanOrEqualTo?: number; + greaterThan?: number; + greaterThanOrEqualTo?: number; +} +export interface FloatFilter { + isNull?: boolean; + equalTo?: number; + notEqualTo?: number; + distinctFrom?: number; + notDistinctFrom?: number; + in?: number[]; + notIn?: number[]; + lessThan?: number; + lessThanOrEqualTo?: number; + greaterThan?: number; + greaterThanOrEqualTo?: number; +} +export interface BooleanFilter { + isNull?: boolean; + equalTo?: boolean; + notEqualTo?: boolean; +} +export interface UUIDFilter { + isNull?: boolean; + equalTo?: string; + notEqualTo?: string; + distinctFrom?: string; + notDistinctFrom?: string; + in?: string[]; + notIn?: string[]; +} +export interface DatetimeFilter { + isNull?: boolean; + equalTo?: string; + notEqualTo?: string; + distinctFrom?: string; + notDistinctFrom?: string; + in?: string[]; + notIn?: string[]; + lessThan?: string; + lessThanOrEqualTo?: string; + greaterThan?: string; + greaterThanOrEqualTo?: string; +} +export interface DateFilter { + isNull?: boolean; + equalTo?: string; + notEqualTo?: string; + distinctFrom?: string; + notDistinctFrom?: string; + in?: string[]; + notIn?: string[]; + lessThan?: string; + lessThanOrEqualTo?: string; + greaterThan?: string; + greaterThanOrEqualTo?: string; +} +export interface JSONFilter { + isNull?: boolean; + equalTo?: Record; + notEqualTo?: Record; + distinctFrom?: Record; + notDistinctFrom?: Record; + contains?: Record; + containedBy?: Record; + containsKey?: string; + containsAllKeys?: string[]; + containsAnyKeys?: string[]; +} +export interface BigIntFilter { + isNull?: boolean; + equalTo?: string; + notEqualTo?: string; + distinctFrom?: string; + notDistinctFrom?: string; + in?: string[]; + notIn?: string[]; + lessThan?: string; + lessThanOrEqualTo?: string; + greaterThan?: string; + greaterThanOrEqualTo?: string; +} +export interface BigFloatFilter { + isNull?: boolean; + equalTo?: string; + notEqualTo?: string; + distinctFrom?: string; + notDistinctFrom?: string; + in?: string[]; + notIn?: string[]; + lessThan?: string; + lessThanOrEqualTo?: string; + greaterThan?: string; + greaterThanOrEqualTo?: string; +} +export interface BitStringFilter { + isNull?: boolean; + equalTo?: string; + notEqualTo?: string; +} +export interface InternetAddressFilter { + isNull?: boolean; + equalTo?: string; + notEqualTo?: string; + distinctFrom?: string; + notDistinctFrom?: string; + in?: string[]; + notIn?: string[]; + lessThan?: string; + lessThanOrEqualTo?: string; + greaterThan?: string; + greaterThanOrEqualTo?: string; + contains?: string; + containsOrEqualTo?: string; + containedBy?: string; + containedByOrEqualTo?: string; + containsOrContainedBy?: string; +} +export interface FullTextFilter { + matches?: string; +} +export interface VectorFilter { + isNull?: boolean; + equalTo?: number[]; + notEqualTo?: number[]; + distinctFrom?: number[]; + notDistinctFrom?: number[]; +} +export interface StringListFilter { + isNull?: boolean; + equalTo?: string[]; + notEqualTo?: string[]; + distinctFrom?: string[]; + notDistinctFrom?: string[]; + lessThan?: string[]; + lessThanOrEqualTo?: string[]; + greaterThan?: string[]; + greaterThanOrEqualTo?: string[]; + contains?: string[]; + containedBy?: string[]; + overlaps?: string[]; + anyEqualTo?: string; + anyNotEqualTo?: string; + anyLessThan?: string; + anyLessThanOrEqualTo?: string; + anyGreaterThan?: string; + anyGreaterThanOrEqualTo?: string; +} +export interface IntListFilter { + isNull?: boolean; + equalTo?: number[]; + notEqualTo?: number[]; + distinctFrom?: number[]; + notDistinctFrom?: number[]; + lessThan?: number[]; + lessThanOrEqualTo?: number[]; + greaterThan?: number[]; + greaterThanOrEqualTo?: number[]; + contains?: number[]; + containedBy?: number[]; + overlaps?: number[]; + anyEqualTo?: number; + anyNotEqualTo?: number; + anyLessThan?: number; + anyLessThanOrEqualTo?: number; + anyGreaterThan?: number; + anyGreaterThanOrEqualTo?: number; +} +export interface UUIDListFilter { + isNull?: boolean; + equalTo?: string[]; + notEqualTo?: string[]; + distinctFrom?: string[]; + notDistinctFrom?: string[]; + lessThan?: string[]; + lessThanOrEqualTo?: string[]; + greaterThan?: string[]; + greaterThanOrEqualTo?: string[]; + contains?: string[]; + containedBy?: string[]; + overlaps?: string[]; + anyEqualTo?: string; + anyNotEqualTo?: string; + anyLessThan?: string; + anyLessThanOrEqualTo?: string; + anyGreaterThan?: string; + anyGreaterThanOrEqualTo?: string; +} +// ============ Custom Scalar Types ============ +export type FunctionRequirement = unknown; +/** Global secret name registry — declares which secrets the platform recognizes. Actual values live in app_secrets. */ +// ============ Entity Types ============ +export interface PlatformSecretDefinition { + /** Freeform metadata annotations for secret definitions */ + annotations?: Record | null; + createdAt?: string | null; + /** Database that owns this resource (database-scoped isolation) */ + databaseId?: string | null; + /** Human-readable description of what this secret is used for */ + description?: string | null; + id: string; + /** Whether this row was seeded as a built-in secret definition. Built-in rows are immutable. */ + isBuiltIn?: boolean | null; + /** Key-value metadata for filtering and grouping secret definitions */ + labels?: Record | null; + /** Secret name (must match app_secrets.name for resolution) */ + name?: string | null; + updatedAt?: string | null; +} +/** Function execution logs — structured console output per invocation */ +export interface PlatformFunctionExecutionLog { + /** Log entry timestamp (partition key) */ + createdAt?: string | null; + /** User who triggered the execution (NULL for system/cron) */ + actorId?: string | null; + /** Database this log entry belongs to */ + databaseId?: string | null; + /** Unique log entry identifier */ + id: string; + /** Invocation this log entry belongs to (NULL for jobs) */ + invocationId?: string | null; + /** Log severity: debug, info, warn, error */ + logLevel?: string | null; + /** Log message text */ + message?: string | null; + /** Structured context (labels, trace data, extra fields) */ + metadata?: Record | null; + /** Function routing key (NULL for generic job logs) */ + taskIdentifier?: string | null; +} +/** Logical namespace containers for grouping secrets, config, functions, and other resources */ +export interface PlatformNamespace { + /** Freeform metadata for tooling and operational notes */ + annotations?: Record | null; + createdAt?: string | null; + /** Database that owns this resource (database-scoped isolation) */ + databaseId?: string | null; + /** Optional human-readable description of this namespace */ + description?: string | null; + id: string; + /** Whether this namespace is active (soft-disable for filtering) */ + isActive?: boolean | null; + /** Key/value pairs for selecting and filtering namespaces */ + labels?: Record | null; + /** Human-readable namespace name (e.g. default, production, oauth) */ + name?: string | null; + /** Globally unique computed namespace identifier via inflection.underscore */ + namespaceName?: string | null; + updatedAt?: string | null; +} +/** Function invocation log — INSERT to call a function (business-layer, metered) */ +export interface PlatformFunctionInvocation { + /** Invocation creation timestamp (partition key) */ + createdAt?: string | null; + /** Who triggered the invocation */ + actorId?: string | null; + /** When execution completed */ + completedAt?: string | null; + /** Database that owns this resource (database-scoped isolation) */ + databaseId?: string | null; + /** Wall-clock execution time in milliseconds */ + durationMs?: number | null; + /** Error message when status is failed */ + error?: string | null; + /** Resolved function definition ID */ + functionId?: string | null; + /** Unique invocation identifier */ + id: string; + /** FK to app_jobs.jobs — the underlying transport */ + jobId?: string | null; + /** Function input payload */ + payload?: Record | null; + /** Function return value (success) or structured error (failure) */ + result?: Record | null; + /** When execution started */ + startedAt?: string | null; + /** Lifecycle: pending → running → completed/failed/cancelled */ + status?: string | null; + /** Routing slug (scope:name) for the job worker */ + taskIdentifier?: string | null; +} +/** Namespace lifecycle events — audit log of creation, activation, deactivation, label changes */ +export interface PlatformNamespaceEvent { + /** Event timestamp (partition key) */ + createdAt?: string | null; + /** User who triggered this event (NULL for system/automated) */ + actorId?: string | null; + /** CPU usage in millicores at time of event */ + cpuMillicores?: number | null; + /** Database that owns this resource (database-scoped isolation) */ + databaseId?: string | null; + /** Event type: created, activated, deactivated, labels_updated, annotations_updated, renamed */ + eventType?: string | null; + /** Unique event identifier */ + id: string; + /** Memory usage in bytes at time of event */ + memoryBytes?: string | null; + /** Human-readable description of the event */ + message?: string | null; + /** Structured context (old/new values, labels diff, etc.) */ + metadata?: Record | null; + /** Additional resource metrics (gpu, replicas, quotas, etc.) */ + metrics?: Record | null; + /** Namespace this event belongs to */ + namespaceId?: string | null; + /** Network egress in bytes during event window */ + networkEgressBytes?: string | null; + /** Network ingress in bytes during event window */ + networkIngressBytes?: string | null; + /** Number of active pods in the namespace at time of event */ + podCount?: number | null; + /** Storage usage in bytes at time of event */ + storageBytes?: string | null; +} +/** Function definitions — registered cloud functions with routing, queue, and retry configuration */ +export interface PlatformFunctionDefinition { + createdAt?: string | null; + /** Human-readable description of what this function does */ + description?: string | null; + id: string; + /** Whether this function is a built-in platform function (synced from platform) vs user-created */ + isBuiltIn?: boolean | null; + /** Whether this function can be called via function_invocations (public API). Default false = internal-only via add_job() */ + isInvocable?: boolean | null; + /** Maximum retry attempts for the underlying job */ + maxAttempts?: number | null; + /** Function name within scope (e.g. send_verification_link, process_file_embedding) */ + name?: string | null; + /** Namespace this function belongs to (FK to namespaces table) */ + namespaceId?: string | null; + /** Job priority (lower = higher priority) */ + priority?: number | null; + /** Job queue name for serialization (e.g. email, ai, default) */ + queueName?: string | null; + /** Function grouping scope (e.g. email, embed, chunk, custom) */ + scope?: string | null; + /** Optional service URL override for function dispatch. NULL = use gateway convention (gatewayUrl/task_identifier). Set for customer-deployed functions or external endpoints. */ + serviceUrl?: string | null; + /** Computed routing slug: scope:name (used by Knative job worker for dispatch) */ + taskIdentifier?: string | null; + updatedAt?: string | null; + payloadSchema?: Record | null; + /** Embedded config requirements: array of (name, required) tuples */ + requiredConfigs?: FunctionRequirement[] | null; + /** Embedded secret requirements: array of (name, required) tuples */ + requiredSecrets?: FunctionRequirement[] | null; +} +// ============ Relation Helper Types ============ +export interface ConnectionResult { + nodes: T[]; + totalCount: number; + pageInfo: PageInfo; +} +export interface PageInfo { + hasNextPage: boolean; + hasPreviousPage: boolean; + startCursor?: string | null; + endCursor?: string | null; +} +// ============ Entity Relation Types ============ +export interface PlatformSecretDefinitionRelations {} +export interface PlatformFunctionExecutionLogRelations {} +export interface PlatformNamespaceRelations {} +export interface PlatformFunctionInvocationRelations {} +export interface PlatformNamespaceEventRelations {} +export interface PlatformFunctionDefinitionRelations { + namespace?: PlatformNamespace | null; +} +// ============ Entity Types With Relations ============ +export type PlatformSecretDefinitionWithRelations = PlatformSecretDefinition & + PlatformSecretDefinitionRelations; +export type PlatformFunctionExecutionLogWithRelations = PlatformFunctionExecutionLog & + PlatformFunctionExecutionLogRelations; +export type PlatformNamespaceWithRelations = PlatformNamespace & PlatformNamespaceRelations; +export type PlatformFunctionInvocationWithRelations = PlatformFunctionInvocation & + PlatformFunctionInvocationRelations; +export type PlatformNamespaceEventWithRelations = PlatformNamespaceEvent & + PlatformNamespaceEventRelations; +export type PlatformFunctionDefinitionWithRelations = PlatformFunctionDefinition & + PlatformFunctionDefinitionRelations; +// ============ Entity Select Types ============ +export type PlatformSecretDefinitionSelect = { + annotations?: boolean; + createdAt?: boolean; + databaseId?: boolean; + description?: boolean; + id?: boolean; + isBuiltIn?: boolean; + labels?: boolean; + name?: boolean; + updatedAt?: boolean; +}; +export type PlatformFunctionExecutionLogSelect = { + createdAt?: boolean; + actorId?: boolean; + databaseId?: boolean; + id?: boolean; + invocationId?: boolean; + logLevel?: boolean; + message?: boolean; + metadata?: boolean; + taskIdentifier?: boolean; +}; +export type PlatformNamespaceSelect = { + annotations?: boolean; + createdAt?: boolean; + databaseId?: boolean; + description?: boolean; + id?: boolean; + isActive?: boolean; + labels?: boolean; + name?: boolean; + namespaceName?: boolean; + updatedAt?: boolean; +}; +export type PlatformFunctionInvocationSelect = { + createdAt?: boolean; + actorId?: boolean; + completedAt?: boolean; + databaseId?: boolean; + durationMs?: boolean; + error?: boolean; + functionId?: boolean; + id?: boolean; + jobId?: boolean; + payload?: boolean; + result?: boolean; + startedAt?: boolean; + status?: boolean; + taskIdentifier?: boolean; +}; +export type PlatformNamespaceEventSelect = { + createdAt?: boolean; + actorId?: boolean; + cpuMillicores?: boolean; + databaseId?: boolean; + eventType?: boolean; + id?: boolean; + memoryBytes?: boolean; + message?: boolean; + metadata?: boolean; + metrics?: boolean; + namespaceId?: boolean; + networkEgressBytes?: boolean; + networkIngressBytes?: boolean; + podCount?: boolean; + storageBytes?: boolean; +}; +export type PlatformFunctionDefinitionSelect = { + createdAt?: boolean; + description?: boolean; + id?: boolean; + isBuiltIn?: boolean; + isInvocable?: boolean; + maxAttempts?: boolean; + name?: boolean; + namespaceId?: boolean; + priority?: boolean; + queueName?: boolean; + scope?: boolean; + serviceUrl?: boolean; + taskIdentifier?: boolean; + updatedAt?: boolean; + payloadSchema?: boolean; + requiredConfigs?: boolean; + requiredSecrets?: boolean; + namespace?: { + select: PlatformNamespaceSelect; + }; +}; +// ============ Table Filter Types ============ +export interface PlatformSecretDefinitionFilter { + /** Filter by the object’s `annotations` field. */ + annotations?: JSONFilter; + /** Filter by the object’s `createdAt` field. */ + createdAt?: DatetimeFilter; + /** Filter by the object’s `databaseId` field. */ + databaseId?: UUIDFilter; + /** Filter by the object’s `description` field. */ + description?: StringFilter; + /** Filter by the object’s `id` field. */ + id?: UUIDFilter; + /** Filter by the object’s `isBuiltIn` field. */ + isBuiltIn?: BooleanFilter; + /** Filter by the object’s `labels` field. */ + labels?: JSONFilter; + /** Filter by the object’s `name` field. */ + name?: StringFilter; + /** Filter by the object’s `updatedAt` field. */ + updatedAt?: DatetimeFilter; + /** Checks for all expressions in this list. */ + and?: PlatformSecretDefinitionFilter[]; + /** Checks for any expressions in this list. */ + or?: PlatformSecretDefinitionFilter[]; + /** Negates the expression. */ + not?: PlatformSecretDefinitionFilter; +} +export interface PlatformFunctionExecutionLogFilter { + /** Filter by the object’s `createdAt` field. */ + createdAt?: DatetimeFilter; + /** Filter by the object’s `actorId` field. */ + actorId?: UUIDFilter; + /** Filter by the object’s `databaseId` field. */ + databaseId?: UUIDFilter; + /** Filter by the object’s `id` field. */ + id?: UUIDFilter; + /** Filter by the object’s `invocationId` field. */ + invocationId?: UUIDFilter; + /** Filter by the object’s `logLevel` field. */ + logLevel?: StringFilter; + /** Filter by the object’s `message` field. */ + message?: StringFilter; + /** Filter by the object’s `metadata` field. */ + metadata?: JSONFilter; + /** Filter by the object’s `taskIdentifier` field. */ + taskIdentifier?: StringFilter; + /** Checks for all expressions in this list. */ + and?: PlatformFunctionExecutionLogFilter[]; + /** Checks for any expressions in this list. */ + or?: PlatformFunctionExecutionLogFilter[]; + /** Negates the expression. */ + not?: PlatformFunctionExecutionLogFilter; +} +export interface PlatformNamespaceFilter { + /** Filter by the object’s `annotations` field. */ + annotations?: JSONFilter; + /** Filter by the object’s `createdAt` field. */ + createdAt?: DatetimeFilter; + /** Filter by the object’s `databaseId` field. */ + databaseId?: UUIDFilter; + /** Filter by the object’s `description` field. */ + description?: StringFilter; + /** Filter by the object’s `id` field. */ + id?: UUIDFilter; + /** Filter by the object’s `isActive` field. */ + isActive?: BooleanFilter; + /** Filter by the object’s `labels` field. */ + labels?: JSONFilter; + /** Filter by the object’s `name` field. */ + name?: StringFilter; + /** Filter by the object’s `namespaceName` field. */ + namespaceName?: StringFilter; + /** Filter by the object’s `updatedAt` field. */ + updatedAt?: DatetimeFilter; + /** Checks for all expressions in this list. */ + and?: PlatformNamespaceFilter[]; + /** Checks for any expressions in this list. */ + or?: PlatformNamespaceFilter[]; + /** Negates the expression. */ + not?: PlatformNamespaceFilter; +} +export interface PlatformFunctionInvocationFilter { + /** Filter by the object’s `createdAt` field. */ + createdAt?: DatetimeFilter; + /** Filter by the object’s `actorId` field. */ + actorId?: UUIDFilter; + /** Filter by the object’s `completedAt` field. */ + completedAt?: DatetimeFilter; + /** Filter by the object’s `databaseId` field. */ + databaseId?: UUIDFilter; + /** Filter by the object’s `durationMs` field. */ + durationMs?: IntFilter; + /** Filter by the object’s `error` field. */ + error?: StringFilter; + /** Filter by the object’s `functionId` field. */ + functionId?: UUIDFilter; + /** Filter by the object’s `id` field. */ + id?: UUIDFilter; + /** Filter by the object’s `jobId` field. */ + jobId?: BigIntFilter; + /** Filter by the object’s `payload` field. */ + payload?: JSONFilter; + /** Filter by the object’s `result` field. */ + result?: JSONFilter; + /** Filter by the object’s `startedAt` field. */ + startedAt?: DatetimeFilter; + /** Filter by the object’s `status` field. */ + status?: StringFilter; + /** Filter by the object’s `taskIdentifier` field. */ + taskIdentifier?: StringFilter; + /** Checks for all expressions in this list. */ + and?: PlatformFunctionInvocationFilter[]; + /** Checks for any expressions in this list. */ + or?: PlatformFunctionInvocationFilter[]; + /** Negates the expression. */ + not?: PlatformFunctionInvocationFilter; +} +export interface PlatformNamespaceEventFilter { + /** Filter by the object’s `createdAt` field. */ + createdAt?: DatetimeFilter; + /** Filter by the object’s `actorId` field. */ + actorId?: UUIDFilter; + /** Filter by the object’s `cpuMillicores` field. */ + cpuMillicores?: IntFilter; + /** Filter by the object’s `databaseId` field. */ + databaseId?: UUIDFilter; + /** Filter by the object’s `eventType` field. */ + eventType?: StringFilter; + /** Filter by the object’s `id` field. */ + id?: UUIDFilter; + /** Filter by the object’s `memoryBytes` field. */ + memoryBytes?: BigIntFilter; + /** Filter by the object’s `message` field. */ + message?: StringFilter; + /** Filter by the object’s `metadata` field. */ + metadata?: JSONFilter; + /** Filter by the object’s `metrics` field. */ + metrics?: JSONFilter; + /** Filter by the object’s `namespaceId` field. */ + namespaceId?: UUIDFilter; + /** Filter by the object’s `networkEgressBytes` field. */ + networkEgressBytes?: BigIntFilter; + /** Filter by the object’s `networkIngressBytes` field. */ + networkIngressBytes?: BigIntFilter; + /** Filter by the object’s `podCount` field. */ + podCount?: IntFilter; + /** Filter by the object’s `storageBytes` field. */ + storageBytes?: BigIntFilter; + /** Checks for all expressions in this list. */ + and?: PlatformNamespaceEventFilter[]; + /** Checks for any expressions in this list. */ + or?: PlatformNamespaceEventFilter[]; + /** Negates the expression. */ + not?: PlatformNamespaceEventFilter; +} +export interface PlatformFunctionDefinitionFilter { + /** Filter by the object’s `createdAt` field. */ + createdAt?: DatetimeFilter; + /** Filter by the object’s `description` field. */ + description?: StringFilter; + /** Filter by the object’s `id` field. */ + id?: UUIDFilter; + /** Filter by the object’s `isBuiltIn` field. */ + isBuiltIn?: BooleanFilter; + /** Filter by the object’s `isInvocable` field. */ + isInvocable?: BooleanFilter; + /** Filter by the object’s `maxAttempts` field. */ + maxAttempts?: IntFilter; + /** Filter by the object’s `name` field. */ + name?: StringFilter; + /** Filter by the object’s `namespaceId` field. */ + namespaceId?: UUIDFilter; + /** Filter by the object’s `priority` field. */ + priority?: IntFilter; + /** Filter by the object’s `queueName` field. */ + queueName?: StringFilter; + /** Filter by the object’s `scope` field. */ + scope?: StringFilter; + /** Filter by the object’s `serviceUrl` field. */ + serviceUrl?: StringFilter; + /** Filter by the object’s `taskIdentifier` field. */ + taskIdentifier?: StringFilter; + /** Filter by the object’s `updatedAt` field. */ + updatedAt?: DatetimeFilter; + /** Filter by the object’s `payloadSchema` field. */ + payloadSchema?: JSONFilter; + /** Checks for all expressions in this list. */ + and?: PlatformFunctionDefinitionFilter[]; + /** Checks for any expressions in this list. */ + or?: PlatformFunctionDefinitionFilter[]; + /** Negates the expression. */ + not?: PlatformFunctionDefinitionFilter; + /** Filter by the object’s `namespace` relation. */ + namespace?: PlatformNamespaceFilter; + /** A related `namespace` exists. */ + namespaceExists?: boolean; +} +// ============ OrderBy Types ============ +export type PlatformSecretDefinitionOrderBy = + | 'NATURAL' + | 'PRIMARY_KEY_ASC' + | 'PRIMARY_KEY_DESC' + | 'ANNOTATIONS_ASC' + | 'ANNOTATIONS_DESC' + | 'CREATED_AT_ASC' + | 'CREATED_AT_DESC' + | 'DATABASE_ID_ASC' + | 'DATABASE_ID_DESC' + | 'DESCRIPTION_ASC' + | 'DESCRIPTION_DESC' + | 'ID_ASC' + | 'ID_DESC' + | 'IS_BUILT_IN_ASC' + | 'IS_BUILT_IN_DESC' + | 'LABELS_ASC' + | 'LABELS_DESC' + | 'NAME_ASC' + | 'NAME_DESC' + | 'UPDATED_AT_ASC' + | 'UPDATED_AT_DESC'; +export type PlatformFunctionExecutionLogOrderBy = + | 'NATURAL' + | 'PRIMARY_KEY_ASC' + | 'PRIMARY_KEY_DESC' + | 'CREATED_AT_ASC' + | 'CREATED_AT_DESC' + | 'ACTOR_ID_ASC' + | 'ACTOR_ID_DESC' + | 'DATABASE_ID_ASC' + | 'DATABASE_ID_DESC' + | 'ID_ASC' + | 'ID_DESC' + | 'INVOCATION_ID_ASC' + | 'INVOCATION_ID_DESC' + | 'LOG_LEVEL_ASC' + | 'LOG_LEVEL_DESC' + | 'MESSAGE_ASC' + | 'MESSAGE_DESC' + | 'METADATA_ASC' + | 'METADATA_DESC' + | 'TASK_IDENTIFIER_ASC' + | 'TASK_IDENTIFIER_DESC'; +export type PlatformNamespaceOrderBy = + | 'NATURAL' + | 'PRIMARY_KEY_ASC' + | 'PRIMARY_KEY_DESC' + | 'ANNOTATIONS_ASC' + | 'ANNOTATIONS_DESC' + | 'CREATED_AT_ASC' + | 'CREATED_AT_DESC' + | 'DATABASE_ID_ASC' + | 'DATABASE_ID_DESC' + | 'DESCRIPTION_ASC' + | 'DESCRIPTION_DESC' + | 'ID_ASC' + | 'ID_DESC' + | 'IS_ACTIVE_ASC' + | 'IS_ACTIVE_DESC' + | 'LABELS_ASC' + | 'LABELS_DESC' + | 'NAME_ASC' + | 'NAME_DESC' + | 'NAMESPACE_NAME_ASC' + | 'NAMESPACE_NAME_DESC' + | 'UPDATED_AT_ASC' + | 'UPDATED_AT_DESC'; +export type PlatformFunctionInvocationOrderBy = + | 'NATURAL' + | 'PRIMARY_KEY_ASC' + | 'PRIMARY_KEY_DESC' + | 'CREATED_AT_ASC' + | 'CREATED_AT_DESC' + | 'ACTOR_ID_ASC' + | 'ACTOR_ID_DESC' + | 'COMPLETED_AT_ASC' + | 'COMPLETED_AT_DESC' + | 'DATABASE_ID_ASC' + | 'DATABASE_ID_DESC' + | 'DURATION_MS_ASC' + | 'DURATION_MS_DESC' + | 'ERROR_ASC' + | 'ERROR_DESC' + | 'FUNCTION_ID_ASC' + | 'FUNCTION_ID_DESC' + | 'ID_ASC' + | 'ID_DESC' + | 'JOB_ID_ASC' + | 'JOB_ID_DESC' + | 'PAYLOAD_ASC' + | 'PAYLOAD_DESC' + | 'RESULT_ASC' + | 'RESULT_DESC' + | 'STARTED_AT_ASC' + | 'STARTED_AT_DESC' + | 'STATUS_ASC' + | 'STATUS_DESC' + | 'TASK_IDENTIFIER_ASC' + | 'TASK_IDENTIFIER_DESC'; +export type PlatformNamespaceEventOrderBy = + | 'NATURAL' + | 'PRIMARY_KEY_ASC' + | 'PRIMARY_KEY_DESC' + | 'CREATED_AT_ASC' + | 'CREATED_AT_DESC' + | 'ACTOR_ID_ASC' + | 'ACTOR_ID_DESC' + | 'CPU_MILLICORES_ASC' + | 'CPU_MILLICORES_DESC' + | 'DATABASE_ID_ASC' + | 'DATABASE_ID_DESC' + | 'EVENT_TYPE_ASC' + | 'EVENT_TYPE_DESC' + | 'ID_ASC' + | 'ID_DESC' + | 'MEMORY_BYTES_ASC' + | 'MEMORY_BYTES_DESC' + | 'MESSAGE_ASC' + | 'MESSAGE_DESC' + | 'METADATA_ASC' + | 'METADATA_DESC' + | 'METRICS_ASC' + | 'METRICS_DESC' + | 'NAMESPACE_ID_ASC' + | 'NAMESPACE_ID_DESC' + | 'NETWORK_EGRESS_BYTES_ASC' + | 'NETWORK_EGRESS_BYTES_DESC' + | 'NETWORK_INGRESS_BYTES_ASC' + | 'NETWORK_INGRESS_BYTES_DESC' + | 'POD_COUNT_ASC' + | 'POD_COUNT_DESC' + | 'STORAGE_BYTES_ASC' + | 'STORAGE_BYTES_DESC'; +export type PlatformFunctionDefinitionOrderBy = + | 'NATURAL' + | 'PRIMARY_KEY_ASC' + | 'PRIMARY_KEY_DESC' + | 'CREATED_AT_ASC' + | 'CREATED_AT_DESC' + | 'DESCRIPTION_ASC' + | 'DESCRIPTION_DESC' + | 'ID_ASC' + | 'ID_DESC' + | 'IS_BUILT_IN_ASC' + | 'IS_BUILT_IN_DESC' + | 'IS_INVOCABLE_ASC' + | 'IS_INVOCABLE_DESC' + | 'MAX_ATTEMPTS_ASC' + | 'MAX_ATTEMPTS_DESC' + | 'NAME_ASC' + | 'NAME_DESC' + | 'NAMESPACE_ID_ASC' + | 'NAMESPACE_ID_DESC' + | 'PRIORITY_ASC' + | 'PRIORITY_DESC' + | 'QUEUE_NAME_ASC' + | 'QUEUE_NAME_DESC' + | 'SCOPE_ASC' + | 'SCOPE_DESC' + | 'SERVICE_URL_ASC' + | 'SERVICE_URL_DESC' + | 'TASK_IDENTIFIER_ASC' + | 'TASK_IDENTIFIER_DESC' + | 'UPDATED_AT_ASC' + | 'UPDATED_AT_DESC' + | 'PAYLOAD_SCHEMA_ASC' + | 'PAYLOAD_SCHEMA_DESC' + | 'REQUIRED_CONFIGS_ASC' + | 'REQUIRED_CONFIGS_DESC' + | 'REQUIRED_SECRETS_ASC' + | 'REQUIRED_SECRETS_DESC'; +// ============ CRUD Input Types ============ +export interface CreatePlatformSecretDefinitionInput { + clientMutationId?: string; + platformSecretDefinition: { + annotations?: Record; + databaseId: string; + description?: string; + isBuiltIn?: boolean; + labels?: Record; + name: string; + }; +} +export interface PlatformSecretDefinitionPatch { + annotations?: Record | null; + databaseId?: string | null; + description?: string | null; + isBuiltIn?: boolean | null; + labels?: Record | null; + name?: string | null; +} +export interface UpdatePlatformSecretDefinitionInput { + clientMutationId?: string; + id: string; + platformSecretDefinitionPatch: PlatformSecretDefinitionPatch; +} +export interface DeletePlatformSecretDefinitionInput { + clientMutationId?: string; + id: string; +} +export interface CreatePlatformFunctionExecutionLogInput { + clientMutationId?: string; + platformFunctionExecutionLog: { + actorId?: string; + databaseId: string; + invocationId?: string; + logLevel?: string; + message: string; + metadata?: Record; + taskIdentifier?: string; + }; +} +export interface PlatformFunctionExecutionLogPatch { + actorId?: string | null; + databaseId?: string | null; + invocationId?: string | null; + logLevel?: string | null; + message?: string | null; + metadata?: Record | null; + taskIdentifier?: string | null; +} +export interface UpdatePlatformFunctionExecutionLogInput { + clientMutationId?: string; + id: string; + platformFunctionExecutionLogPatch: PlatformFunctionExecutionLogPatch; +} +export interface DeletePlatformFunctionExecutionLogInput { + clientMutationId?: string; + id: string; +} +export interface CreatePlatformNamespaceInput { + clientMutationId?: string; + platformNamespace: { + annotations?: Record; + databaseId: string; + description?: string; + isActive?: boolean; + labels?: Record; + name: string; + namespaceName: string; + }; +} +export interface PlatformNamespacePatch { + annotations?: Record | null; + databaseId?: string | null; + description?: string | null; + isActive?: boolean | null; + labels?: Record | null; + name?: string | null; + namespaceName?: string | null; +} +export interface UpdatePlatformNamespaceInput { + clientMutationId?: string; + id: string; + platformNamespacePatch: PlatformNamespacePatch; +} +export interface DeletePlatformNamespaceInput { + clientMutationId?: string; + id: string; +} +export interface CreatePlatformFunctionInvocationInput { + clientMutationId?: string; + platformFunctionInvocation: { + actorId?: string; + completedAt?: string; + databaseId: string; + durationMs?: number; + error?: string; + functionId?: string; + jobId?: string; + payload?: Record; + result?: Record; + startedAt?: string; + status?: string; + taskIdentifier: string; + }; +} +export interface PlatformFunctionInvocationPatch { + actorId?: string | null; + completedAt?: string | null; + databaseId?: string | null; + durationMs?: number | null; + error?: string | null; + functionId?: string | null; + jobId?: string | null; + payload?: Record | null; + result?: Record | null; + startedAt?: string | null; + status?: string | null; + taskIdentifier?: string | null; +} +export interface UpdatePlatformFunctionInvocationInput { + clientMutationId?: string; + id: string; + platformFunctionInvocationPatch: PlatformFunctionInvocationPatch; +} +export interface DeletePlatformFunctionInvocationInput { + clientMutationId?: string; + id: string; +} +export interface CreatePlatformNamespaceEventInput { + clientMutationId?: string; + platformNamespaceEvent: { + actorId?: string; + cpuMillicores?: number; + databaseId: string; + eventType: string; + memoryBytes?: string; + message?: string; + metadata?: Record; + metrics?: Record; + namespaceId: string; + networkEgressBytes?: string; + networkIngressBytes?: string; + podCount?: number; + storageBytes?: string; + }; +} +export interface PlatformNamespaceEventPatch { + actorId?: string | null; + cpuMillicores?: number | null; + databaseId?: string | null; + eventType?: string | null; + memoryBytes?: string | null; + message?: string | null; + metadata?: Record | null; + metrics?: Record | null; + namespaceId?: string | null; + networkEgressBytes?: string | null; + networkIngressBytes?: string | null; + podCount?: number | null; + storageBytes?: string | null; +} +export interface UpdatePlatformNamespaceEventInput { + clientMutationId?: string; + id: string; + platformNamespaceEventPatch: PlatformNamespaceEventPatch; +} +export interface DeletePlatformNamespaceEventInput { + clientMutationId?: string; + id: string; +} +export interface CreatePlatformFunctionDefinitionInput { + clientMutationId?: string; + platformFunctionDefinition: { + description?: string; + isBuiltIn?: boolean; + isInvocable?: boolean; + maxAttempts?: number; + name: string; + namespaceId?: string; + priority?: number; + queueName?: string; + scope: string; + serviceUrl?: string; + taskIdentifier: string; + payloadSchema?: Record; + requiredConfigs?: FunctionRequirementInput[]; + requiredSecrets?: FunctionRequirementInput[]; + }; +} +export interface PlatformFunctionDefinitionPatch { + description?: string | null; + isBuiltIn?: boolean | null; + isInvocable?: boolean | null; + maxAttempts?: number | null; + name?: string | null; + namespaceId?: string | null; + priority?: number | null; + queueName?: string | null; + scope?: string | null; + serviceUrl?: string | null; + taskIdentifier?: string | null; + payloadSchema?: Record | null; + requiredConfigs?: FunctionRequirementInput[] | null; + requiredSecrets?: FunctionRequirementInput[] | null; +} +export interface UpdatePlatformFunctionDefinitionInput { + clientMutationId?: string; + id: string; + platformFunctionDefinitionPatch: PlatformFunctionDefinitionPatch; +} +export interface DeletePlatformFunctionDefinitionInput { + clientMutationId?: string; + id: string; +} +// ============ Connection Fields Map ============ +export const connectionFieldsMap = {} as Record>; +// ============ Custom Input Types (from schema) ============ +export interface ProvisionBucketInput { + /** The logical bucket key (e.g., "public", "private") */ + bucketKey: string; + /** + * Owner entity ID for entity-scoped bucket provisioning. + * Omit for app-level (database-wide) storage. + */ + ownerId?: string; +} +// ============ Payload/Return Types (for custom operations) ============ +export interface ProvisionBucketPayload { + /** Whether provisioning succeeded */ + success: boolean; + /** The S3 bucket name that was provisioned */ + bucketName: string; + /** The access type applied */ + accessType: string; + /** The storage provider used */ + provider: string; + /** The S3 endpoint (null for AWS S3 default) */ + endpoint?: string | null; + /** Error message if provisioning failed */ + error?: string | null; +} +export type ProvisionBucketPayloadSelect = { + success?: boolean; + bucketName?: boolean; + accessType?: boolean; + provider?: boolean; + endpoint?: boolean; + error?: boolean; +}; +export interface CreatePlatformSecretDefinitionPayload { + clientMutationId?: string | null; + /** The `PlatformSecretDefinition` that was created by this mutation. */ + platformSecretDefinition?: PlatformSecretDefinition | null; + platformSecretDefinitionEdge?: PlatformSecretDefinitionEdge | null; +} +export type CreatePlatformSecretDefinitionPayloadSelect = { + clientMutationId?: boolean; + platformSecretDefinition?: { + select: PlatformSecretDefinitionSelect; + }; + platformSecretDefinitionEdge?: { + select: PlatformSecretDefinitionEdgeSelect; + }; +}; +export interface UpdatePlatformSecretDefinitionPayload { + clientMutationId?: string | null; + /** The `PlatformSecretDefinition` that was updated by this mutation. */ + platformSecretDefinition?: PlatformSecretDefinition | null; + platformSecretDefinitionEdge?: PlatformSecretDefinitionEdge | null; +} +export type UpdatePlatformSecretDefinitionPayloadSelect = { + clientMutationId?: boolean; + platformSecretDefinition?: { + select: PlatformSecretDefinitionSelect; + }; + platformSecretDefinitionEdge?: { + select: PlatformSecretDefinitionEdgeSelect; + }; +}; +export interface DeletePlatformSecretDefinitionPayload { + clientMutationId?: string | null; + /** The `PlatformSecretDefinition` that was deleted by this mutation. */ + platformSecretDefinition?: PlatformSecretDefinition | null; + platformSecretDefinitionEdge?: PlatformSecretDefinitionEdge | null; +} +export type DeletePlatformSecretDefinitionPayloadSelect = { + clientMutationId?: boolean; + platformSecretDefinition?: { + select: PlatformSecretDefinitionSelect; + }; + platformSecretDefinitionEdge?: { + select: PlatformSecretDefinitionEdgeSelect; + }; +}; +export interface CreatePlatformFunctionExecutionLogPayload { + clientMutationId?: string | null; + /** The `PlatformFunctionExecutionLog` that was created by this mutation. */ + platformFunctionExecutionLog?: PlatformFunctionExecutionLog | null; + platformFunctionExecutionLogEdge?: PlatformFunctionExecutionLogEdge | null; +} +export type CreatePlatformFunctionExecutionLogPayloadSelect = { + clientMutationId?: boolean; + platformFunctionExecutionLog?: { + select: PlatformFunctionExecutionLogSelect; + }; + platformFunctionExecutionLogEdge?: { + select: PlatformFunctionExecutionLogEdgeSelect; + }; +}; +export interface UpdatePlatformFunctionExecutionLogPayload { + clientMutationId?: string | null; + /** The `PlatformFunctionExecutionLog` that was updated by this mutation. */ + platformFunctionExecutionLog?: PlatformFunctionExecutionLog | null; + platformFunctionExecutionLogEdge?: PlatformFunctionExecutionLogEdge | null; +} +export type UpdatePlatformFunctionExecutionLogPayloadSelect = { + clientMutationId?: boolean; + platformFunctionExecutionLog?: { + select: PlatformFunctionExecutionLogSelect; + }; + platformFunctionExecutionLogEdge?: { + select: PlatformFunctionExecutionLogEdgeSelect; + }; +}; +export interface DeletePlatformFunctionExecutionLogPayload { + clientMutationId?: string | null; + /** The `PlatformFunctionExecutionLog` that was deleted by this mutation. */ + platformFunctionExecutionLog?: PlatformFunctionExecutionLog | null; + platformFunctionExecutionLogEdge?: PlatformFunctionExecutionLogEdge | null; +} +export type DeletePlatformFunctionExecutionLogPayloadSelect = { + clientMutationId?: boolean; + platformFunctionExecutionLog?: { + select: PlatformFunctionExecutionLogSelect; + }; + platformFunctionExecutionLogEdge?: { + select: PlatformFunctionExecutionLogEdgeSelect; + }; +}; +export interface CreatePlatformNamespacePayload { + clientMutationId?: string | null; + /** The `PlatformNamespace` that was created by this mutation. */ + platformNamespace?: PlatformNamespace | null; + platformNamespaceEdge?: PlatformNamespaceEdge | null; +} +export type CreatePlatformNamespacePayloadSelect = { + clientMutationId?: boolean; + platformNamespace?: { + select: PlatformNamespaceSelect; + }; + platformNamespaceEdge?: { + select: PlatformNamespaceEdgeSelect; + }; +}; +export interface UpdatePlatformNamespacePayload { + clientMutationId?: string | null; + /** The `PlatformNamespace` that was updated by this mutation. */ + platformNamespace?: PlatformNamespace | null; + platformNamespaceEdge?: PlatformNamespaceEdge | null; +} +export type UpdatePlatformNamespacePayloadSelect = { + clientMutationId?: boolean; + platformNamespace?: { + select: PlatformNamespaceSelect; + }; + platformNamespaceEdge?: { + select: PlatformNamespaceEdgeSelect; + }; +}; +export interface DeletePlatformNamespacePayload { + clientMutationId?: string | null; + /** The `PlatformNamespace` that was deleted by this mutation. */ + platformNamespace?: PlatformNamespace | null; + platformNamespaceEdge?: PlatformNamespaceEdge | null; +} +export type DeletePlatformNamespacePayloadSelect = { + clientMutationId?: boolean; + platformNamespace?: { + select: PlatformNamespaceSelect; + }; + platformNamespaceEdge?: { + select: PlatformNamespaceEdgeSelect; + }; +}; +export interface CreatePlatformFunctionInvocationPayload { + clientMutationId?: string | null; + /** The `PlatformFunctionInvocation` that was created by this mutation. */ + platformFunctionInvocation?: PlatformFunctionInvocation | null; + platformFunctionInvocationEdge?: PlatformFunctionInvocationEdge | null; +} +export type CreatePlatformFunctionInvocationPayloadSelect = { + clientMutationId?: boolean; + platformFunctionInvocation?: { + select: PlatformFunctionInvocationSelect; + }; + platformFunctionInvocationEdge?: { + select: PlatformFunctionInvocationEdgeSelect; + }; +}; +export interface UpdatePlatformFunctionInvocationPayload { + clientMutationId?: string | null; + /** The `PlatformFunctionInvocation` that was updated by this mutation. */ + platformFunctionInvocation?: PlatformFunctionInvocation | null; + platformFunctionInvocationEdge?: PlatformFunctionInvocationEdge | null; +} +export type UpdatePlatformFunctionInvocationPayloadSelect = { + clientMutationId?: boolean; + platformFunctionInvocation?: { + select: PlatformFunctionInvocationSelect; + }; + platformFunctionInvocationEdge?: { + select: PlatformFunctionInvocationEdgeSelect; + }; +}; +export interface DeletePlatformFunctionInvocationPayload { + clientMutationId?: string | null; + /** The `PlatformFunctionInvocation` that was deleted by this mutation. */ + platformFunctionInvocation?: PlatformFunctionInvocation | null; + platformFunctionInvocationEdge?: PlatformFunctionInvocationEdge | null; +} +export type DeletePlatformFunctionInvocationPayloadSelect = { + clientMutationId?: boolean; + platformFunctionInvocation?: { + select: PlatformFunctionInvocationSelect; + }; + platformFunctionInvocationEdge?: { + select: PlatformFunctionInvocationEdgeSelect; + }; +}; +export interface CreatePlatformNamespaceEventPayload { + clientMutationId?: string | null; + /** The `PlatformNamespaceEvent` that was created by this mutation. */ + platformNamespaceEvent?: PlatformNamespaceEvent | null; + platformNamespaceEventEdge?: PlatformNamespaceEventEdge | null; +} +export type CreatePlatformNamespaceEventPayloadSelect = { + clientMutationId?: boolean; + platformNamespaceEvent?: { + select: PlatformNamespaceEventSelect; + }; + platformNamespaceEventEdge?: { + select: PlatformNamespaceEventEdgeSelect; + }; +}; +export interface UpdatePlatformNamespaceEventPayload { + clientMutationId?: string | null; + /** The `PlatformNamespaceEvent` that was updated by this mutation. */ + platformNamespaceEvent?: PlatformNamespaceEvent | null; + platformNamespaceEventEdge?: PlatformNamespaceEventEdge | null; +} +export type UpdatePlatformNamespaceEventPayloadSelect = { + clientMutationId?: boolean; + platformNamespaceEvent?: { + select: PlatformNamespaceEventSelect; + }; + platformNamespaceEventEdge?: { + select: PlatformNamespaceEventEdgeSelect; + }; +}; +export interface DeletePlatformNamespaceEventPayload { + clientMutationId?: string | null; + /** The `PlatformNamespaceEvent` that was deleted by this mutation. */ + platformNamespaceEvent?: PlatformNamespaceEvent | null; + platformNamespaceEventEdge?: PlatformNamespaceEventEdge | null; +} +export type DeletePlatformNamespaceEventPayloadSelect = { + clientMutationId?: boolean; + platformNamespaceEvent?: { + select: PlatformNamespaceEventSelect; + }; + platformNamespaceEventEdge?: { + select: PlatformNamespaceEventEdgeSelect; + }; +}; +export interface CreatePlatformFunctionDefinitionPayload { + clientMutationId?: string | null; + /** The `PlatformFunctionDefinition` that was created by this mutation. */ + platformFunctionDefinition?: PlatformFunctionDefinition | null; + platformFunctionDefinitionEdge?: PlatformFunctionDefinitionEdge | null; +} +export type CreatePlatformFunctionDefinitionPayloadSelect = { + clientMutationId?: boolean; + platformFunctionDefinition?: { + select: PlatformFunctionDefinitionSelect; + }; + platformFunctionDefinitionEdge?: { + select: PlatformFunctionDefinitionEdgeSelect; + }; +}; +export interface UpdatePlatformFunctionDefinitionPayload { + clientMutationId?: string | null; + /** The `PlatformFunctionDefinition` that was updated by this mutation. */ + platformFunctionDefinition?: PlatformFunctionDefinition | null; + platformFunctionDefinitionEdge?: PlatformFunctionDefinitionEdge | null; +} +export type UpdatePlatformFunctionDefinitionPayloadSelect = { + clientMutationId?: boolean; + platformFunctionDefinition?: { + select: PlatformFunctionDefinitionSelect; + }; + platformFunctionDefinitionEdge?: { + select: PlatformFunctionDefinitionEdgeSelect; + }; +}; +export interface DeletePlatformFunctionDefinitionPayload { + clientMutationId?: string | null; + /** The `PlatformFunctionDefinition` that was deleted by this mutation. */ + platformFunctionDefinition?: PlatformFunctionDefinition | null; + platformFunctionDefinitionEdge?: PlatformFunctionDefinitionEdge | null; +} +export type DeletePlatformFunctionDefinitionPayloadSelect = { + clientMutationId?: boolean; + platformFunctionDefinition?: { + select: PlatformFunctionDefinitionSelect; + }; + platformFunctionDefinitionEdge?: { + select: PlatformFunctionDefinitionEdgeSelect; + }; +}; +/** A `PlatformSecretDefinition` edge in the connection. */ +export interface PlatformSecretDefinitionEdge { + cursor?: string | null; + /** The `PlatformSecretDefinition` at the end of the edge. */ + node?: PlatformSecretDefinition | null; +} +export type PlatformSecretDefinitionEdgeSelect = { + cursor?: boolean; + node?: { + select: PlatformSecretDefinitionSelect; + }; +}; +/** A `PlatformFunctionExecutionLog` edge in the connection. */ +export interface PlatformFunctionExecutionLogEdge { + cursor?: string | null; + /** The `PlatformFunctionExecutionLog` at the end of the edge. */ + node?: PlatformFunctionExecutionLog | null; +} +export type PlatformFunctionExecutionLogEdgeSelect = { + cursor?: boolean; + node?: { + select: PlatformFunctionExecutionLogSelect; + }; +}; +/** A `PlatformNamespace` edge in the connection. */ +export interface PlatformNamespaceEdge { + cursor?: string | null; + /** The `PlatformNamespace` at the end of the edge. */ + node?: PlatformNamespace | null; +} +export type PlatformNamespaceEdgeSelect = { + cursor?: boolean; + node?: { + select: PlatformNamespaceSelect; + }; +}; +/** A `PlatformFunctionInvocation` edge in the connection. */ +export interface PlatformFunctionInvocationEdge { + cursor?: string | null; + /** The `PlatformFunctionInvocation` at the end of the edge. */ + node?: PlatformFunctionInvocation | null; +} +export type PlatformFunctionInvocationEdgeSelect = { + cursor?: boolean; + node?: { + select: PlatformFunctionInvocationSelect; + }; +}; +/** A `PlatformNamespaceEvent` edge in the connection. */ +export interface PlatformNamespaceEventEdge { + cursor?: string | null; + /** The `PlatformNamespaceEvent` at the end of the edge. */ + node?: PlatformNamespaceEvent | null; +} +export type PlatformNamespaceEventEdgeSelect = { + cursor?: boolean; + node?: { + select: PlatformNamespaceEventSelect; + }; +}; +/** A `PlatformFunctionDefinition` edge in the connection. */ +export interface PlatformFunctionDefinitionEdge { + cursor?: string | null; + /** The `PlatformFunctionDefinition` at the end of the edge. */ + node?: PlatformFunctionDefinition | null; +} +export type PlatformFunctionDefinitionEdgeSelect = { + cursor?: boolean; + node?: { + select: PlatformFunctionDefinitionSelect; + }; +}; + +// Composite input types stubbed by scripts/generate-sdk.ts (codegen emits the object form as `unknown` but omits these). +export type FunctionRequirementInput = unknown; diff --git a/sdk/functions-sdk/src/infra/orm/models/index.ts b/sdk/functions-sdk/src/infra/orm/models/index.ts new file mode 100644 index 00000000..ecd39c79 --- /dev/null +++ b/sdk/functions-sdk/src/infra/orm/models/index.ts @@ -0,0 +1,11 @@ +/** + * Models barrel export + * @generated by @constructive-io/graphql-codegen + * DO NOT EDIT - changes will be overwritten + */ +export { PlatformSecretDefinitionModel } from './platformSecretDefinition'; +export { PlatformFunctionExecutionLogModel } from './platformFunctionExecutionLog'; +export { PlatformNamespaceModel } from './platformNamespace'; +export { PlatformFunctionInvocationModel } from './platformFunctionInvocation'; +export { PlatformNamespaceEventModel } from './platformNamespaceEvent'; +export { PlatformFunctionDefinitionModel } from './platformFunctionDefinition'; diff --git a/sdk/functions-sdk/src/infra/orm/models/platformFunctionDefinition.ts b/sdk/functions-sdk/src/infra/orm/models/platformFunctionDefinition.ts new file mode 100644 index 00000000..471305f1 --- /dev/null +++ b/sdk/functions-sdk/src/infra/orm/models/platformFunctionDefinition.ts @@ -0,0 +1,252 @@ +/** + * PlatformFunctionDefinition model for ORM client + * @generated by @constructive-io/graphql-codegen + * DO NOT EDIT - changes will be overwritten + */ +import { OrmClient } from '../client'; +import { + QueryBuilder, + buildFindManyDocument, + buildFindFirstDocument, + buildFindOneDocument, + buildCreateDocument, + buildUpdateByPkDocument, + buildDeleteByPkDocument, +} from '../query-builder'; +import type { + ConnectionResult, + FindManyArgs, + FindFirstArgs, + CreateArgs, + UpdateArgs, + DeleteArgs, + InferSelectResult, + StrictSelect, +} from '../select-types'; +import type { + PlatformFunctionDefinition, + PlatformFunctionDefinitionWithRelations, + PlatformFunctionDefinitionSelect, + PlatformFunctionDefinitionFilter, + PlatformFunctionDefinitionOrderBy, + CreatePlatformFunctionDefinitionInput, + UpdatePlatformFunctionDefinitionInput, + PlatformFunctionDefinitionPatch, +} from '../input-types'; +import { connectionFieldsMap } from '../input-types'; +export class PlatformFunctionDefinitionModel { + constructor(private client: OrmClient) {} + findMany( + args: FindManyArgs & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + platformFunctionDefinitions: ConnectionResult< + InferSelectResult + >; + }> { + const { document, variables } = buildFindManyDocument( + 'PlatformFunctionDefinition', + 'platformFunctionDefinitions', + args.select, + { + where: args?.where, + orderBy: args?.orderBy as string[] | undefined, + first: args?.first, + last: args?.last, + after: args?.after, + before: args?.before, + offset: args?.offset, + }, + 'PlatformFunctionDefinitionFilter', + 'PlatformFunctionDefinitionOrderBy', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'query', + operationName: 'PlatformFunctionDefinition', + fieldName: 'platformFunctionDefinitions', + document, + variables, + }); + } + findFirst( + args: FindFirstArgs & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + platformFunctionDefinition: InferSelectResult< + PlatformFunctionDefinitionWithRelations, + S + > | null; + }> { + const { document, variables } = buildFindFirstDocument( + 'PlatformFunctionDefinition', + 'platformFunctionDefinitions', + args.select, + { + where: args?.where, + orderBy: args?.orderBy as string[] | undefined, + }, + 'PlatformFunctionDefinitionFilter', + 'PlatformFunctionDefinitionOrderBy', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'query', + operationName: 'PlatformFunctionDefinition', + fieldName: 'platformFunctionDefinition', + document, + variables, + transform: (data: { + platformFunctionDefinitions?: { + nodes?: InferSelectResult[]; + }; + }) => ({ + platformFunctionDefinition: data.platformFunctionDefinitions?.nodes?.[0] ?? null, + }), + }); + } + findOne( + args: { + id: string; + select: S; + } & StrictSelect + ): QueryBuilder<{ + platformFunctionDefinition: InferSelectResult< + PlatformFunctionDefinitionWithRelations, + S + > | null; + }> { + const { document, variables } = buildFindManyDocument( + 'PlatformFunctionDefinition', + 'platformFunctionDefinitions', + args.select, + { + where: { + id: { + equalTo: args.id, + }, + }, + first: 1, + }, + 'PlatformFunctionDefinitionFilter', + 'PlatformFunctionDefinitionOrderBy', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'query', + operationName: 'PlatformFunctionDefinition', + fieldName: 'platformFunctionDefinition', + document, + variables, + transform: (data: { + platformFunctionDefinitions?: { + nodes?: InferSelectResult[]; + }; + }) => ({ + platformFunctionDefinition: data.platformFunctionDefinitions?.nodes?.[0] ?? null, + }), + }); + } + create( + args: CreateArgs & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + createPlatformFunctionDefinition: { + platformFunctionDefinition: InferSelectResult; + }; + }> { + const { document, variables } = buildCreateDocument( + 'PlatformFunctionDefinition', + 'createPlatformFunctionDefinition', + 'platformFunctionDefinition', + args.select, + args.data, + 'CreatePlatformFunctionDefinitionInput', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'mutation', + operationName: 'PlatformFunctionDefinition', + fieldName: 'createPlatformFunctionDefinition', + document, + variables, + }); + } + update( + args: UpdateArgs< + S, + { + id: string; + }, + PlatformFunctionDefinitionPatch + > & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + updatePlatformFunctionDefinition: { + platformFunctionDefinition: InferSelectResult; + }; + }> { + const { document, variables } = buildUpdateByPkDocument( + 'PlatformFunctionDefinition', + 'updatePlatformFunctionDefinition', + 'platformFunctionDefinition', + args.select, + args.where.id, + args.data, + 'UpdatePlatformFunctionDefinitionInput', + 'id', + 'platformFunctionDefinitionPatch', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'mutation', + operationName: 'PlatformFunctionDefinition', + fieldName: 'updatePlatformFunctionDefinition', + document, + variables, + }); + } + delete( + args: DeleteArgs< + { + id: string; + }, + S + > & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + deletePlatformFunctionDefinition: { + platformFunctionDefinition: InferSelectResult; + }; + }> { + const { document, variables } = buildDeleteByPkDocument( + 'PlatformFunctionDefinition', + 'deletePlatformFunctionDefinition', + 'platformFunctionDefinition', + { + id: args.where.id, + }, + 'DeletePlatformFunctionDefinitionInput', + args.select, + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'mutation', + operationName: 'PlatformFunctionDefinition', + fieldName: 'deletePlatformFunctionDefinition', + document, + variables, + }); + } +} diff --git a/sdk/functions-sdk/src/infra/orm/models/platformFunctionExecutionLog.ts b/sdk/functions-sdk/src/infra/orm/models/platformFunctionExecutionLog.ts new file mode 100644 index 00000000..ece7ffd5 --- /dev/null +++ b/sdk/functions-sdk/src/infra/orm/models/platformFunctionExecutionLog.ts @@ -0,0 +1,260 @@ +/** + * PlatformFunctionExecutionLog model for ORM client + * @generated by @constructive-io/graphql-codegen + * DO NOT EDIT - changes will be overwritten + */ +import { OrmClient } from '../client'; +import { + QueryBuilder, + buildFindManyDocument, + buildFindFirstDocument, + buildFindOneDocument, + buildCreateDocument, + buildUpdateByPkDocument, + buildDeleteByPkDocument, +} from '../query-builder'; +import type { + ConnectionResult, + FindManyArgs, + FindFirstArgs, + CreateArgs, + UpdateArgs, + DeleteArgs, + InferSelectResult, + StrictSelect, +} from '../select-types'; +import type { + PlatformFunctionExecutionLog, + PlatformFunctionExecutionLogWithRelations, + PlatformFunctionExecutionLogSelect, + PlatformFunctionExecutionLogFilter, + PlatformFunctionExecutionLogOrderBy, + CreatePlatformFunctionExecutionLogInput, + UpdatePlatformFunctionExecutionLogInput, + PlatformFunctionExecutionLogPatch, +} from '../input-types'; +import { connectionFieldsMap } from '../input-types'; +export class PlatformFunctionExecutionLogModel { + constructor(private client: OrmClient) {} + findMany( + args: FindManyArgs< + S, + PlatformFunctionExecutionLogFilter, + PlatformFunctionExecutionLogOrderBy + > & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + platformFunctionExecutionLogs: ConnectionResult< + InferSelectResult + >; + }> { + const { document, variables } = buildFindManyDocument( + 'PlatformFunctionExecutionLog', + 'platformFunctionExecutionLogs', + args.select, + { + where: args?.where, + orderBy: args?.orderBy as string[] | undefined, + first: args?.first, + last: args?.last, + after: args?.after, + before: args?.before, + offset: args?.offset, + }, + 'PlatformFunctionExecutionLogFilter', + 'PlatformFunctionExecutionLogOrderBy', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'query', + operationName: 'PlatformFunctionExecutionLog', + fieldName: 'platformFunctionExecutionLogs', + document, + variables, + }); + } + findFirst( + args: FindFirstArgs< + S, + PlatformFunctionExecutionLogFilter, + PlatformFunctionExecutionLogOrderBy + > & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + platformFunctionExecutionLog: InferSelectResult< + PlatformFunctionExecutionLogWithRelations, + S + > | null; + }> { + const { document, variables } = buildFindFirstDocument( + 'PlatformFunctionExecutionLog', + 'platformFunctionExecutionLogs', + args.select, + { + where: args?.where, + orderBy: args?.orderBy as string[] | undefined, + }, + 'PlatformFunctionExecutionLogFilter', + 'PlatformFunctionExecutionLogOrderBy', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'query', + operationName: 'PlatformFunctionExecutionLog', + fieldName: 'platformFunctionExecutionLog', + document, + variables, + transform: (data: { + platformFunctionExecutionLogs?: { + nodes?: InferSelectResult[]; + }; + }) => ({ + platformFunctionExecutionLog: data.platformFunctionExecutionLogs?.nodes?.[0] ?? null, + }), + }); + } + findOne( + args: { + id: string; + select: S; + } & StrictSelect + ): QueryBuilder<{ + platformFunctionExecutionLog: InferSelectResult< + PlatformFunctionExecutionLogWithRelations, + S + > | null; + }> { + const { document, variables } = buildFindManyDocument( + 'PlatformFunctionExecutionLog', + 'platformFunctionExecutionLogs', + args.select, + { + where: { + id: { + equalTo: args.id, + }, + }, + first: 1, + }, + 'PlatformFunctionExecutionLogFilter', + 'PlatformFunctionExecutionLogOrderBy', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'query', + operationName: 'PlatformFunctionExecutionLog', + fieldName: 'platformFunctionExecutionLog', + document, + variables, + transform: (data: { + platformFunctionExecutionLogs?: { + nodes?: InferSelectResult[]; + }; + }) => ({ + platformFunctionExecutionLog: data.platformFunctionExecutionLogs?.nodes?.[0] ?? null, + }), + }); + } + create( + args: CreateArgs & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + createPlatformFunctionExecutionLog: { + platformFunctionExecutionLog: InferSelectResult; + }; + }> { + const { document, variables } = buildCreateDocument( + 'PlatformFunctionExecutionLog', + 'createPlatformFunctionExecutionLog', + 'platformFunctionExecutionLog', + args.select, + args.data, + 'CreatePlatformFunctionExecutionLogInput', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'mutation', + operationName: 'PlatformFunctionExecutionLog', + fieldName: 'createPlatformFunctionExecutionLog', + document, + variables, + }); + } + update( + args: UpdateArgs< + S, + { + id: string; + }, + PlatformFunctionExecutionLogPatch + > & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + updatePlatformFunctionExecutionLog: { + platformFunctionExecutionLog: InferSelectResult; + }; + }> { + const { document, variables } = buildUpdateByPkDocument( + 'PlatformFunctionExecutionLog', + 'updatePlatformFunctionExecutionLog', + 'platformFunctionExecutionLog', + args.select, + args.where.id, + args.data, + 'UpdatePlatformFunctionExecutionLogInput', + 'id', + 'platformFunctionExecutionLogPatch', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'mutation', + operationName: 'PlatformFunctionExecutionLog', + fieldName: 'updatePlatformFunctionExecutionLog', + document, + variables, + }); + } + delete( + args: DeleteArgs< + { + id: string; + }, + S + > & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + deletePlatformFunctionExecutionLog: { + platformFunctionExecutionLog: InferSelectResult; + }; + }> { + const { document, variables } = buildDeleteByPkDocument( + 'PlatformFunctionExecutionLog', + 'deletePlatformFunctionExecutionLog', + 'platformFunctionExecutionLog', + { + id: args.where.id, + }, + 'DeletePlatformFunctionExecutionLogInput', + args.select, + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'mutation', + operationName: 'PlatformFunctionExecutionLog', + fieldName: 'deletePlatformFunctionExecutionLog', + document, + variables, + }); + } +} diff --git a/sdk/functions-sdk/src/infra/orm/models/platformFunctionInvocation.ts b/sdk/functions-sdk/src/infra/orm/models/platformFunctionInvocation.ts new file mode 100644 index 00000000..05f3c82f --- /dev/null +++ b/sdk/functions-sdk/src/infra/orm/models/platformFunctionInvocation.ts @@ -0,0 +1,252 @@ +/** + * PlatformFunctionInvocation model for ORM client + * @generated by @constructive-io/graphql-codegen + * DO NOT EDIT - changes will be overwritten + */ +import { OrmClient } from '../client'; +import { + QueryBuilder, + buildFindManyDocument, + buildFindFirstDocument, + buildFindOneDocument, + buildCreateDocument, + buildUpdateByPkDocument, + buildDeleteByPkDocument, +} from '../query-builder'; +import type { + ConnectionResult, + FindManyArgs, + FindFirstArgs, + CreateArgs, + UpdateArgs, + DeleteArgs, + InferSelectResult, + StrictSelect, +} from '../select-types'; +import type { + PlatformFunctionInvocation, + PlatformFunctionInvocationWithRelations, + PlatformFunctionInvocationSelect, + PlatformFunctionInvocationFilter, + PlatformFunctionInvocationOrderBy, + CreatePlatformFunctionInvocationInput, + UpdatePlatformFunctionInvocationInput, + PlatformFunctionInvocationPatch, +} from '../input-types'; +import { connectionFieldsMap } from '../input-types'; +export class PlatformFunctionInvocationModel { + constructor(private client: OrmClient) {} + findMany( + args: FindManyArgs & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + platformFunctionInvocations: ConnectionResult< + InferSelectResult + >; + }> { + const { document, variables } = buildFindManyDocument( + 'PlatformFunctionInvocation', + 'platformFunctionInvocations', + args.select, + { + where: args?.where, + orderBy: args?.orderBy as string[] | undefined, + first: args?.first, + last: args?.last, + after: args?.after, + before: args?.before, + offset: args?.offset, + }, + 'PlatformFunctionInvocationFilter', + 'PlatformFunctionInvocationOrderBy', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'query', + operationName: 'PlatformFunctionInvocation', + fieldName: 'platformFunctionInvocations', + document, + variables, + }); + } + findFirst( + args: FindFirstArgs & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + platformFunctionInvocation: InferSelectResult< + PlatformFunctionInvocationWithRelations, + S + > | null; + }> { + const { document, variables } = buildFindFirstDocument( + 'PlatformFunctionInvocation', + 'platformFunctionInvocations', + args.select, + { + where: args?.where, + orderBy: args?.orderBy as string[] | undefined, + }, + 'PlatformFunctionInvocationFilter', + 'PlatformFunctionInvocationOrderBy', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'query', + operationName: 'PlatformFunctionInvocation', + fieldName: 'platformFunctionInvocation', + document, + variables, + transform: (data: { + platformFunctionInvocations?: { + nodes?: InferSelectResult[]; + }; + }) => ({ + platformFunctionInvocation: data.platformFunctionInvocations?.nodes?.[0] ?? null, + }), + }); + } + findOne( + args: { + id: string; + select: S; + } & StrictSelect + ): QueryBuilder<{ + platformFunctionInvocation: InferSelectResult< + PlatformFunctionInvocationWithRelations, + S + > | null; + }> { + const { document, variables } = buildFindManyDocument( + 'PlatformFunctionInvocation', + 'platformFunctionInvocations', + args.select, + { + where: { + id: { + equalTo: args.id, + }, + }, + first: 1, + }, + 'PlatformFunctionInvocationFilter', + 'PlatformFunctionInvocationOrderBy', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'query', + operationName: 'PlatformFunctionInvocation', + fieldName: 'platformFunctionInvocation', + document, + variables, + transform: (data: { + platformFunctionInvocations?: { + nodes?: InferSelectResult[]; + }; + }) => ({ + platformFunctionInvocation: data.platformFunctionInvocations?.nodes?.[0] ?? null, + }), + }); + } + create( + args: CreateArgs & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + createPlatformFunctionInvocation: { + platformFunctionInvocation: InferSelectResult; + }; + }> { + const { document, variables } = buildCreateDocument( + 'PlatformFunctionInvocation', + 'createPlatformFunctionInvocation', + 'platformFunctionInvocation', + args.select, + args.data, + 'CreatePlatformFunctionInvocationInput', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'mutation', + operationName: 'PlatformFunctionInvocation', + fieldName: 'createPlatformFunctionInvocation', + document, + variables, + }); + } + update( + args: UpdateArgs< + S, + { + id: string; + }, + PlatformFunctionInvocationPatch + > & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + updatePlatformFunctionInvocation: { + platformFunctionInvocation: InferSelectResult; + }; + }> { + const { document, variables } = buildUpdateByPkDocument( + 'PlatformFunctionInvocation', + 'updatePlatformFunctionInvocation', + 'platformFunctionInvocation', + args.select, + args.where.id, + args.data, + 'UpdatePlatformFunctionInvocationInput', + 'id', + 'platformFunctionInvocationPatch', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'mutation', + operationName: 'PlatformFunctionInvocation', + fieldName: 'updatePlatformFunctionInvocation', + document, + variables, + }); + } + delete( + args: DeleteArgs< + { + id: string; + }, + S + > & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + deletePlatformFunctionInvocation: { + platformFunctionInvocation: InferSelectResult; + }; + }> { + const { document, variables } = buildDeleteByPkDocument( + 'PlatformFunctionInvocation', + 'deletePlatformFunctionInvocation', + 'platformFunctionInvocation', + { + id: args.where.id, + }, + 'DeletePlatformFunctionInvocationInput', + args.select, + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'mutation', + operationName: 'PlatformFunctionInvocation', + fieldName: 'deletePlatformFunctionInvocation', + document, + variables, + }); + } +} diff --git a/sdk/functions-sdk/src/infra/orm/models/platformNamespace.ts b/sdk/functions-sdk/src/infra/orm/models/platformNamespace.ts new file mode 100644 index 00000000..64908b95 --- /dev/null +++ b/sdk/functions-sdk/src/infra/orm/models/platformNamespace.ts @@ -0,0 +1,244 @@ +/** + * PlatformNamespace model for ORM client + * @generated by @constructive-io/graphql-codegen + * DO NOT EDIT - changes will be overwritten + */ +import { OrmClient } from '../client'; +import { + QueryBuilder, + buildFindManyDocument, + buildFindFirstDocument, + buildFindOneDocument, + buildCreateDocument, + buildUpdateByPkDocument, + buildDeleteByPkDocument, +} from '../query-builder'; +import type { + ConnectionResult, + FindManyArgs, + FindFirstArgs, + CreateArgs, + UpdateArgs, + DeleteArgs, + InferSelectResult, + StrictSelect, +} from '../select-types'; +import type { + PlatformNamespace, + PlatformNamespaceWithRelations, + PlatformNamespaceSelect, + PlatformNamespaceFilter, + PlatformNamespaceOrderBy, + CreatePlatformNamespaceInput, + UpdatePlatformNamespaceInput, + PlatformNamespacePatch, +} from '../input-types'; +import { connectionFieldsMap } from '../input-types'; +export class PlatformNamespaceModel { + constructor(private client: OrmClient) {} + findMany( + args: FindManyArgs & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + platformNamespaces: ConnectionResult>; + }> { + const { document, variables } = buildFindManyDocument( + 'PlatformNamespace', + 'platformNamespaces', + args.select, + { + where: args?.where, + orderBy: args?.orderBy as string[] | undefined, + first: args?.first, + last: args?.last, + after: args?.after, + before: args?.before, + offset: args?.offset, + }, + 'PlatformNamespaceFilter', + 'PlatformNamespaceOrderBy', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'query', + operationName: 'PlatformNamespace', + fieldName: 'platformNamespaces', + document, + variables, + }); + } + findFirst( + args: FindFirstArgs & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + platformNamespace: InferSelectResult | null; + }> { + const { document, variables } = buildFindFirstDocument( + 'PlatformNamespace', + 'platformNamespaces', + args.select, + { + where: args?.where, + orderBy: args?.orderBy as string[] | undefined, + }, + 'PlatformNamespaceFilter', + 'PlatformNamespaceOrderBy', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'query', + operationName: 'PlatformNamespace', + fieldName: 'platformNamespace', + document, + variables, + transform: (data: { + platformNamespaces?: { + nodes?: InferSelectResult[]; + }; + }) => ({ + platformNamespace: data.platformNamespaces?.nodes?.[0] ?? null, + }), + }); + } + findOne( + args: { + id: string; + select: S; + } & StrictSelect + ): QueryBuilder<{ + platformNamespace: InferSelectResult | null; + }> { + const { document, variables } = buildFindManyDocument( + 'PlatformNamespace', + 'platformNamespaces', + args.select, + { + where: { + id: { + equalTo: args.id, + }, + }, + first: 1, + }, + 'PlatformNamespaceFilter', + 'PlatformNamespaceOrderBy', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'query', + operationName: 'PlatformNamespace', + fieldName: 'platformNamespace', + document, + variables, + transform: (data: { + platformNamespaces?: { + nodes?: InferSelectResult[]; + }; + }) => ({ + platformNamespace: data.platformNamespaces?.nodes?.[0] ?? null, + }), + }); + } + create( + args: CreateArgs & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + createPlatformNamespace: { + platformNamespace: InferSelectResult; + }; + }> { + const { document, variables } = buildCreateDocument( + 'PlatformNamespace', + 'createPlatformNamespace', + 'platformNamespace', + args.select, + args.data, + 'CreatePlatformNamespaceInput', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'mutation', + operationName: 'PlatformNamespace', + fieldName: 'createPlatformNamespace', + document, + variables, + }); + } + update( + args: UpdateArgs< + S, + { + id: string; + }, + PlatformNamespacePatch + > & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + updatePlatformNamespace: { + platformNamespace: InferSelectResult; + }; + }> { + const { document, variables } = buildUpdateByPkDocument( + 'PlatformNamespace', + 'updatePlatformNamespace', + 'platformNamespace', + args.select, + args.where.id, + args.data, + 'UpdatePlatformNamespaceInput', + 'id', + 'platformNamespacePatch', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'mutation', + operationName: 'PlatformNamespace', + fieldName: 'updatePlatformNamespace', + document, + variables, + }); + } + delete( + args: DeleteArgs< + { + id: string; + }, + S + > & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + deletePlatformNamespace: { + platformNamespace: InferSelectResult; + }; + }> { + const { document, variables } = buildDeleteByPkDocument( + 'PlatformNamespace', + 'deletePlatformNamespace', + 'platformNamespace', + { + id: args.where.id, + }, + 'DeletePlatformNamespaceInput', + args.select, + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'mutation', + operationName: 'PlatformNamespace', + fieldName: 'deletePlatformNamespace', + document, + variables, + }); + } +} diff --git a/sdk/functions-sdk/src/infra/orm/models/platformNamespaceEvent.ts b/sdk/functions-sdk/src/infra/orm/models/platformNamespaceEvent.ts new file mode 100644 index 00000000..653257e8 --- /dev/null +++ b/sdk/functions-sdk/src/infra/orm/models/platformNamespaceEvent.ts @@ -0,0 +1,246 @@ +/** + * PlatformNamespaceEvent model for ORM client + * @generated by @constructive-io/graphql-codegen + * DO NOT EDIT - changes will be overwritten + */ +import { OrmClient } from '../client'; +import { + QueryBuilder, + buildFindManyDocument, + buildFindFirstDocument, + buildFindOneDocument, + buildCreateDocument, + buildUpdateByPkDocument, + buildDeleteByPkDocument, +} from '../query-builder'; +import type { + ConnectionResult, + FindManyArgs, + FindFirstArgs, + CreateArgs, + UpdateArgs, + DeleteArgs, + InferSelectResult, + StrictSelect, +} from '../select-types'; +import type { + PlatformNamespaceEvent, + PlatformNamespaceEventWithRelations, + PlatformNamespaceEventSelect, + PlatformNamespaceEventFilter, + PlatformNamespaceEventOrderBy, + CreatePlatformNamespaceEventInput, + UpdatePlatformNamespaceEventInput, + PlatformNamespaceEventPatch, +} from '../input-types'; +import { connectionFieldsMap } from '../input-types'; +export class PlatformNamespaceEventModel { + constructor(private client: OrmClient) {} + findMany( + args: FindManyArgs & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + platformNamespaceEvents: ConnectionResult< + InferSelectResult + >; + }> { + const { document, variables } = buildFindManyDocument( + 'PlatformNamespaceEvent', + 'platformNamespaceEvents', + args.select, + { + where: args?.where, + orderBy: args?.orderBy as string[] | undefined, + first: args?.first, + last: args?.last, + after: args?.after, + before: args?.before, + offset: args?.offset, + }, + 'PlatformNamespaceEventFilter', + 'PlatformNamespaceEventOrderBy', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'query', + operationName: 'PlatformNamespaceEvent', + fieldName: 'platformNamespaceEvents', + document, + variables, + }); + } + findFirst( + args: FindFirstArgs & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + platformNamespaceEvent: InferSelectResult | null; + }> { + const { document, variables } = buildFindFirstDocument( + 'PlatformNamespaceEvent', + 'platformNamespaceEvents', + args.select, + { + where: args?.where, + orderBy: args?.orderBy as string[] | undefined, + }, + 'PlatformNamespaceEventFilter', + 'PlatformNamespaceEventOrderBy', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'query', + operationName: 'PlatformNamespaceEvent', + fieldName: 'platformNamespaceEvent', + document, + variables, + transform: (data: { + platformNamespaceEvents?: { + nodes?: InferSelectResult[]; + }; + }) => ({ + platformNamespaceEvent: data.platformNamespaceEvents?.nodes?.[0] ?? null, + }), + }); + } + findOne( + args: { + id: string; + select: S; + } & StrictSelect + ): QueryBuilder<{ + platformNamespaceEvent: InferSelectResult | null; + }> { + const { document, variables } = buildFindManyDocument( + 'PlatformNamespaceEvent', + 'platformNamespaceEvents', + args.select, + { + where: { + id: { + equalTo: args.id, + }, + }, + first: 1, + }, + 'PlatformNamespaceEventFilter', + 'PlatformNamespaceEventOrderBy', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'query', + operationName: 'PlatformNamespaceEvent', + fieldName: 'platformNamespaceEvent', + document, + variables, + transform: (data: { + platformNamespaceEvents?: { + nodes?: InferSelectResult[]; + }; + }) => ({ + platformNamespaceEvent: data.platformNamespaceEvents?.nodes?.[0] ?? null, + }), + }); + } + create( + args: CreateArgs & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + createPlatformNamespaceEvent: { + platformNamespaceEvent: InferSelectResult; + }; + }> { + const { document, variables } = buildCreateDocument( + 'PlatformNamespaceEvent', + 'createPlatformNamespaceEvent', + 'platformNamespaceEvent', + args.select, + args.data, + 'CreatePlatformNamespaceEventInput', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'mutation', + operationName: 'PlatformNamespaceEvent', + fieldName: 'createPlatformNamespaceEvent', + document, + variables, + }); + } + update( + args: UpdateArgs< + S, + { + id: string; + }, + PlatformNamespaceEventPatch + > & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + updatePlatformNamespaceEvent: { + platformNamespaceEvent: InferSelectResult; + }; + }> { + const { document, variables } = buildUpdateByPkDocument( + 'PlatformNamespaceEvent', + 'updatePlatformNamespaceEvent', + 'platformNamespaceEvent', + args.select, + args.where.id, + args.data, + 'UpdatePlatformNamespaceEventInput', + 'id', + 'platformNamespaceEventPatch', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'mutation', + operationName: 'PlatformNamespaceEvent', + fieldName: 'updatePlatformNamespaceEvent', + document, + variables, + }); + } + delete( + args: DeleteArgs< + { + id: string; + }, + S + > & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + deletePlatformNamespaceEvent: { + platformNamespaceEvent: InferSelectResult; + }; + }> { + const { document, variables } = buildDeleteByPkDocument( + 'PlatformNamespaceEvent', + 'deletePlatformNamespaceEvent', + 'platformNamespaceEvent', + { + id: args.where.id, + }, + 'DeletePlatformNamespaceEventInput', + args.select, + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'mutation', + operationName: 'PlatformNamespaceEvent', + fieldName: 'deletePlatformNamespaceEvent', + document, + variables, + }); + } +} diff --git a/sdk/functions-sdk/src/infra/orm/models/platformSecretDefinition.ts b/sdk/functions-sdk/src/infra/orm/models/platformSecretDefinition.ts new file mode 100644 index 00000000..a8f9fafd --- /dev/null +++ b/sdk/functions-sdk/src/infra/orm/models/platformSecretDefinition.ts @@ -0,0 +1,246 @@ +/** + * PlatformSecretDefinition model for ORM client + * @generated by @constructive-io/graphql-codegen + * DO NOT EDIT - changes will be overwritten + */ +import { OrmClient } from '../client'; +import { + QueryBuilder, + buildFindManyDocument, + buildFindFirstDocument, + buildFindOneDocument, + buildCreateDocument, + buildUpdateByPkDocument, + buildDeleteByPkDocument, +} from '../query-builder'; +import type { + ConnectionResult, + FindManyArgs, + FindFirstArgs, + CreateArgs, + UpdateArgs, + DeleteArgs, + InferSelectResult, + StrictSelect, +} from '../select-types'; +import type { + PlatformSecretDefinition, + PlatformSecretDefinitionWithRelations, + PlatformSecretDefinitionSelect, + PlatformSecretDefinitionFilter, + PlatformSecretDefinitionOrderBy, + CreatePlatformSecretDefinitionInput, + UpdatePlatformSecretDefinitionInput, + PlatformSecretDefinitionPatch, +} from '../input-types'; +import { connectionFieldsMap } from '../input-types'; +export class PlatformSecretDefinitionModel { + constructor(private client: OrmClient) {} + findMany( + args: FindManyArgs & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + platformSecretDefinitions: ConnectionResult< + InferSelectResult + >; + }> { + const { document, variables } = buildFindManyDocument( + 'PlatformSecretDefinition', + 'platformSecretDefinitions', + args.select, + { + where: args?.where, + orderBy: args?.orderBy as string[] | undefined, + first: args?.first, + last: args?.last, + after: args?.after, + before: args?.before, + offset: args?.offset, + }, + 'PlatformSecretDefinitionFilter', + 'PlatformSecretDefinitionOrderBy', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'query', + operationName: 'PlatformSecretDefinition', + fieldName: 'platformSecretDefinitions', + document, + variables, + }); + } + findFirst( + args: FindFirstArgs & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + platformSecretDefinition: InferSelectResult | null; + }> { + const { document, variables } = buildFindFirstDocument( + 'PlatformSecretDefinition', + 'platformSecretDefinitions', + args.select, + { + where: args?.where, + orderBy: args?.orderBy as string[] | undefined, + }, + 'PlatformSecretDefinitionFilter', + 'PlatformSecretDefinitionOrderBy', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'query', + operationName: 'PlatformSecretDefinition', + fieldName: 'platformSecretDefinition', + document, + variables, + transform: (data: { + platformSecretDefinitions?: { + nodes?: InferSelectResult[]; + }; + }) => ({ + platformSecretDefinition: data.platformSecretDefinitions?.nodes?.[0] ?? null, + }), + }); + } + findOne( + args: { + id: string; + select: S; + } & StrictSelect + ): QueryBuilder<{ + platformSecretDefinition: InferSelectResult | null; + }> { + const { document, variables } = buildFindManyDocument( + 'PlatformSecretDefinition', + 'platformSecretDefinitions', + args.select, + { + where: { + id: { + equalTo: args.id, + }, + }, + first: 1, + }, + 'PlatformSecretDefinitionFilter', + 'PlatformSecretDefinitionOrderBy', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'query', + operationName: 'PlatformSecretDefinition', + fieldName: 'platformSecretDefinition', + document, + variables, + transform: (data: { + platformSecretDefinitions?: { + nodes?: InferSelectResult[]; + }; + }) => ({ + platformSecretDefinition: data.platformSecretDefinitions?.nodes?.[0] ?? null, + }), + }); + } + create( + args: CreateArgs & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + createPlatformSecretDefinition: { + platformSecretDefinition: InferSelectResult; + }; + }> { + const { document, variables } = buildCreateDocument( + 'PlatformSecretDefinition', + 'createPlatformSecretDefinition', + 'platformSecretDefinition', + args.select, + args.data, + 'CreatePlatformSecretDefinitionInput', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'mutation', + operationName: 'PlatformSecretDefinition', + fieldName: 'createPlatformSecretDefinition', + document, + variables, + }); + } + update( + args: UpdateArgs< + S, + { + id: string; + }, + PlatformSecretDefinitionPatch + > & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + updatePlatformSecretDefinition: { + platformSecretDefinition: InferSelectResult; + }; + }> { + const { document, variables } = buildUpdateByPkDocument( + 'PlatformSecretDefinition', + 'updatePlatformSecretDefinition', + 'platformSecretDefinition', + args.select, + args.where.id, + args.data, + 'UpdatePlatformSecretDefinitionInput', + 'id', + 'platformSecretDefinitionPatch', + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'mutation', + operationName: 'PlatformSecretDefinition', + fieldName: 'updatePlatformSecretDefinition', + document, + variables, + }); + } + delete( + args: DeleteArgs< + { + id: string; + }, + S + > & { + select: S; + } & StrictSelect + ): QueryBuilder<{ + deletePlatformSecretDefinition: { + platformSecretDefinition: InferSelectResult; + }; + }> { + const { document, variables } = buildDeleteByPkDocument( + 'PlatformSecretDefinition', + 'deletePlatformSecretDefinition', + 'platformSecretDefinition', + { + id: args.where.id, + }, + 'DeletePlatformSecretDefinitionInput', + args.select, + connectionFieldsMap + ); + return new QueryBuilder({ + client: this.client, + operation: 'mutation', + operationName: 'PlatformSecretDefinition', + fieldName: 'deletePlatformSecretDefinition', + document, + variables, + }); + } +} diff --git a/sdk/functions-sdk/src/infra/orm/mutation/index.ts b/sdk/functions-sdk/src/infra/orm/mutation/index.ts new file mode 100644 index 00000000..989afbcb --- /dev/null +++ b/sdk/functions-sdk/src/infra/orm/mutation/index.ts @@ -0,0 +1,57 @@ +/** + * Custom mutation operations + * @generated by @constructive-io/graphql-codegen + * DO NOT EDIT - changes will be overwritten + */ +import { OrmClient } from '../client'; +import { QueryBuilder, buildCustomDocument } from '../query-builder'; +import type { InferSelectResult, StrictSelect } from '../select-types'; +import type { + ProvisionBucketInput, + ProvisionBucketPayload, + ProvisionBucketPayloadSelect, +} from '../input-types'; +import { connectionFieldsMap } from '../input-types'; +/** + * Variables for provisionBucket + * Provision an S3 bucket for a logical bucket in the database. +Reads the bucket config via RLS, then creates and configures +the S3 bucket with the appropriate privacy policies, CORS rules, +and lifecycle settings. + */ +export interface ProvisionBucketVariables { + input: ProvisionBucketInput; +} +export function createMutationOperations(client: OrmClient) { + return { + provisionBucket: ( + args: ProvisionBucketVariables, + options: { + select: S; + } & StrictSelect + ) => + new QueryBuilder<{ + provisionBucket: InferSelectResult | null; + }>({ + client, + operation: 'mutation', + operationName: 'ProvisionBucket', + fieldName: 'provisionBucket', + ...buildCustomDocument( + 'mutation', + 'ProvisionBucket', + 'provisionBucket', + options.select, + args, + [ + { + name: 'input', + type: 'ProvisionBucketInput!', + }, + ], + connectionFieldsMap, + 'ProvisionBucketPayload' + ), + }), + }; +} diff --git a/sdk/functions-sdk/src/infra/orm/query-builder.ts b/sdk/functions-sdk/src/infra/orm/query-builder.ts new file mode 100644 index 00000000..fcf3e63f --- /dev/null +++ b/sdk/functions-sdk/src/infra/orm/query-builder.ts @@ -0,0 +1,1045 @@ +/** + * Query Builder - Builds and executes GraphQL operations + * @generated by @constructive-io/graphql-codegen + * DO NOT EDIT - changes will be overwritten + */ +import { parseType, print } from '@constructive-io/graphql-query/runtime'; +import * as t from 'gql-ast'; +import type { ArgumentNode, EnumValueNode, FieldNode, VariableDefinitionNode } from 'graphql'; + +import { GraphQLRequestError, OrmClient, QueryResult } from './client'; + +export interface QueryBuilderConfig { + client: OrmClient; + operation: 'query' | 'mutation'; + operationName: string; + fieldName: string; + document: string; + variables?: Record; + transform?: (data: any) => TResult; +} + +export class QueryBuilder { + private config: QueryBuilderConfig; + + constructor(config: QueryBuilderConfig) { + this.config = config; + } + + /** + * Execute the query and return a discriminated union result + * Use result.ok to check success, or .unwrap() to throw on error + */ + async execute(): Promise> { + const rawResult = await this.config.client.execute( + this.config.document, + this.config.variables + ); + if (!rawResult.ok) { + return rawResult; + } + if (!this.config.transform) { + return rawResult as unknown as QueryResult; + } + return { + ok: true, + data: this.config.transform(rawResult.data), + errors: undefined, + }; + } + + /** + * Execute and unwrap the result, throwing GraphQLRequestError on failure + * @throws {GraphQLRequestError} If the query returns errors + */ + async unwrap(): Promise { + const result = await this.execute(); + if (!result.ok) { + throw new GraphQLRequestError(result.errors, result.data); + } + return result.data; + } + + /** + * Execute and unwrap, returning defaultValue on error instead of throwing + */ + async unwrapOr(defaultValue: D): Promise { + const result = await this.execute(); + if (!result.ok) { + return defaultValue; + } + return result.data; + } + + /** + * Execute and unwrap, calling onError callback on failure + */ + async unwrapOrElse( + onError: (errors: import('./client').GraphQLError[]) => D + ): Promise { + const result = await this.execute(); + if (!result.ok) { + return onError(result.errors); + } + return result.data; + } + + toGraphQL(): string { + return this.config.document; + } + + getVariables(): Record | undefined { + return this.config.variables; + } +} + +const OP_QUERY = 'query' as unknown as import('graphql').OperationTypeNode; +const OP_MUTATION = 'mutation' as unknown as import('graphql').OperationTypeNode; +const ENUM_VALUE_KIND = 'EnumValue' as unknown as EnumValueNode['kind']; + +// ============================================================================ +// Selection Builders +// ============================================================================ + +export function buildSelections( + select: Record | undefined, + connectionFieldsMap?: Record>, + entityType?: string +): FieldNode[] { + if (!select) { + return []; + } + + const fields: FieldNode[] = []; + const entityConnections = entityType ? connectionFieldsMap?.[entityType] : undefined; + + for (const [key, value] of Object.entries(select)) { + if (value === false || value === undefined) { + continue; + } + + if (value === true) { + fields.push(t.field({ name: key })); + continue; + } + + if (typeof value === 'object' && value !== null) { + const nested = value as { + select?: Record; + args?: Record; + first?: number; + filter?: Record; + orderBy?: string[]; + connection?: boolean; + }; + + // Field with arguments (e.g. requestUploadUrl on bucket types) + if (nested.args && typeof nested.args === 'object') { + const fieldArgs = Object.entries(nested.args).map(([argName, argValue]) => + t.argument({ name: argName, value: buildValueAst(argValue) }) + ); + const nestedSelect = nested.select; + if (nestedSelect && typeof nestedSelect === 'object') { + const subSelections = Object.entries(nestedSelect) + .filter(([, v]) => v) + .map(([name]) => t.field({ name })); + fields.push( + t.field({ + name: key, + args: fieldArgs.length ? fieldArgs : undefined, + selectionSet: subSelections.length + ? t.selectionSet({ selections: subSelections }) + : undefined, + }) + ); + } else { + fields.push( + t.field({ + name: key, + args: fieldArgs.length ? fieldArgs : undefined, + }) + ); + } + continue; + } + + if (!nested.select || typeof nested.select !== 'object') { + throw new Error( + `Invalid selection for field "${key}": nested selections must include a "select" object.` + ); + } + + const relatedEntityType = entityConnections?.[key]; + const nestedSelections = buildSelections( + nested.select, + connectionFieldsMap, + relatedEntityType + ); + const isConnection = + nested.connection === true || + nested.first !== undefined || + nested.filter !== undefined || + relatedEntityType !== undefined; + const args = buildArgs([ + buildOptionalArg('first', nested.first), + nested.filter + ? t.argument({ + name: 'filter', + value: buildValueAst(nested.filter), + }) + : null, + buildEnumListArg('orderBy', nested.orderBy), + ]); + + if (isConnection) { + fields.push( + t.field({ + name: key, + args, + selectionSet: t.selectionSet({ + selections: buildConnectionSelections(nestedSelections), + }), + }) + ); + } else { + fields.push( + t.field({ + name: key, + args, + selectionSet: t.selectionSet({ selections: nestedSelections }), + }) + ); + } + } + } + + return fields; +} + +// ============================================================================ +// Document Builders +// ============================================================================ + +export function buildFindManyDocument( + operationName: string, + queryField: string, + select: TSelect, + args: { + where?: TWhere; + orderBy?: string[]; + first?: number; + last?: number; + after?: string; + before?: string; + offset?: number; + }, + filterTypeName: string, + orderByTypeName: string, + connectionFieldsMap?: Record> +): { document: string; variables: Record } { + const selections = select + ? buildSelections(select as Record, connectionFieldsMap, operationName) + : [t.field({ name: 'id' })]; + + const variableDefinitions: VariableDefinitionNode[] = []; + const queryArgs: ArgumentNode[] = []; + const variables: Record = {}; + + addVariable( + { + varName: 'where', + typeName: filterTypeName, + value: args.where, + }, + variableDefinitions, + queryArgs, + variables + ); + addVariable( + { + varName: 'orderBy', + typeName: '[' + orderByTypeName + '!]', + value: args.orderBy?.length ? args.orderBy : undefined, + }, + variableDefinitions, + queryArgs, + variables + ); + addVariable( + { varName: 'first', typeName: 'Int', value: args.first }, + variableDefinitions, + queryArgs, + variables + ); + addVariable( + { varName: 'last', typeName: 'Int', value: args.last }, + variableDefinitions, + queryArgs, + variables + ); + addVariable( + { varName: 'after', typeName: 'Cursor', value: args.after }, + variableDefinitions, + queryArgs, + variables + ); + addVariable( + { varName: 'before', typeName: 'Cursor', value: args.before }, + variableDefinitions, + queryArgs, + variables + ); + addVariable( + { varName: 'offset', typeName: 'Int', value: args.offset }, + variableDefinitions, + queryArgs, + variables + ); + + const document = t.document({ + definitions: [ + t.operationDefinition({ + operation: OP_QUERY, + name: operationName + 'Query', + variableDefinitions: variableDefinitions.length ? variableDefinitions : undefined, + selectionSet: t.selectionSet({ + selections: [ + t.field({ + name: queryField, + args: queryArgs.length ? queryArgs : undefined, + selectionSet: t.selectionSet({ + selections: buildConnectionSelections(selections), + }), + }), + ], + }), + }), + ], + }); + + return { document: print(document), variables }; +} + +export function buildFindFirstDocument( + operationName: string, + queryField: string, + select: TSelect, + args: { where?: TWhere; orderBy?: string[] }, + filterTypeName: string, + orderByTypeName: string, + connectionFieldsMap?: Record> +): { document: string; variables: Record } { + const selections = select + ? buildSelections(select as Record, connectionFieldsMap, operationName) + : [t.field({ name: 'id' })]; + + const variableDefinitions: VariableDefinitionNode[] = []; + const queryArgs: ArgumentNode[] = []; + const variables: Record = {}; + + // Always add first: 1 for findFirst + addVariable( + { varName: 'first', typeName: 'Int', value: 1 }, + variableDefinitions, + queryArgs, + variables + ); + addVariable( + { + varName: 'where', + typeName: filterTypeName, + value: args.where, + }, + variableDefinitions, + queryArgs, + variables + ); + addVariable( + { + varName: 'orderBy', + typeName: '[' + orderByTypeName + '!]', + value: args.orderBy?.length ? args.orderBy : undefined, + }, + variableDefinitions, + queryArgs, + variables + ); + + const document = t.document({ + definitions: [ + t.operationDefinition({ + operation: OP_QUERY, + name: operationName + 'Query', + variableDefinitions, + selectionSet: t.selectionSet({ + selections: [ + t.field({ + name: queryField, + args: queryArgs, + selectionSet: t.selectionSet({ + selections: [ + t.field({ + name: 'nodes', + selectionSet: t.selectionSet({ selections }), + }), + ], + }), + }), + ], + }), + }), + ], + }); + + return { document: print(document), variables }; +} + +export function buildCreateDocument( + operationName: string, + mutationField: string, + entityField: string, + select: TSelect, + data: TData, + inputTypeName: string, + connectionFieldsMap?: Record> +): { document: string; variables: Record } { + const selections = select + ? buildSelections(select as Record, connectionFieldsMap, operationName) + : [t.field({ name: 'id' })]; + + return { + document: buildInputMutationDocument({ + operationName, + mutationField, + inputTypeName, + resultSelections: [ + t.field({ + name: entityField, + selectionSet: t.selectionSet({ selections }), + }), + ], + }), + variables: { + input: { + [entityField]: data, + }, + }, + }; +} + +export function buildUpdateDocument( + operationName: string, + mutationField: string, + entityField: string, + select: TSelect, + where: TWhere, + data: TData, + inputTypeName: string, + patchFieldName: string, + connectionFieldsMap?: Record> +): { document: string; variables: Record } { + const selections = select + ? buildSelections(select as Record, connectionFieldsMap, operationName) + : [t.field({ name: 'id' })]; + + return { + document: buildInputMutationDocument({ + operationName, + mutationField, + inputTypeName, + resultSelections: [ + t.field({ + name: entityField, + selectionSet: t.selectionSet({ selections }), + }), + ], + }), + variables: { + input: { + id: where.id, + [patchFieldName]: data, + }, + }, + }; +} + +export function buildUpdateByPkDocument( + operationName: string, + mutationField: string, + entityField: string, + select: TSelect, + id: string | number, + data: TData, + inputTypeName: string, + idFieldName: string, + patchFieldName: string, + connectionFieldsMap?: Record> +): { document: string; variables: Record } { + const selections = select + ? buildSelections(select as Record, connectionFieldsMap, operationName) + : [t.field({ name: 'id' })]; + + return { + document: buildInputMutationDocument({ + operationName, + mutationField, + inputTypeName, + resultSelections: [ + t.field({ + name: entityField, + selectionSet: t.selectionSet({ selections }), + }), + ], + }), + variables: { + input: { + [idFieldName]: id, + [patchFieldName]: data, + }, + }, + }; +} + +export function buildFindOneDocument( + operationName: string, + queryField: string, + id: string | number, + select: TSelect, + idArgName: string, + idTypeName: string, + connectionFieldsMap?: Record> +): { document: string; variables: Record } { + const selections = select + ? buildSelections(select as Record, connectionFieldsMap, operationName) + : [t.field({ name: 'id' })]; + + const variableDefinitions: VariableDefinitionNode[] = [ + t.variableDefinition({ + variable: t.variable({ name: idArgName }), + type: parseType(idTypeName), + }), + ]; + + const queryArgs: ArgumentNode[] = [ + t.argument({ + name: idArgName, + value: t.variable({ name: idArgName }), + }), + ]; + + const document = t.document({ + definitions: [ + t.operationDefinition({ + operation: OP_QUERY, + name: operationName + 'Query', + variableDefinitions, + selectionSet: t.selectionSet({ + selections: [ + t.field({ + name: queryField, + args: queryArgs, + selectionSet: t.selectionSet({ selections }), + }), + ], + }), + }), + ], + }); + + return { + document: print(document), + variables: { [idArgName]: id }, + }; +} + +export function buildDeleteDocument( + operationName: string, + mutationField: string, + entityField: string, + where: TWhere, + inputTypeName: string, + select?: TSelect, + connectionFieldsMap?: Record> +): { document: string; variables: Record } { + const entitySelections = select + ? buildSelections(select as Record, connectionFieldsMap, operationName) + : [t.field({ name: 'id' })]; + + return { + document: buildInputMutationDocument({ + operationName, + mutationField, + inputTypeName, + resultSelections: [ + t.field({ + name: entityField, + selectionSet: t.selectionSet({ + selections: entitySelections, + }), + }), + ], + }), + variables: { + input: { + id: where.id, + }, + }, + }; +} + +export function buildDeleteByPkDocument( + operationName: string, + mutationField: string, + entityField: string, + keys: Record, + inputTypeName: string, + select?: TSelect, + connectionFieldsMap?: Record> +): { document: string; variables: Record } { + const entitySelections = select + ? buildSelections(select as Record, connectionFieldsMap, operationName) + : [t.field({ name: 'id' })]; + + return { + document: buildInputMutationDocument({ + operationName, + mutationField, + inputTypeName, + resultSelections: [ + t.field({ + name: entityField, + selectionSet: t.selectionSet({ selections: entitySelections }), + }), + ], + }), + variables: { + input: keys, + }, + }; +} + +export function buildJunctionRemoveDocument( + operationName: string, + mutationField: string, + keys: Record, + inputTypeName: string +): { document: string; variables: Record } { + return { + document: buildInputMutationDocument({ + operationName, + mutationField, + inputTypeName, + resultSelections: [t.field({ name: 'clientMutationId' })], + }), + variables: { + input: keys, + }, + }; +} + +export function buildCustomDocument( + operationType: 'query' | 'mutation', + operationName: string, + fieldName: string, + select: TSelect, + args: TArgs, + variableDefinitions: Array<{ name: string; type: string }>, + connectionFieldsMap?: Record>, + entityType?: string +): { document: string; variables: Record } { + let actualSelect: TSelect = select; + let isConnection = false; + + if (isCustomSelectionWrapper(select)) { + actualSelect = select.select as TSelect; + isConnection = select.connection === true; + } + + const selections = actualSelect + ? buildSelections(actualSelect as Record, connectionFieldsMap, entityType) + : []; + + const variableDefs = variableDefinitions.map((definition) => + t.variableDefinition({ + variable: t.variable({ name: definition.name }), + type: parseType(definition.type), + }) + ); + const fieldArgs = variableDefinitions.map((definition) => + t.argument({ + name: definition.name, + value: t.variable({ name: definition.name }), + }) + ); + + const fieldSelections = isConnection ? buildConnectionSelections(selections) : selections; + + const document = t.document({ + definitions: [ + t.operationDefinition({ + operation: operationType === 'mutation' ? OP_MUTATION : OP_QUERY, + name: operationName, + variableDefinitions: variableDefs.length ? variableDefs : undefined, + selectionSet: t.selectionSet({ + selections: [ + t.field({ + name: fieldName, + args: fieldArgs.length ? fieldArgs : undefined, + selectionSet: fieldSelections.length + ? t.selectionSet({ selections: fieldSelections }) + : undefined, + }), + ], + }), + }), + ], + }); + + return { + document: print(document), + variables: (args ?? {}) as Record, + }; +} + +function isCustomSelectionWrapper( + value: unknown +): value is { select: Record; connection?: boolean } { + if (!value || typeof value !== 'object' || Array.isArray(value)) { + return false; + } + + const record = value as Record; + const keys = Object.keys(record); + + if (!keys.includes('select') || !keys.includes('connection')) { + return false; + } + + if (keys.some((key) => key !== 'select' && key !== 'connection')) { + return false; + } + + return !!record.select && typeof record.select === 'object' && !Array.isArray(record.select); +} + +// ============================================================================ +// Helper Functions +// ============================================================================ + +function buildArgs(args: Array): ArgumentNode[] { + return args.filter((arg): arg is ArgumentNode => arg !== null); +} + +function buildOptionalArg(name: string, value: number | string | undefined): ArgumentNode | null { + if (value === undefined) { + return null; + } + const valueNode = + typeof value === 'number' ? t.intValue({ value: value.toString() }) : t.stringValue({ value }); + return t.argument({ name, value: valueNode }); +} + +function buildEnumListArg(name: string, values: string[] | undefined): ArgumentNode | null { + if (!values || values.length === 0) { + return null; + } + return t.argument({ + name, + value: t.listValue({ + values: values.map((value) => buildEnumValue(value)), + }), + }); +} + +function buildEnumValue(value: string): EnumValueNode { + return { + kind: ENUM_VALUE_KIND, + value, + }; +} + +function buildPageInfoSelections(): FieldNode[] { + return [ + t.field({ name: 'hasNextPage' }), + t.field({ name: 'hasPreviousPage' }), + t.field({ name: 'startCursor' }), + t.field({ name: 'endCursor' }), + ]; +} + +function buildConnectionSelections(nodeSelections: FieldNode[]): FieldNode[] { + return [ + t.field({ + name: 'nodes', + selectionSet: t.selectionSet({ selections: nodeSelections }), + }), + t.field({ name: 'totalCount' }), + t.field({ + name: 'pageInfo', + selectionSet: t.selectionSet({ selections: buildPageInfoSelections() }), + }), + ]; +} + +interface VariableSpec { + varName: string; + argName?: string; + typeName?: string; + value: unknown; +} + +interface InputMutationConfig { + operationName: string; + mutationField: string; + inputTypeName: string; + resultSelections: FieldNode[]; +} + +function buildInputMutationDocument(config: InputMutationConfig): string { + const document = t.document({ + definitions: [ + t.operationDefinition({ + operation: OP_MUTATION, + name: config.operationName + 'Mutation', + variableDefinitions: [ + t.variableDefinition({ + variable: t.variable({ name: 'input' }), + type: parseType(config.inputTypeName + '!'), + }), + ], + selectionSet: t.selectionSet({ + selections: [ + t.field({ + name: config.mutationField, + args: [ + t.argument({ + name: 'input', + value: t.variable({ name: 'input' }), + }), + ], + selectionSet: t.selectionSet({ + selections: config.resultSelections, + }), + }), + ], + }), + }), + ], + }); + return print(document); +} + +function addVariable( + spec: VariableSpec, + definitions: VariableDefinitionNode[], + args: ArgumentNode[], + variables: Record +): void { + if (spec.value === undefined || !spec.typeName) return; + + definitions.push( + t.variableDefinition({ + variable: t.variable({ name: spec.varName }), + type: parseType(spec.typeName), + }) + ); + args.push( + t.argument({ + name: spec.argName ?? spec.varName, + value: t.variable({ name: spec.varName }), + }) + ); + variables[spec.varName] = spec.value; +} + +function buildValueAst( + value: unknown +): + | ReturnType + | ReturnType + | ReturnType + | ReturnType + | ReturnType + | ReturnType + | ReturnType + | EnumValueNode { + if (value === null) { + return t.nullValue(); + } + + if (typeof value === 'boolean') { + return t.booleanValue({ value }); + } + + if (typeof value === 'number') { + return Number.isInteger(value) + ? t.intValue({ value: value.toString() }) + : t.floatValue({ value: value.toString() }); + } + + if (typeof value === 'string') { + return t.stringValue({ value }); + } + + if (Array.isArray(value)) { + return t.listValue({ + values: value.map((item) => buildValueAst(item)), + }); + } + + if (typeof value === 'object' && value !== null) { + const obj = value as Record; + return t.objectValue({ + fields: Object.entries(obj).map(([key, val]) => + t.objectField({ + name: key, + value: buildValueAst(val), + }) + ), + }); + } + + throw new Error('Unsupported value type: ' + typeof value); +} + +// ============================================================================ +// Bulk Mutation Document Builders +// ============================================================================ + +export function buildBulkInsertDocument( + operationName: string, + mutationField: string, + select: TSelect, + data: TData[], + inputTypeName: string, + onConflict?: unknown, + connectionFieldsMap?: Record> +): { document: string; variables: Record } { + const selections = select + ? buildSelections(select as Record, connectionFieldsMap, operationName) + : [t.field({ name: 'id' })]; + + return { + document: buildInputMutationDocument({ + operationName, + mutationField, + inputTypeName, + resultSelections: [ + t.field({ name: 'affectedCount' }), + t.field({ + name: 'returning', + selectionSet: t.selectionSet({ selections }), + }), + ], + }), + variables: { + input: { + values: data, + ...(onConflict ? { onConflict } : {}), + }, + }, + }; +} + +export function buildBulkUpsertDocument( + operationName: string, + mutationField: string, + select: TSelect, + data: TData[], + inputTypeName: string, + onConflict: unknown, + connectionFieldsMap?: Record> +): { document: string; variables: Record } { + const selections = select + ? buildSelections(select as Record, connectionFieldsMap, operationName) + : [t.field({ name: 'id' })]; + + return { + document: buildInputMutationDocument({ + operationName, + mutationField, + inputTypeName, + resultSelections: [ + t.field({ name: 'affectedCount' }), + t.field({ + name: 'returning', + selectionSet: t.selectionSet({ selections }), + }), + ], + }), + variables: { + input: { + values: data, + onConflict, + }, + }, + }; +} + +export function buildBulkUpdateDocument( + operationName: string, + mutationField: string, + select: TSelect, + where: TWhere, + data: TData, + inputTypeName: string, + connectionFieldsMap?: Record> +): { document: string; variables: Record } { + const selections = select + ? buildSelections(select as Record, connectionFieldsMap, operationName) + : [t.field({ name: 'id' })]; + + return { + document: buildInputMutationDocument({ + operationName, + mutationField, + inputTypeName, + resultSelections: [ + t.field({ name: 'affectedCount' }), + t.field({ + name: 'returning', + selectionSet: t.selectionSet({ selections }), + }), + ], + }), + variables: { + input: { + where, + patch: data, + }, + }, + }; +} + +export function buildBulkDeleteDocument( + operationName: string, + mutationField: string, + select: TSelect, + where: TWhere, + inputTypeName: string, + connectionFieldsMap?: Record> +): { document: string; variables: Record } { + const selections = select + ? buildSelections(select as Record, connectionFieldsMap, operationName) + : [t.field({ name: 'id' })]; + + return { + document: buildInputMutationDocument({ + operationName, + mutationField, + inputTypeName, + resultSelections: [ + t.field({ name: 'affectedCount' }), + t.field({ + name: 'returning', + selectionSet: t.selectionSet({ selections }), + }), + ], + }), + variables: { + input: { + where, + }, + }, + }; +} diff --git a/sdk/functions-sdk/src/infra/orm/realtime.ts b/sdk/functions-sdk/src/infra/orm/realtime.ts new file mode 100644 index 00000000..214eb562 --- /dev/null +++ b/sdk/functions-sdk/src/infra/orm/realtime.ts @@ -0,0 +1,244 @@ +/** + * Realtime Manager - WebSocket subscription support + * @generated by @constructive-io/graphql-codegen + * DO NOT EDIT - changes will be overwritten + */ +// Minimal type shims so this module compiles without graphql-ws +// installed. Consumers supply a WsClient via RealtimeConfig; +// the SDK itself never imports or requires graphql-ws. + +interface WsGraphQLError { + readonly message: string; + readonly [key: string]: unknown; +} + +interface WsExecutionResult> { + data?: TData | null; + errors?: readonly WsGraphQLError[]; + extensions?: Record; +} + +interface WsSink { + next(value: T): void; + error(error: unknown): void; + complete(): void; +} + +/** + * Minimal interface matching the graphql-ws Client. + * Consumers pass a concrete instance via RealtimeConfig.client. + */ +export interface WsClient { + subscribe>( + payload: { query: string; variables?: Record }, + sink: WsSink> + ): () => void; + dispose(): void; +} + +// ============================================================================ +// Types +// ============================================================================ + +/** The DML operation that triggered the subscription event */ +export type SubscriptionOperation = 'INSERT' | 'UPDATE' | 'DELETE'; + +/** Connection state of the WebSocket */ +export type ConnectionState = 'disconnected' | 'connecting' | 'connected' | 'reconnecting'; + +/** Listener for connection state changes */ +export type ConnectionStateListener = (state: ConnectionState) => void; + +/** Function returned by subscribe() to cancel the subscription */ +export type Unsubscribe = () => void; + +/** + * A realtime subscription event delivered to the client. + * + * @typeParam T - The row type of the subscribed table + */ +export interface SubscriptionEvent { + /** The DML operation that triggered this event */ + operation: SubscriptionOperation; + /** The current row data (null for DELETE if row is no longer visible) */ + data: T | null; + /** Previous field values (populated on UPDATE when available) */ + previousValues?: Partial; + /** Server-side timestamp of when the change occurred */ + timestamp: string; +} + +/** + * Options for creating a subscription. + * + * @typeParam T - The row type of the subscribed table + * @typeParam TFilter - The filter type for the table + */ +export interface SubscribeOptions> { + /** Server-side filter to limit which events are delivered */ + filter?: TFilter; + /** Called when a subscription event is received */ + onEvent: (event: SubscriptionEvent) => void; + /** Called when the subscription encounters an error */ + onError?: (error: Error) => void; + /** Called when the subscription completes (server-initiated close) */ + onComplete?: () => void; +} + +/** + * Metadata about a subscription field, used internally to map + * table names to GraphQL subscription field names and types. + */ +export interface SubscriptionFieldMeta { + /** The GraphQL subscription field name (e.g., 'onContactChanged') */ + fieldName: string; + /** The table name in the source schema (e.g., 'contact') */ + tableName: string; + /** The data field name inside the subscription payload (e.g., 'contact') */ + dataFieldName: string; +} + +/** + * Configuration for the realtime (WebSocket) connection. + * Pass this as the `realtime` option in OrmClientConfig. + * + * @example + * ```ts + * import { createClient } from 'graphql-ws'; + * + * const client = createOrmClient({ + * endpoint: 'https://api.example.com/graphql', + * realtime: { + * client: createClient({ url: 'wss://api.example.com/graphql' }), + * }, + * }); + * ``` + */ +export interface RealtimeConfig { + /** + * A graphql-ws Client instance (or any object satisfying WsClient). + * The consumer creates this themselves, giving full control over + * connection options, auth, and transport. + * + * @example + * ```ts + * import { createClient } from 'graphql-ws'; + * const wsClient = createClient({ url: 'wss://...' }); + * ``` + */ + client: WsClient; +} + +// ============================================================================ +// RealtimeManager +// ============================================================================ + +/** + * Manages a graphql-ws WebSocket client and multiplexes + * subscriptions over it. Created by OrmClient when `realtime` + * config is provided. + */ +export class RealtimeManager { + private wsClient: WsClient; + private connectionState: ConnectionState = 'disconnected'; + private stateListeners: Set = new Set(); + private activeSubscriptions = 0; + + constructor(config: RealtimeConfig) { + this.wsClient = config.client; + } + + /** + * Subscribe to a GraphQL subscription operation. + * Models call this with typed metadata and documents. + */ + subscribe( + meta: SubscriptionFieldMeta, + document: string, + variables: Record, + options: { + onEvent: (event: SubscriptionEvent) => void; + onError?: (error: Error) => void; + onComplete?: () => void; + } + ): Unsubscribe { + this.activeSubscriptions++; + let disposed = false; + + const cleanup = this.wsClient.subscribe>( + { query: document, variables }, + { + next: (result) => { + if (disposed) return; + if (result.errors) { + options.onError?.(new Error(result.errors.map((e) => e.message).join('; '))); + return; + } + + const payload = result.data?.[meta.fieldName] as + | { event?: string; [key: string]: unknown } + | undefined; + + if (!payload) return; + + const event: SubscriptionEvent = { + operation: (payload.event as SubscriptionOperation) ?? 'UPDATE', + data: (payload[meta.dataFieldName] as T) ?? null, + previousValues: payload.previousValues as Partial | undefined, + timestamp: (payload.timestamp as string) ?? new Date().toISOString(), + }; + options.onEvent(event); + }, + error: (err) => { + if (disposed) return; + options.onError?.(err instanceof Error ? err : new Error(String(err))); + }, + complete: () => { + if (disposed) return; + options.onComplete?.(); + }, + } + ); + + return () => { + if (disposed) return; + disposed = true; + this.activeSubscriptions--; + cleanup(); + }; + } + + /** Register a listener for connection state changes */ + onConnectionStateChange(listener: ConnectionStateListener): Unsubscribe { + this.stateListeners.add(listener); + return () => { + this.stateListeners.delete(listener); + }; + } + + /** Get current connection state */ + getConnectionState(): ConnectionState { + return this.connectionState; + } + + /** Number of active subscriptions */ + getActiveSubscriptionCount(): number { + return this.activeSubscriptions; + } + + /** Dispose the manager and close the WebSocket connection */ + dispose(): void { + this.wsClient.dispose(); + this.stateListeners.clear(); + this.activeSubscriptions = 0; + this.setConnectionState('disconnected'); + } + + private setConnectionState(state: ConnectionState): void { + if (this.connectionState === state) return; + this.connectionState = state; + for (const listener of this.stateListeners) { + listener(state); + } + } +} diff --git a/sdk/functions-sdk/src/infra/orm/select-types.ts b/sdk/functions-sdk/src/infra/orm/select-types.ts new file mode 100644 index 00000000..4b39d7e8 --- /dev/null +++ b/sdk/functions-sdk/src/infra/orm/select-types.ts @@ -0,0 +1,169 @@ +/** + * Type utilities for select inference + * @generated by @constructive-io/graphql-codegen + * DO NOT EDIT - changes will be overwritten + */ +export interface ConnectionResult { + nodes: T[]; + totalCount: number; + pageInfo: PageInfo; +} + +export interface PageInfo { + hasNextPage: boolean; + hasPreviousPage: boolean; + startCursor?: string | null; + endCursor?: string | null; +} + +export interface FindManyArgs { + select?: TSelect; + where?: TWhere; + orderBy?: TOrderBy[]; + first?: number; + last?: number; + after?: string; + before?: string; + offset?: number; +} + +export interface FindFirstArgs { + select?: TSelect; + where?: TWhere; + orderBy?: TOrderBy[]; +} + +export interface CreateArgs { + data: TData; + select?: TSelect; +} + +export interface UpdateArgs { + where: TWhere; + data: TData; + select?: TSelect; +} + +export type FindOneArgs = { + select?: TSelect; +} & Record; + +export interface DeleteArgs { + where: TWhere; + select?: TSelect; +} + +export interface BulkInsertArgs { + data: TData[]; + select?: TSelect; + onConflict?: TOnConflict; +} + +export interface BulkUpsertArgs { + data: TData[]; + select?: TSelect; + onConflict: TOnConflict; +} + +export interface BulkUpdateArgs { + where: TWhere; + data: TData; + select?: TSelect; +} + +export interface BulkDeleteArgs { + where: TWhere; + select?: TSelect; +} + +export interface BulkMutationResult { + affectedCount: number; + returning: T[]; +} + +type DepthLevel = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10; +type DecrementDepth = { + 0: 0; + 1: 0; + 2: 1; + 3: 2; + 4: 3; + 5: 4; + 6: 5; + 7: 6; + 8: 7; + 9: 8; + 10: 9; +}; + +/** + * Recursively validates select objects, rejecting unknown keys. + * + * NOTE: Depth is intentionally capped to avoid circular-instantiation issues + * in very large cyclic schemas. + */ +export type DeepExact = Depth extends 0 + ? T extends Shape + ? T + : never + : T extends Shape + ? Exclude extends never + ? { + [K in keyof T]: K extends keyof Shape + ? T[K] extends { select: infer NS } + ? Extract extends { + select?: infer ShapeNS; + } + ? DeepExact< + Omit & { + select: DeepExact, DecrementDepth[Depth]>; + }, + Extract, + DecrementDepth[Depth] + > + : never + : T[K] + : never; + } + : never + : never; + +/** + * Enforces exact select shape while keeping contextual typing on `S extends XxxSelect`. + * Use this as an intersection in overloads: + * `{ select: S } & StrictSelect`. + */ +export type StrictSelect = S extends DeepExact ? {} : never; + +/** + * Hook-optimized strict select variant. + * + * Uses a shallower recursion depth to keep editor autocomplete responsive + * in large schemas while still validating common nested-select mistakes. + */ +export type HookStrictSelect = S extends DeepExact ? {} : never; + +/** + * Infer result type from select configuration + */ +export type InferSelectResult = TSelect extends undefined + ? TEntity + : { + [K in keyof TSelect as TSelect[K] extends false | undefined + ? never + : K]: TSelect[K] extends true + ? K extends keyof TEntity + ? TEntity[K] + : never + : TSelect[K] extends { select: infer NestedSelect } + ? K extends keyof TEntity + ? NonNullable extends ConnectionResult + ? ConnectionResult> + : + | InferSelectResult, NestedSelect> + | (null extends TEntity[K] ? null : never) + : never + : K extends keyof TEntity + ? TEntity[K] + : never; + }; diff --git a/sdk/functions-sdk/src/infra/orm/types.ts b/sdk/functions-sdk/src/infra/orm/types.ts new file mode 100644 index 00000000..7c1120bc --- /dev/null +++ b/sdk/functions-sdk/src/infra/orm/types.ts @@ -0,0 +1,8 @@ +/** + * Types re-export + * @generated by @constructive-io/graphql-codegen + * DO NOT EDIT - changes will be overwritten + */ + +// Re-export all types from input-types +export * from './input-types'; diff --git a/sdk/functions-sdk/tsconfig.json b/sdk/functions-sdk/tsconfig.json new file mode 100644 index 00000000..443e20a1 --- /dev/null +++ b/sdk/functions-sdk/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "declaration": true + }, + "include": ["src/**/*.ts"], + "exclude": ["dist", "node_modules", "scripts"] +}