From a3be59cc8055d789c1c474ab90d7c22c3919f7ca Mon Sep 17 00:00:00 2001 From: Harrison O'Connor-Hoover Date: Thu, 1 Oct 2026 09:29:46 -0400 Subject: [PATCH 1/3] Guide reviewed pipeline runs and retained-raw output repair --- Dockerfile | 2 +- HANDOFF.md | 37 +- README.md | 73 +- e2e/hosted-graph-management.spec.ts | 158 +- integration/current-dander-control.test.ts | 44 +- integration/native-repair-observation.test.ts | 55 + package.json | 5 +- scripts/generate-dander-contracts.mjs | 36 +- src/app/globals.css | 2 +- src/features/graph-io/GraphEditor.tsx | 44 +- src/features/graph-io/GraphToolbar.tsx | 2 +- .../hosted-control/DateRepairPanel.tsx | 198 + .../hosted-control/GraphChangeReview.tsx | 71 + .../hosted-control/HostedRunControlsBar.tsx | 36 +- .../hosted-control/HostedWorkspace.tsx | 6 +- .../hosted-control/PipelineJourney.tsx | 218 + src/features/hosted-control/RunOutcome.tsx | 132 + .../hosted-control/control-api.test.ts | 48 + src/features/hosted-control/control-api.ts | 123 + src/features/hosted-control/journey.test.tsx | 310 + .../hosted-control/useGraphChangePreview.ts | 136 + .../useHostedRunControls.test.tsx | 25 + .../hosted-control/useHostedRunControls.ts | 145 +- .../bundle/fixtures/capabilities.json | 2 +- .../bundle/fixtures/graph-change-preview.json | 1 + .../bundle/fixtures/graph-repair-preview.json | 1 + .../bundle/fixtures/graph-repair-window.json | 1 + .../bundle/fixtures/run-explanation.json | 1 + .../bundle/fixtures/run-status.json | 2 +- .../dander-contracts/bundle/manifest.json | 2 +- .../bundle/schemas/capabilities.schema.json | 2 +- .../schemas/graph-change-preview.schema.json | 1 + .../schemas/graph-repair-preview.schema.json | 1 + .../schemas/graph-repair-window.schema.json | 1 + .../schemas/run-explanation.schema.json | 1 + .../bundle/schemas/run-page.schema.json | 2 +- .../bundle/schemas/run-status.schema.json | 2 +- src/generated/dander-contracts/metadata.ts | 10 +- .../dander-contracts/types/api-error.ts | 7 +- .../dander-contracts/types/capabilities.ts | 11 +- .../types/connector-catalog.ts | 7 +- .../types/control-bootstrap.ts | 7 +- .../types/deployment-preview.ts | 7 +- .../types/graph-change-preview.ts | 200 + .../dander-contracts/types/graph-create.ts | 7 +- .../dander-contracts/types/graph-page.ts | 7 +- .../types/graph-repair-preview.ts | 71 + .../types/graph-repair-window.ts | 18 + .../dander-contracts/types/graph-resource.ts | 7 +- .../types/graph-validation.ts | 7 +- .../dander-contracts/types/log-page.ts | 7 +- .../dander-contracts/types/mutation-result.ts | 7 +- .../types/operation-catalog.ts | 7 +- .../dander-contracts/types/pipeline-graph.ts | 7 +- .../dander-contracts/types/plugin-catalog.ts | 7 +- .../dander-contracts/types/project-list.ts | 7 +- .../dander-contracts/types/run-explanation.ts | 96 + .../dander-contracts/types/run-page.ts | 116 +- .../dander-contracts/types/run-request.ts | 7 +- .../dander-contracts/types/run-status.ts | 116 +- .../dander-contracts/validators.d.ts | 8 + src/generated/dander-contracts/validators.js | 35348 ++++++++++------ .../generated-contracts.test.ts | 28 + src/lib/dander-contracts/index.ts | 4 + src/lib/dander-contracts/runtime.ts | 20 + steering/00-project-overview.md | 8 + tickets/DRUFF-32-guided-pipeline-journey.md | 46 + vitest.native-repair.config.ts | 11 + 68 files changed, 25514 insertions(+), 12628 deletions(-) create mode 100644 integration/native-repair-observation.test.ts create mode 100644 src/features/hosted-control/DateRepairPanel.tsx create mode 100644 src/features/hosted-control/GraphChangeReview.tsx create mode 100644 src/features/hosted-control/PipelineJourney.tsx create mode 100644 src/features/hosted-control/RunOutcome.tsx create mode 100644 src/features/hosted-control/journey.test.tsx create mode 100644 src/features/hosted-control/useGraphChangePreview.ts create mode 100644 src/generated/dander-contracts/bundle/fixtures/graph-change-preview.json create mode 100644 src/generated/dander-contracts/bundle/fixtures/graph-repair-preview.json create mode 100644 src/generated/dander-contracts/bundle/fixtures/graph-repair-window.json create mode 100644 src/generated/dander-contracts/bundle/fixtures/run-explanation.json create mode 100644 src/generated/dander-contracts/bundle/schemas/graph-change-preview.schema.json create mode 100644 src/generated/dander-contracts/bundle/schemas/graph-repair-preview.schema.json create mode 100644 src/generated/dander-contracts/bundle/schemas/graph-repair-window.schema.json create mode 100644 src/generated/dander-contracts/bundle/schemas/run-explanation.schema.json create mode 100644 src/generated/dander-contracts/types/graph-change-preview.ts create mode 100644 src/generated/dander-contracts/types/graph-repair-preview.ts create mode 100644 src/generated/dander-contracts/types/graph-repair-window.ts create mode 100644 src/generated/dander-contracts/types/run-explanation.ts create mode 100644 tickets/DRUFF-32-guided-pipeline-journey.md create mode 100644 vitest.native-repair.config.ts diff --git a/Dockerfile b/Dockerfile index bc4f26e..e1ad3d5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -37,7 +37,7 @@ FROM scratch AS runner ARG SOURCE_REVISION=unrecorded ARG SOURCE_CREATED=1970-01-01T00:00:00Z -ARG DRUFF_VERSION=0.1.0 +ARG DRUFF_VERSION=0.2.0-rc.1 LABEL org.opencontainers.image.title="Druff" LABEL org.opencontainers.image.description="Static, provider-neutral Dander control-plane interface" diff --git a/HANDOFF.md b/HANDOFF.md index 86dfd58..a9cf076 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -2,34 +2,39 @@ ## Finished -- Merged current-Dander compatibility in PR #23 and passed exact-main CI at `34acec00dfc9aafe93a62b1e3ed2b1b807a66487`. -- Exercised Druff's production clients against protected Dander RC32 at `33801213ee8c1bab78b8847a4b86bd9b4b8d1c63`. -- Built and retained exact active and rollback multi-platform OCI artifacts with SBOM and provenance attestations. -- Verified both artifacts are source-free, non-root, read-only, route-complete, and clean under the protected Trivy policy. +- Added a hosted Choose → Configure → Review → Run → Results journey with one primary action and existing technical controls under advanced details. +- Bound unsaved change previews to the draft, graph address and revision; running requires the reviewed content hash to match the saved graph. +- Added recorded outcome explanations, missing-measurement handling and explicit retained-raw date repair with date/revision invalidation and safe retry keys. +- Preserved loopback editing, OIDC/capability gates, graph conflicts, logs, cancellation and replay; corrected the existing font variable and toolbar overflow. +- Documented the experimental repair boundary and added a read-only production-client observation test for an already-completed native repair. ## Try It -Resolve the retained artifacts with `oras resolve --oci-layout /Users/harrison/.codex/artifacts/druff/2026-08-24-release/druff-active-34acec00dfc9.oci.tar:active` or the matching `druff-rollback-55f1565f3cb8.oci.tar:rollback`. For Control API acceptance, start current Dander and run `DANDER_CONTROL_URL=http://127.0.0.1:8770 DANDER_EXPECTED_VERSION=0.9.0rc32 pnpm test:current-dander`. +In hosted mode, browse a graph, edit its source/output configuration, choose **Preview changes**, then **Save reviewed changes** and **Run reviewed graph**. Expand **Repair selected output dates** for an eligible saved graph. Existing operator configuration still supplies connections and deployed environments. + +For real HTTP contract checks, start an ephemeral Dander Control API and use `DANDER_CONTROL_URL=... DANDER_EXPECTED_VERSION=... pnpm test:current-dander`. For an accepted native repair, use the explicit project, graph and run ID variables documented in README with `pnpm test:repair-observation`. ## Checks -- PR #23 and exact-main run `32787930579` passed Frontend quality, Source-free container, and Secret scan. -- Current-Dander acceptance, contract/artifact checks, lint, types, format, 669 unit tests, and 11 Playwright journeys passed. -- Both exact artifacts passed reproducible-layer, promotion, archive, amd64/arm64 runtime/export, and Trivy 0.70.0 HIGH/CRITICAL plus secret checks with zero findings. +- Passed 685 unit/component tests, nine artifact checks, TypeScript, ESLint, Prettier and static build against the verified published RC33 wheel; independent contract regeneration reports no drift. +- Passed all 11 Playwright journeys, including reviewed save/run, date invalidation, repair submission and existing conflict/retry behavior. Browser OIDC/API responses are synthetic. +- Passed production-client real HTTP acceptance against an ephemeral Control API installed from the published RC33 wheel: exact hashes, canvas round trip, unsaved preview, save, stale preview rejection and truthful unsupported execution. +- Visually inspected the synthetic browser screenshot; font and horizontal overflow defects are corrected. A focused test also confirms late explanations cannot replace newer run status. ## Decisions -- Active is merge commit `34acec00dfc9`; rollback is green PR head `55f1565f3cb8`; both share tree `ce829147ef3b`. -- Retain the public RC19 contract pin because protected RC32's bundle is byte-identical. -- Keep the release artifacts as local OCI archives; public registry publication remains a separate external action. +- Dander remains the only semantic/execution authority; no provider client or new auth infrastructure was added. +- Missing result documents display Unknown instead of interpreting default counters as measured zeros. +- Date repair rebuilds output partitions from retained raw data; it is explicitly experimental and does not recover historical source records. ## Remaining -- No Druff implementation or release-readiness gap remains. -- Publish or deploy the retained artifact only when a destination is explicitly approved. +- Candidate version is `0.2.0-rc.1`, paired with the exact published RC33 wheel and contract digest in README. This does not promote the RC20 public beta. +- Observe the separately authorized native repair once its accepted run ID is available; no provider workload was launched by Druff tests. +- Commit the coordinated client/generator changes, then complete protected PR, exact-main checks and authorized release steps. ## Review First -- `tickets/DRUFF-31-current-dander-release-acceptance.md` -- `integration/current-dander-control.test.ts` -- `/Users/harrison/.codex/artifacts/druff/2026-08-24-release/records` +- `src/features/hosted-control/useGraphChangePreview.ts` and `DateRepairPanel.tsx` +- `src/features/hosted-control/control-api.ts` and `integration/` +- `tickets/DRUFF-32-guided-pipeline-journey.md` diff --git a/README.md b/README.md index 0ea8677..cbb8497 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,15 @@ Front-end companion to **[Dander](https://github.com/harrisonoconnorhover/dander editor for Dander's canonical `PipelineGraph` files (drag/drop nodes, wire connections, configure sources/transforms/writes). -Druff opens and saves one graph file through Dander's localhost API. Dander owns parsing, -validation, conflict detection, and atomic filesystem writes. When the operator binds that graph -to one manifest pipeline, Druff can also validate it, manually run its already-deployed Cloud Run -job, and show compact execution/run-ledger status. A version-1 `dander.yaml` can still be imported -as a detached, one-way visualization. When Dander explicitly enables it with complete operator -inputs, Druff can also request a source-free candidate and display its non-applyable Terraform -plan; Druff never writes the manifest or applies infrastructure. +Druff connects to Dander's hosted Control API or its single-file localhost API. Hosted users sign +in, choose a graph, configure it on the canvas, review unsaved changes, save, run and inspect the +recorded outcome. Dander owns parsing, validation, revision conflicts, storage and execution. + +In localhost mode, an operator can bind the open graph to one manifest pipeline to validate it, +run its already-deployed Cloud Run job and inspect the run ledger. A version-1 `dander.yaml` can +still be imported as a detached, one-way visualization. When Dander explicitly enables it with +complete operator inputs, Druff can also request a source-free candidate and display its +non-applyable Terraform plan; Druff never writes the manifest or applies infrastructure. When that manifest pins installed connector plugins, Druff discovers their presentation-safe descriptors from Dander and adds them to the palette dynamically. The first dynamic connector is @@ -31,7 +33,7 @@ read-only instead of being rewritten. See `CLAUDE.md` and `steering/00-project-overview.md` for the full picture (why this exists, the module map, decision log). The accepted documentation-only Druff 1.0 architecture checkpoint is in `steering/03-control-plane-roadmap.md`. Druff's DTOs now come from Dander's published contract -bundle; hosted graph storage, identity, and run APIs remain later phases. +bundle; hosted graph storage, identity, and run controls are implemented by the static client. ## Stack @@ -57,11 +59,13 @@ pnpm install pnpm dev # http://localhost:3000 ``` -Contract output is generated only from the pinned public -`dander-platform==0.9.0rc19` wheel on PyPI. The generator verifies the wheel, manifest, every file, -and the whole bundle before writing output; it never reads a sibling Dander checkout. Current -protected Dander RC32 retains the exact same `io.dander.control.contracts/v1` bundle bytes, so the -published pin remains the authority instead of being relabeled from an unpublished checkout. +Contract output is generated only from the pinned +[`dander-platform==0.9.0rc33` GitHub integration-candidate wheel](https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl), +SHA-256 `2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f`. +The generator verifies the wheel, manifest, every file, and the whole bundle before writing output; +it never reads a sibling Dander checkout. This client requires the matching RC33 bundle. The +GitHub integration candidate does not promote Dander's public PyPI RC20 beta or qualify additional +provider profiles. ```bash pnpm contracts:check # re-generate in a temporary directory and fail on committed drift @@ -72,12 +76,12 @@ Release acceptance can additionally exercise Druff's production graph and operat against a locally running current Dander Control API: ```bash -# In the protected Dander checkout: -uv run dander control serve --ephemeral --project demo-project --port 8770 +# In an environment installed from the pinned RC33 wheel above (not the RC20 PyPI beta): +dander control serve --ephemeral --project demo-project --port 8770 # In Druff: DANDER_CONTROL_URL=http://127.0.0.1:8770 \ -DANDER_EXPECTED_VERSION=0.9.0rc32 \ +DANDER_EXPECTED_VERSION=0.9.0rc33 \ pnpm test:current-dander ``` @@ -133,6 +137,43 @@ cancel, and replay APIs. Dander remains authoritative for authorization and sema discards stale or mismatched responses and never receives provider credentials or native payloads. When `/bootstrap.json` is absent, the existing local-loopback workspace remains unchanged. +The hosted workspace guides one saved graph through **Choose → Configure → Review → Run → Results**: + +1. Browse a project and open a graph, or create a graph from the current canvas draft. Configure + source and output nodes in the existing inspector. Connections and deployed environments still + belong to Dander's operator configuration. +2. Choose **Preview changes** to compare the unsaved draft with its saved revision. The review + lists changed nodes and connections, downstream outputs, and the write behavior of every + output a full run will write. This comparison does not query rows or estimate a bill. +3. Choose **Save reviewed changes**, then **Run reviewed graph**. Edits invalidate the review; + Dander checks the saved revision again before accepting execution. Saving alone does not run. +4. Read the recorded outcome and suggested next action. Missing result measurements stay + **Unknown**, including server-default counters before a result document exists. Advanced + validation, deployment preview, logs, cancellation and replay remain available. +5. Expand **Repair selected output dates** to preview a saved graph's half-open UTC date window + (first date included, end date excluded). A compatible environment can rebuild those output + partitions from retained raw warehouse data. This does not fetch historical source records or + move normal ingestion progress. Dander determines eligibility and publishes the selected + ranges atomically; unsupported graphs/environments return an explicit explanation. + +Date repair is an experimental producer capability until its stated qualification gates are met. +A generated client and its Dander deployment must use the same published contract bundle. Browser +journey tests use synthetic HTTP/OIDC fixtures; they do not establish live provider success. + +To inspect an already-completed operator-owned native repair through Druff's real HTTP client, +without starting another workload: + +```bash +DANDER_CONTROL_URL=http://127.0.0.1:8875 \ +DANDER_REPAIR_PROJECT=repair-proof \ +DANDER_REPAIR_GRAPH=repair-events \ +DANDER_REPAIR_RUN_ID=REPLACE_WITH_ACCEPTED_RUN_ID \ +pnpm test:repair-observation +``` + +This observation verifies the exact contract, saved graph, repair preview, status and explanation. +The operator's separate provider evidence must establish warehouse results, watermarks and cleanup. + To enable the narrow operational controls for one graph that is already deployed, start Dander with its matching manifest pipeline and GCP project: diff --git a/e2e/hosted-graph-management.spec.ts b/e2e/hosted-graph-management.spec.ts index b99433c..2181a4a 100644 --- a/e2e/hosted-graph-management.spec.ts +++ b/e2e/hosted-graph-management.spec.ts @@ -1,9 +1,12 @@ import { expect, test, type Page, type Route } from "@playwright/test"; import { execFileSync } from "node:child_process"; +import { createHash } from "node:crypto"; import { createReadStream, existsSync, mkdtempSync, readFileSync, rmSync, statSync } from "node:fs"; import { createServer, type Server } from "node:https"; import { tmpdir } from "node:os"; import { extname, join, resolve } from "node:path"; +import type { RunStatusResponse, RunExplanationResponse } from "../src/lib/dander-contracts"; +import repairPreviewFixture from "../src/generated/dander-contracts/bundle/fixtures/graph-repair-preview.json"; import staticSecurityHeaders from "../artifact/static-security-headers.json"; import { DANDER_CONTRACT_BUNDLE_ID, @@ -38,6 +41,7 @@ type StoredRun = { runId: string; state: "queued" | "running" | "succeeded" | "canceling" | "canceled"; polls: number; + repairWindow?: { start_date: string; end_date: string }; }; type DurableControlState = { @@ -61,6 +65,8 @@ function graphDocument(name: string, nodeName: string) { id: "source", type: "source", name: nodeName, + config: { connector: null, endpoint: null }, + fields: [], visual: { position: { x: 20, y: 40 }, color: "green", icon: "database" }, }, ], @@ -79,12 +85,24 @@ function nextRecord( graph, document, revision: `"revision-${durable.revision}"`, - contentSha: durable.revision.toString(16).padStart(64, "0"), + contentSha: graphHash(document), createdAt, updatedAt: `2026-08-14T10:00:${String(durable.revision).padStart(2, "0")}Z`, }; } +function graphHash(document: unknown): string { + return createHash("sha256") + .update( + JSON.stringify(document, (_key, value: unknown) => { + if (value && typeof value === "object" && !Array.isArray(value)) + return Object.fromEntries(Object.entries(value).sort(([a], [b]) => a.localeCompare(b))); + return value; + }), + ) + .digest("hex"); +} + function resource(record: StoredGraph) { return { project: PROJECT, @@ -100,7 +118,7 @@ function errorEnvelope(code: string, message: string) { return { error: { code, message, correlation_id: "e2e-correlation", details: [] } }; } -function runStatus(run: StoredRun) { +function runStatus(run: StoredRun): RunStatusResponse { const terminal = run.state === "succeeded" || run.state === "canceled"; return { run_id: run.runId, @@ -120,6 +138,9 @@ function runStatus(run: StoredRun) { can_cancel: run.state === "queued" || run.state === "running", can_replay: terminal, logs_available: run.state === "running" || terminal, + result_schema: + run.state === "succeeded" ? "io.dander.control.execution-result-summary/v1" : null, + repair_window: run.repairWindow ?? null, }; } @@ -291,6 +312,10 @@ function createControlService(durable: DurableControlState) { "graph.edit", "graph.delete", "graph.validate", + "graph.change-preview", + "graph.repair-preview", + "run.repair", + "run.explain", "deployment.preview", "run.start", "run.read", @@ -414,7 +439,7 @@ function createControlService(durable: DurableControlState) { } const operationMatch = - /^\/v1\/projects\/demo-project\/graphs\/([^/]+)\/(validate|deployment-preview)$/.exec( + /^\/v1\/projects\/demo-project\/graphs\/([^/]+)\/(validate|deployment-preview|change-preview|repair-preview)$/.exec( url.pathname, ); if (operationMatch && request.method() === "POST") { @@ -429,6 +454,35 @@ function createControlService(durable: DurableControlState) { ); return; } + if (operation === "repair-preview") { + await json(route, 200, { + ...repairPreviewFixture, + graph_content_sha256: current.contentSha, + window: JSON.parse(request.postData() ?? "{}"), + }); + return; + } + if (operation === "change-preview") { + const candidate = JSON.parse(request.postData() ?? "{}"); + if (durable.runCounter === 0) expect(candidate).toEqual(current.document); + await json(route, 200, { + baseline_content_sha256: current.contentSha, + candidate_content_sha256: graphHash(candidate), + graph_properties_changed: [], + node_changes: [], + connection_changes: [], + affected_outputs: [], + outputs: [], + run_output_ids: [], + estimates: { + rows_written: null, + cost_usd: null, + explanation: "This synthetic preview does not inspect warehouse rows.", + }, + limitations: [], + }); + return; + } if (operation === "validate") { await json(route, 200, { valid: false, @@ -464,7 +518,7 @@ function createControlService(durable: DurableControlState) { return; } - const startRunMatch = /^\/v1\/projects\/demo-project\/graphs\/([^/]+)\/runs$/.exec( + const startRunMatch = /^\/v1\/projects\/demo-project\/graphs\/([^/]+)\/(runs|repairs)$/.exec( url.pathname, ); if (startRunMatch && request.method() === "POST") { @@ -489,6 +543,9 @@ function createControlService(durable: DurableControlState) { runId: `run-synthetic-${durable.runCounter}`, state: "queued", polls: 0, + ...(startRunMatch[2] === "repairs" + ? { repairWindow: JSON.parse(request.postData() ?? "{}") } + : {}), }; durable.runs.set(run.runId, run); const status = runStatus(run); @@ -512,6 +569,41 @@ function createControlService(durable: DurableControlState) { return; } + const explanationMatch = /^\/v1\/runs\/([^/]+)\/explanation$/.exec(url.pathname); + if (explanationMatch && request.method() === "GET") { + const run = durable.runs.get(decodeURIComponent(explanationMatch[1]!))!; + const nextAction: RunExplanationResponse["next_action"] = + run.state === "succeeded" + ? { + kind: "inspect_outputs", + label: "Review the pipeline outputs", + reason: "Confirm that the recorded output matches the result you expected.", + } + : run.state === "canceled" + ? { + kind: "inspect_outputs", + label: "Inspect any partial outputs", + reason: "Cancellation does not establish that prior writes were undone.", + } + : { + kind: "refresh", + label: "Refresh run status", + reason: + "Wait for confirmed status and result measurements before starting another run.", + }; + await json(route, 200, { + run_id: run.runId, + state: run.state, + results_available: run.state === "succeeded", + summary: `Run ${run.runId}: ${run.state}`, + details: [], + caveats: ["Synthetic browser fixture; no provider execution."], + available_actions: [nextAction.kind], + next_action: nextAction, + } satisfies RunExplanationResponse); + return; + } + const logMatch = /^\/v1\/runs\/([^/]+)\/logs$/.exec(url.pathname); if (logMatch && request.method() === "GET") { const runId = decodeURIComponent(logMatch[1]!); @@ -761,7 +853,7 @@ test("manages hosted graphs safely across conflicts, ambiguous retries, and serv throw new Error(`Hosted bootstrap did not settle:\n${browserEvents.join("\n")}`); }); await signIn(page, browserEvents); - await page.getByRole("button", { name: "Browse hosted graphs" }).click(); + await page.getByRole("button", { name: "Browse hosted graphs" }).first().click(); await expect(page.getByText("alpha-graph", { exact: true })).toBeVisible(); await expect(page.getByText("beta-graph", { exact: true })).toHaveCount(0); await page.getByRole("button", { name: "Load more" }).click(); @@ -772,6 +864,9 @@ test("manages hosted graphs safely across conflicts, ambiguous retries, and serv .getByRole("button", { name: "Open" }) .click(); + await expect(page.getByRole("button", { name: "Preview changes", exact: true })).toBeVisible(); + await page.screenshot({ path: test.info().outputPath("guided-default.png"), fullPage: true }); + await page.getByText("Advanced validation, deployment and run controls", { exact: true }).click(); await page.getByText("Inspect catalogs and capabilities").click(); await expect(page.getByText(/Dander 0\.9\.0rc19 · API v1/)).toBeVisible(); await expect(page.getByText(/Installed connectors:.*Records API/)).toBeVisible(); @@ -809,15 +904,16 @@ test("manages hosted graphs safely across conflicts, ambiguous retries, and serv await page.getByRole("button", { name: "Reload hosted version" }).click(); await expect(page.locator(".react-flow__node", { hasText: "Server edit" })).toBeVisible(); - await page.getByRole("button", { name: "Start run" }).click(); - const normalizedRun = page.getByLabel("Normalized run status"); + await page.getByRole("button", { name: "Preview changes", exact: true }).click(); + await page.getByRole("button", { name: "Run reviewed graph" }).click(); + const normalizedRun = page.getByLabel("Run outcome"); await expect(normalizedRun).toContainText("Run run-synthetic-1: queued"); await expect(normalizedRun).toContainText("Run run-synthetic-1: running", { timeout: 5_000, }); await page.getByRole("button", { name: "Load bounded logs" }).click(); await expect(page.getByText("Synthetic run is progressing safely.")).toBeVisible(); - await page.getByRole("button", { name: "Cancel run" }).click(); + await page.getByRole("button", { name: "Cancel run", exact: true }).first().click(); await expect( page.getByText("Dander acknowledged cancellation; status polling continues."), ).toBeVisible(); @@ -830,12 +926,43 @@ test("manages hosted graphs safely across conflicts, ambiguous retries, and serv timeout: 7_000, }); + await page.getByText("Graph files and settings", { exact: true }).click(); + const serverNodesBeforeSave = durable.records.get("alpha-graph")?.document.nodes; const source = page.locator(".react-flow__node", { hasText: "Server edit" }); await source.click(); await page.getByLabel("Name", { exact: true }).fill("Client edit"); - await page.getByRole("button", { name: "Save hosted graph" }).click(); + await page.getByRole("button", { name: "Preview changes", exact: true }).click(); + await expect(page.getByText(/Rows and cost: unknown/).first()).toBeVisible(); + expect(durable.records.get("alpha-graph")?.document.nodes).toEqual(serverNodesBeforeSave); + await page.getByRole("button", { name: "Save reviewed changes", exact: true }).click(); + await expect(page.getByRole("button", { name: "Run reviewed graph", exact: true })).toBeEnabled(); await expect(page.getByText("Saved", { exact: true })).toBeVisible(); + await page.getByText("Repair selected output dates", { exact: true }).click(); + await page.getByLabel(/First date/).fill("2026-09-01"); + await page.getByLabel(/End date/).fill("2026-09-03"); + await page.getByRole("button", { name: "Preview date repair", exact: true }).click(); + await expect(page.getByRole("button", { name: "Start reviewed repair" })).toBeEnabled(); + await page.getByLabel(/End date/).fill("2026-09-04"); + await expect(page.getByRole("button", { name: "Start reviewed repair" })).toHaveCount(0); + await page.getByRole("button", { name: "Preview date repair", exact: true }).click(); + await expect(page.getByRole("button", { name: "Start reviewed repair" })).toBeEnabled(); + await page.getByRole("button", { name: "Start reviewed repair" }).scrollIntoViewIfNeeded(); + expect(await page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth)).toBe( + true, + ); + await page.screenshot({ + path: test.info().outputPath("guided-repair-review.png"), + fullPage: true, + }); + await page.getByRole("button", { name: "Start reviewed repair" }).click(); + await expect(normalizedRun).toContainText("2026-09-01 through 2026-09-04"); + expect(durable.runs.get("run-synthetic-3")?.repairWindow).toEqual({ + start_date: "2026-09-01", + end_date: "2026-09-04", + }); + await expect(normalizedRun).toContainText("Run run-synthetic-3: succeeded", { timeout: 7_000 }); + const serverRecord = durable.records.get("alpha-graph")!; durable.records.set( "alpha-graph", @@ -864,19 +991,23 @@ test("manages hosted graphs safely across conflicts, ambiguous retries, and serv await expect(page.locator(".react-flow__node", { hasText: "Server edit" })).toBeVisible(); durable.loseNextCreate = true; - await page.getByRole("button", { name: "Browse hosted graphs" }).click(); + await page.getByRole("button", { name: "Browse hosted graphs" }).first().click(); await page.getByLabel("Create from current local draft").fill("restart-graph"); await page.getByRole("button", { name: "Create" }).click(); - await expect(page.getByText(/could not reach/i)).toBeVisible(); + await expect( + page + .getByRole("region", { name: "Pipeline journey", exact: true }) + .getByText(/could not reach/i), + ).toBeVisible(); restartService(); - await page.getByRole("button", { name: "Browse hosted graphs" }).click(); + await page.getByRole("button", { name: "Browse hosted graphs" }).first().click(); await page.getByRole("button", { name: "Create" }).click(); await expect(page.getByText("Saved", { exact: true })).toBeVisible(); restartService(); await page.reload(); await signIn(page, browserEvents); - await page.getByRole("button", { name: "Browse hosted graphs" }).click(); + await page.getByRole("button", { name: "Browse hosted graphs" }).first().click(); await page.getByRole("button", { name: "Load more" }).click(); await page .getByRole("listitem") @@ -884,6 +1015,7 @@ test("manages hosted graphs safely across conflicts, ambiguous retries, and serv .getByRole("button", { name: "Open" }) .click(); await expect(page.locator(".react-flow__node", { hasText: "Server edit" })).toBeVisible(); + await page.getByText("Graph files and settings", { exact: true }).click(); await expect(page.getByLabel("Hosted graph identity")).toContainText( "demo-project/restart-graph", ); diff --git a/integration/current-dander-control.test.ts b/integration/current-dander-control.test.ts index 869e745..48c1eae 100644 --- a/integration/current-dander-control.test.ts +++ b/integration/current-dander-control.test.ts @@ -13,6 +13,7 @@ import { type GraphAddress, type GraphDocument, } from "@/lib/persistence/graph-persistence"; +import { canvasToGraph, graphToCanvas } from "@/lib/pipeline-graph"; import { EXAMPLE_GRAPH } from "@/lib/pipeline-graph/__fixtures__/example-graph"; const configuredUrl = process.env.DANDER_CONTROL_URL; @@ -79,18 +80,42 @@ describe("current protected Dander Control API", () => { graph: EXAMPLE_GRAPH, }); + const canvas = graphToCanvas(opened.graph); + const unchangedDraft = canvasToGraph( + canvas.nodes, + canvas.edges, + opened.graph.name, + opened.graph.trigger, + ); + const unchangedReview = await control.previewChanges(address, opened.revision, unchangedDraft); + expect(unchangedReview.candidate_content_sha256).toBe(opened.contentSha256); + const validation = await control.validate(address, opened.revision); expect(validation).toMatchObject({ graph_name: EXAMPLE_GRAPH.name, content_sha256: opened.contentSha256, }); - current = await persistence.save( - { ...EXAMPLE_GRAPH, name: "current_dander_acceptance_updated" }, - opened.revision, - address, - ); + const candidate = { ...EXAMPLE_GRAPH, name: "current_dander_acceptance_updated" }; + const changes = await control.previewChanges(address, opened.revision, candidate); + expect(changes.baseline_content_sha256).toBe(opened.contentSha256); + expect(changes.candidate_content_sha256).not.toBe(opened.contentSha256); + expect(changes.graph_properties_changed).toContain("name"); + expect(changes.estimates?.rows_written).toBeNull(); + expect(changes.estimates?.cost_usd).toBeNull(); + // Preview must not save even though it accepts the unsaved candidate. + await expect(persistence.load(address)).resolves.toMatchObject({ + revision: opened.revision, + contentSha256: opened.contentSha256, + graph: opened.graph, + }); + + current = await persistence.save(candidate, opened.revision, address); expect(current.revision).not.toBe(opened.revision); + expect(current.contentSha256).toBe(changes.candidate_content_sha256); + await expect(control.previewChanges(address, opened.revision, candidate)).rejects.toMatchObject( + { conflict: true }, + ); const previewFailure = await control .preview(address, current.revision) @@ -104,6 +129,15 @@ describe("current protected Dander Control API", () => { expect(runFailure).toBeInstanceOf(HostedControlOperationError); expect(runFailure).toMatchObject({ unsupported: true }); + // This server intentionally has no execution plan or provider backend. Do not turn + // a read-only contract proof into an accidental live workload or pretend repair ran. + await expect( + control.previewRepair(address, current.revision, { + start_date: "2026-09-01", + end_date: "2026-09-03", + }), + ).rejects.toMatchObject({ unsupported: true }); + await persistence.delete(address, current.revision); current = null; await expect(persistence.load(address)).rejects.toThrow(/does not exist/i); diff --git a/integration/native-repair-observation.test.ts b/integration/native-repair-observation.test.ts new file mode 100644 index 0000000..4a5256e --- /dev/null +++ b/integration/native-repair-observation.test.ts @@ -0,0 +1,55 @@ +import { expect, it } from "vitest"; +import { HostedControlApiClient } from "@/features/hosted-control/control-api"; +import type { HostedControlFetch } from "@/features/hosted-control/authorized-fetch"; +import { + DANDER_CONTRACT_BUNDLE_ID, + DANDER_CONTRACT_BUNDLE_SHA256, +} from "@/generated/dander-contracts/metadata"; +import { HostedGraphPersistence } from "@/lib/persistence/graph-persistence"; + +const url = process.env.DANDER_CONTROL_URL; +const project = process.env.DANDER_REPAIR_PROJECT; +const graph = process.env.DANDER_REPAIR_GRAPH; +const runId = process.env.DANDER_REPAIR_RUN_ID; +if (!url || !project || !graph || !runId) { + throw new Error( + "Set DANDER_CONTROL_URL, DANDER_REPAIR_PROJECT, DANDER_REPAIR_GRAPH and DANDER_REPAIR_RUN_ID to observe an already-completed synthetic repair.", + ); +} +const base = new URL(url); +if (!/^https?:$/.test(base.protocol) || base.username || base.password) { + throw new Error("DANDER_CONTROL_URL must be credential-free HTTP(S)."); +} +const request: HostedControlFetch = async (target, init) => { + const endpoint = new URL(target.toString(), base); + if (endpoint.origin !== base.origin) throw new Error("Refused a cross-origin request."); + return fetch(endpoint, { ...init, redirect: "error" }); +}; +const control = new HostedControlApiClient(request); +const persistence = new HostedGraphPersistence(request); + +it("reads an accepted native repair through the production Druff clients without starting another workload", async () => { + const capabilities = await control.capabilities(); + expect(capabilities.contract).toEqual({ + id: DANDER_CONTRACT_BUNDLE_ID, + sha256: DANDER_CONTRACT_BUNDLE_SHA256, + }); + const address = { project, graph }; + const saved = await persistence.load(address); + const run = await control.getRun(runId); + expect(run.state).toBe("succeeded"); + expect(run.repair_window).toBeTruthy(); + expect(run.result_schema).toBeTruthy(); + const preview = await control.previewRepair(address, saved.revision, run.repair_window!); + expect(preview.graph_content_sha256).toBe(saved.contentSha256); + expect(preview.window).toEqual(run.repair_window); + expect(preview.outputs.length).toBeGreaterThan(0); + const explanation = await control.explainRun(runId); + expect(explanation).toMatchObject({ run_id: runId, state: "succeeded", results_available: true }); + expect(explanation.summary).toBeTruthy(); + // Repair preview is read-only: no second launch, graph save, source extraction or watermark write. + await expect(persistence.load(address)).resolves.toMatchObject({ + revision: saved.revision, + contentSha256: saved.contentSha256, + }); +}); diff --git a/package.json b/package.json index 4fdbfa6..7678dc6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "druff", - "version": "0.1.0", + "version": "0.2.0-rc.1", "private": true, "scripts": { "dev": "node scripts/copy-monaco-assets.mjs && next dev", @@ -16,7 +16,8 @@ "test:current-dander": "vitest run --config vitest.current-dander.config.ts", "test:artifact": "node --test scripts/*.test.mjs", "test:watch": "vitest", - "test:e2e": "pnpm build && playwright test" + "test:e2e": "pnpm build && playwright test", + "test:repair-observation": "vitest run --config vitest.native-repair.config.ts" }, "dependencies": { "@monaco-editor/react": "^4.7.0", diff --git a/scripts/generate-dander-contracts.mjs b/scripts/generate-dander-contracts.mjs index c9e87fd..c1ee512 100644 --- a/scripts/generate-dander-contracts.mjs +++ b/scripts/generate-dander-contracts.mjs @@ -12,11 +12,13 @@ import { compile } from "json-schema-to-typescript"; import { format, resolveConfig } from "prettier"; const DANDER_PACKAGE = "dander-platform"; -const DANDER_VERSION = "0.9.0rc19"; -const WHEEL_FILENAME = "dander_platform-0.9.0rc19-py3-none-any.whl"; -const WHEEL_SHA256 = "8f1336786e46471a2048d6250008ad176ff3b62d047020872659304c7d2db552"; +const DANDER_VERSION = "0.9.0rc33"; +const WHEEL_FILENAME = "dander_platform-0.9.0rc33-py3-none-any.whl"; +const WHEEL_URL = + "https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/" + WHEEL_FILENAME; +const WHEEL_SHA256 = "2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f"; const BUNDLE_ID = "io.dander.control.contracts/v1"; -const BUNDLE_SHA256 = "695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3"; +const BUNDLE_SHA256 = "a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279"; const BUNDLE_PATH = join("dander", "control", "contracts", "v1"); const repoRoot = resolve(dirname(fileURLToPath(import.meta.url)), ".."); @@ -29,8 +31,11 @@ const roots = [ ["connector-catalog", "ConnectorCatalogResponse", "validateConnectorCatalog"], ["control-bootstrap", "ControlBootstrapDescriptor", "validateControlBootstrap"], ["deployment-preview", "DeploymentPreviewResponse", "validateDeploymentPreview"], + ["graph-change-preview", "GraphChangePreviewResponse", "validateGraphChangePreview"], ["graph-create", "GraphCreateRequest", "validateGraphCreate"], ["graph-page", "GraphPageResponse", "validateGraphPage"], + ["graph-repair-preview", "GraphRepairPreviewResponse", "validateGraphRepairPreview"], + ["graph-repair-window", "GraphRepairWindow", "validateGraphRepairWindow"], ["graph-resource", "GraphResourceResponse", "validateGraphResource"], ["graph-validation", "GraphValidationResponse", "validateGraphValidation"], ["log-page", "LogPageResponse", "validateLogPage"], @@ -39,6 +44,7 @@ const roots = [ ["pipeline-graph", "PipelineGraphDocument", "validatePipelineGraph"], ["plugin-catalog", "PluginCatalogResponse", "validatePluginCatalog"], ["project-list", "ProjectListResponse", "validateProjectList"], + ["run-explanation", "RunExplanationResponse", "validateRunExplanation"], ["run-page", "RunPageResponse", "validateRunPage"], ["run-request", "RunRequest", "validateRunRequest"], ["run-status", "RunStatusResponse", "validateRunStatus"], @@ -71,23 +77,7 @@ function fail(message) { } async function fetchPublishedWheel(destination) { - const metadataUrl = `https://pypi.org/pypi/${DANDER_PACKAGE}/${DANDER_VERSION}/json`; - const metadataResponse = await fetch(metadataUrl); - if (!metadataResponse.ok) { - fail( - `PyPI metadata request failed (${metadataResponse.status} ${metadataResponse.statusText})`, - ); - } - const metadata = await metadataResponse.json(); - const wheel = metadata.urls?.find( - (file) => file.filename === WHEEL_FILENAME && file.packagetype === "bdist_wheel", - ); - if (!wheel) fail(`PyPI release does not contain ${WHEEL_FILENAME}`); - if (wheel.digests?.sha256 !== WHEEL_SHA256) { - fail(`PyPI metadata reports an unexpected wheel digest for ${WHEEL_FILENAME}`); - } - - const wheelResponse = await fetch(wheel.url); + const wheelResponse = await fetch(WHEEL_URL); if (!wheelResponse.ok) { fail(`wheel download failed (${wheelResponse.status} ${wheelResponse.statusText})`); } @@ -149,7 +139,7 @@ async function verifyBundle(bundleDirectory) { actualFiles.size !== expectedFiles.size || [...actualFiles].some((path) => !expectedFiles.has(path)) ) { - fail("published bundle files differ from the signed manifest inventory"); + fail("published bundle files differ from the verified manifest inventory"); } return manifest; } @@ -171,6 +161,7 @@ async function generateTypes(bundleDirectory, outputDirectory) { const bannerComment = [ "/**", ` * Generated from ${DANDER_PACKAGE}==${DANDER_VERSION} (${WHEEL_FILENAME}).`, + ` * Published wheel: ${WHEEL_URL}`, ` * Wheel SHA256: ${WHEEL_SHA256}`, ` * Contract bundle: ${BUNDLE_ID} (${BUNDLE_SHA256})`, " * Do not edit by hand; run `pnpm contracts:generate`.", @@ -266,6 +257,7 @@ async function generateMetadata(outputDirectory) { export const DANDER_CONTRACT_PACKAGE = ${JSON.stringify(DANDER_PACKAGE)} as const; export const DANDER_CONTRACT_PACKAGE_VERSION = ${JSON.stringify(DANDER_VERSION)} as const; export const DANDER_CONTRACT_WHEEL = ${JSON.stringify(WHEEL_FILENAME)} as const; + export const DANDER_CONTRACT_WHEEL_URL = ${JSON.stringify(WHEEL_URL)} as const; export const DANDER_CONTRACT_WHEEL_SHA256 = ${JSON.stringify(WHEEL_SHA256)} as const; export const DANDER_CONTRACT_BUNDLE_ID = ${JSON.stringify(BUNDLE_ID)} as const; export const DANDER_CONTRACT_BUNDLE_SHA256 = ${JSON.stringify(BUNDLE_SHA256)} as const; diff --git a/src/app/globals.css b/src/app/globals.css index 6a25b1b..0375448 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -7,7 +7,7 @@ @theme inline { --color-background: var(--background); --color-foreground: var(--foreground); - --font-sans: var(--font-sans); + --font-sans: var(--font-geist-sans); --font-mono: var(--font-geist-mono); --font-heading: var(--font-sans); --color-sidebar-ring: var(--sidebar-ring); diff --git a/src/features/graph-io/GraphEditor.tsx b/src/features/graph-io/GraphEditor.tsx index db971e1..96d0aaf 100644 --- a/src/features/graph-io/GraphEditor.tsx +++ b/src/features/graph-io/GraphEditor.tsx @@ -9,8 +9,7 @@ import { useGraphOperations } from "@/features/graph-operations/useGraphOperatio import { PipelineCanvas } from "@/features/pipeline-canvas/PipelineCanvas"; import { useHostedControl } from "@/features/hosted-control/HostedControlProvider"; import { HostedControlApiClient } from "@/features/hosted-control/control-api"; -import { HostedRunControlsBar } from "@/features/hosted-control/HostedRunControlsBar"; -import { HostedValidationPreviewBar } from "@/features/hosted-control/HostedValidationPreviewBar"; +import { PipelineJourney } from "@/features/hosted-control/PipelineJourney"; import { useHostedRunControls } from "@/features/hosted-control/useHostedRunControls"; import { useHostedValidationPreview } from "@/features/hosted-control/useHostedValidationPreview"; import { HostedConnectorDiscovery } from "@/features/connector-library/discovery"; @@ -67,28 +66,37 @@ export function GraphEditor() { return (
- - {control.mode === "hosted" && control.capabilities ? ( + {control.mode === "hosted" && control.capabilities && hostedControlApi ? ( <> - - +
+ Graph files and settings + +
) : ( - + <> + + + )}
{viewMode === "canvas" ? ( diff --git a/src/features/graph-io/GraphToolbar.tsx b/src/features/graph-io/GraphToolbar.tsx index 17af864..ec3ee29 100644 --- a/src/features/graph-io/GraphToolbar.tsx +++ b/src/features/graph-io/GraphToolbar.tsx @@ -101,7 +101,7 @@ export function GraphToolbar({ } return ( -
+
{persistence.managed ? ( ) : ( diff --git a/src/features/hosted-control/DateRepairPanel.tsx b/src/features/hosted-control/DateRepairPanel.tsx new file mode 100644 index 0000000..bba505d --- /dev/null +++ b/src/features/hosted-control/DateRepairPanel.tsx @@ -0,0 +1,198 @@ +"use client"; + +import { useState } from "react"; +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import type { GraphPersistenceControls } from "@/features/graph-io/useGraphPersistence"; +import { + HostedControlOperationError, + type HostedControlApiClient, +} from "@/features/hosted-control/control-api"; +import type { HostedRunControls } from "@/features/hosted-control/useHostedRunControls"; +import type { GraphRepairPreviewResponse } from "@/lib/dander-contracts"; + +/** A repair always previews the same saved graph and half-open window it submits. */ +export function DateRepairPanel({ + client, + persistence, + controls, + canPreview, +}: { + client: Pick; + persistence: GraphPersistenceControls; + controls: HostedRunControls; + canPreview: boolean; +}): React.JSX.Element { + const [start, setStart] = useState(""); + const [end, setEnd] = useState(""); + const [environment, setEnvironment] = useState(""); + const [pending, setPending] = useState(false); + const [result, setResult] = useState<{ + key: string; + preview?: GraphRepairPreviewResponse; + error?: string; + conflict?: boolean; + } | null>(null); + const key = JSON.stringify([ + persistence.address, + persistence.revision, + persistence.contentSha256, + persistence.status, + start, + end, + ]); + const current = result?.key === key ? result : null; + const preview = current?.preview; + const validDates = + /^\d{4}-\d{2}-\d{2}$/.test(start) && /^\d{4}-\d{2}-\d{2}$/.test(end) && start < end; + const selectedEnvironment = + preview?.environments.length === 1 ? preview.environments[0] : environment; + async function previewDates(): Promise { + if ( + !canPreview || + !validDates || + persistence.status !== "clean" || + !persistence.address || + !persistence.revision || + pending + ) + return; + setPending(true); + setResult(null); + setEnvironment(""); + try { + const next = await client.previewRepair(persistence.address, persistence.revision, { + start_date: start, + end_date: end, + }); + if (next.graph_content_sha256 !== persistence.contentSha256) + throw new HostedControlOperationError( + "This repair preview belongs to another graph revision. Reload before retrying.", + { conflict: true }, + ); + setResult({ key, preview: next }); + } catch (cause) { + setResult({ + key, + error: cause instanceof Error ? cause.message : "The repair preview is unavailable.", + conflict: cause instanceof HostedControlOperationError && cause.conflict, + }); + } finally { + setPending(false); + } + } + const canStart = Boolean( + preview && + controls.canStartRepair && + selectedEnvironment && + preview.environments.includes(selectedEnvironment), + ); + return ( +
+ Repair selected output dates +
+

Experimental output repair

+

+ Rebuild dates in the selected graph from raw data already stored in the warehouse. This + does not re-fetch source records or restore a historical snapshot. +

+ {persistence.status !== "clean" ? ( +

Save the graph before previewing a date repair.

+ ) : null} + {!canPreview ?

Date repair is unavailable for this connection or role.

: null} +
+
+ + setStart(event.target.value)} + /> +
+
+ + setEnd(event.target.value)} + /> +
+
+ {start && end && !validDates ? ( +

The end date must be later than the first date.

+ ) : null} + + {current?.error ? ( +

+ {current.error} +

+ ) : null} + {current?.conflict ? ( + + ) : null} + {preview ? ( +
+

{preview.summary}

+
    + {preview.outputs.map((output) => ( +
  • + {output.name}: {output.destination.dataset}.{output.destination.table} by{" "} + {output.partition_field} +
  • + ))} +
+

Rows and cost: unknown. Normal source progress is unchanged.

+
    + {(preview.limitations ?? []).map((limit) => ( +
  • {limit}
  • + ))} +
+ {preview.environments.length > 1 ? ( +
+ + +
+ ) : null} + {preview.environments.length === 0 ? ( +

No compatible execution environment is available.

+ ) : null} + +
+ ) : null} +
+
+ ); +} diff --git a/src/features/hosted-control/GraphChangeReview.tsx b/src/features/hosted-control/GraphChangeReview.tsx new file mode 100644 index 0000000..5e2f290 --- /dev/null +++ b/src/features/hosted-control/GraphChangeReview.tsx @@ -0,0 +1,71 @@ +import type { GraphChangePreviewResponse } from "@/lib/dander-contracts"; + +/** Display Dander's write effects, including unchanged outputs that a full run still writes. */ +export function GraphChangeReview({ + preview, +}: { + preview: GraphChangePreviewResponse; +}): React.JSX.Element { + return ( +
+

+ {preview.node_changes.length} node changes · {preview.connection_changes.length} connection + changes · {preview.affected_outputs.length} affected outputs +

+

+ A full run writes all {preview.run_output_ids.length} configured outputs. Saving alone does + not change warehouse data. +

+ {preview.outputs.length > 0 ? ( +
    + {preview.outputs.map((output) => ( +
  • + {output.name} + {output.affected ? " · Changed" : " · Unchanged"} +

    {output.effect}

    + {output.after?.writer?.destination ? ( +

    + Destination:{" "} + {[ + output.after.writer.destination.project, + output.after.writer.destination.dataset, + output.after.writer.destination.table, + ] + .filter(Boolean) + .join(".")} +

    + ) : null} +
  • + ))} +
+ ) : ( +

No warehouse outputs are configured.

+ )} +

+ Rows and cost: unknown. {preview.estimates?.explanation} +

+
+ Change details and limits +
    + {preview.node_changes.map((node) => ( +
  • + {node.name}: {node.change} + {(node.changed_properties ?? []).length + ? ` (${(node.changed_properties ?? []).join(", ")})` + : ""} +
  • + ))} + {preview.graph_properties_changed.length ? ( +
  • Graph settings: {preview.graph_properties_changed.join(", ")}
  • + ) : null} + {(preview.limitations ?? []).map((text) => ( +
  • {text}
  • + ))} +
+
+
+ ); +} diff --git a/src/features/hosted-control/HostedRunControlsBar.tsx b/src/features/hosted-control/HostedRunControlsBar.tsx index feff974..47e6edf 100644 --- a/src/features/hosted-control/HostedRunControlsBar.tsx +++ b/src/features/hosted-control/HostedRunControlsBar.tsx @@ -9,23 +9,27 @@ export function HostedRunControlsBar({ capabilities, controls, onReload, + advanced = false, }: { capabilities: CapabilitiesResponse; controls: HostedRunControls; onReload(): Promise; + advanced?: boolean; }) { return (
Hosted runs - + {!advanced ? ( + + ) : null} + ) : review.canSave ? ( + + ) : review.reviewedSaved ? ( + + ) : ( + + )} +
+ {!persistence.attached ? ( +

+ Open a saved graph, or configure a local draft on the canvas and create it in your + project. Source connections and execution environments are configured in Dander. +

+ ) : ( + <> +
+ Configure: + {[...inputs, ...outputs].map((node) => ( + + ))} + {!inputs.length || !outputs.length ? ( + + Add a source and a write output from the canvas palette. + + ) : null} +
+ {!review.preview ? ( +

+ Set up sources, transformations and outputs on the canvas, then preview what your + changes would write. +

+ ) : ( + + )} + {review.reviewedSaved ? ( +

+ The saved graph matches this review. Running writes every configured output. +

+ ) : null} + {!has("graph.change-preview") ? ( +

Change previews are unavailable for this connection or role.

+ ) : null} + {review.reviewedSaved && !has("run.start") ? ( +

An operator can run this reviewed graph.

+ ) : null} + {review.preview ? ( + + ) : null} + + )} + {review.error || persistence.error || runs.error ? ( +

+ {review.error ?? persistence.error ?? runs.error} +

+ ) : null} + {review.conflict || persistence.status === "conflict" || runs.conflict ? ( + + ) : null} + selectNode(outputs[0].id) : undefined + } + /> + {persistence.attached ? ( + + ) : null} +
+ + Advanced validation, deployment and run controls + + + +
+ + ); +} diff --git a/src/features/hosted-control/RunOutcome.tsx b/src/features/hosted-control/RunOutcome.tsx new file mode 100644 index 0000000..9a49c4c --- /dev/null +++ b/src/features/hosted-control/RunOutcome.tsx @@ -0,0 +1,132 @@ +"use client"; + +import { useEffect, useState } from "react"; +import { Button } from "@/components/ui/button"; +import type { HostedControlApiClient } from "@/features/hosted-control/control-api"; +import type { HostedRunControls } from "@/features/hosted-control/useHostedRunControls"; +import type { RunExplanationResponse } from "@/lib/dander-contracts"; + +/** Render recorded outcomes without inferring success, row changes, or a diagnosis from missing data. */ +export function RunOutcome({ + client, + controls, + canExplain, + onInspectOutputs, +}: { + client: Pick; + controls: HostedRunControls; + canExplain: boolean; + onInspectOutputs?: () => void; +}): React.JSX.Element | null { + const run = controls.run; + const key = JSON.stringify(run); + const runId = run?.run_id; + const [result, setResult] = useState<{ + key: string; + explanation?: RunExplanationResponse; + error?: string; + } | null>(null); + useEffect(() => { + if (!runId || !canExplain) return; + let active = true; + void client + .explainRun(runId) + .then((explanation) => { + if (active) setResult({ key, explanation }); + }) + .catch((cause: unknown) => { + if (active) + setResult({ + key, + error: cause instanceof Error ? cause.message : "The run explanation is unavailable.", + }); + }); + return () => { + active = false; + }; + }, [client, canExplain, runId, key]); + if (!run) return null; + const current = result?.key === key ? result : null; + const explanation = current?.explanation; + const measured = Boolean(run.result_schema) && explanation?.results_available !== false; + const next = explanation?.next_action; + const action = + next?.kind === "logs" && controls.canLoadLogs + ? controls.loadLogs + : next?.kind === "replay" && controls.canReplay + ? controls.replay + : next?.kind === "cancel" && controls.canCancel + ? controls.cancel + : next?.kind === "refresh" + ? controls.refresh + : next?.kind === "inspect_outputs" + ? onInspectOutputs + : undefined; + return ( +
+

{explanation?.summary ?? `Run ${run.state}`}

+ {controls.origin ? ( +

+ {controls.origin.address.project} / {controls.origin.address.graph} +

+ ) : null} + {run.repair_window ? ( +

+ Output repair: {run.repair_window.start_date} through {run.repair_window.end_date} (end + excluded, UTC). +

+ ) : null} +

+ Extracted: {measured ? (run.extracted ?? "Unknown") : "Unknown"} · Affected:{" "} + {measured ? (run.affected ?? "Unknown") : "Unknown"} · Models:{" "} + {measured ? (run.models ?? "Unknown") : "Unknown"} +

+ {explanation ? ( + <> +
    + {(explanation.details ?? []).map((detail) => ( +
  • {detail}
  • + ))} +
+ {next ? ( +
+

{next.reason}

+ {action ? ( + + ) : ( +

{next.label}

+ )} +
+ ) : null} +
+ What these results mean +
    + {(explanation.caveats ?? []).map((caveat) => ( +
  • {caveat}
  • + ))} +
+
+ + ) : ( +

+ {current?.error ?? + (canExplain + ? "Loading the recorded outcome…" + : "Run explanations are unavailable for this connection.")} +

+ )} + {run.failure_summary ?

{run.failure_summary}

: null} + {controls.pollingPaused ? ( + + ) : null} +
+ ); +} diff --git a/src/features/hosted-control/control-api.test.ts b/src/features/hosted-control/control-api.test.ts index 1f6c114..58f0a40 100644 --- a/src/features/hosted-control/control-api.test.ts +++ b/src/features/hosted-control/control-api.test.ts @@ -5,6 +5,10 @@ import mutationFixture from "@/generated/dander-contracts/bundle/fixtures/mutati import previewFixture from "@/generated/dander-contracts/bundle/fixtures/deployment-preview.json"; import runFixture from "@/generated/dander-contracts/bundle/fixtures/run-status.json"; import validationFixture from "@/generated/dander-contracts/bundle/fixtures/graph-validation.json"; +import changeFixture from "@/generated/dander-contracts/bundle/fixtures/graph-change-preview.json"; +import repairFixture from "@/generated/dander-contracts/bundle/fixtures/graph-repair-preview.json"; +import explanationFixture from "@/generated/dander-contracts/bundle/fixtures/run-explanation.json"; +import { EXAMPLE_GRAPH } from "@/lib/pipeline-graph/__fixtures__/example-graph"; import { HostedControlApiClient, HostedControlOperationError, @@ -42,6 +46,50 @@ function errorResponse(status: number, code: string): Response { } describe("HostedControlApiClient", () => { + it("previews an unsaved candidate and correlates explanations without starting work", async () => { + const request = vi + .fn() + .mockResolvedValueOnce(Response.json(changeFixture)) + .mockResolvedValueOnce(Response.json(explanationFixture)); + const client = new HostedControlApiClient(request); + await expect(client.previewChanges(ADDRESS, REVISION, EXAMPLE_GRAPH)).resolves.toEqual( + changeFixture, + ); + expect(request.mock.calls[0][0]).toMatch(/\/change-preview$/); + expect(request.mock.calls[0][1].headers["If-Match"]).toBe(REVISION); + expect(JSON.parse(request.mock.calls[0][1].body)).toEqual(EXAMPLE_GRAPH); + await expect(client.explainRun(explanationFixture.run_id)).resolves.toEqual(explanationFixture); + request.mockResolvedValueOnce(Response.json(explanationFixture)); + await expect(client.explainRun("another-run")).rejects.toThrow(/cannot safely display/); + }); + + it("keeps ambiguous repair retries bound to the same dates, revision and environment", async () => { + const window = { start_date: "2026-09-01", end_date: "2026-09-03" }; + const request = vi + .fn() + .mockResolvedValueOnce(Response.json(repairFixture)) + .mockRejectedValueOnce(new TypeError("connection lost")) + .mockResolvedValueOnce( + Response.json({ ...runFixture, repair_window: window }, { status: 202 }), + ); + const client = new HostedControlApiClient(request); + await expect(client.previewRepair(ADDRESS, REVISION, window)).resolves.toEqual(repairFixture); + await expect(client.startRepair(ADDRESS, REVISION, window, "gcp")).rejects.toThrow(); + await client.startRepair(ADDRESS, REVISION, window, "gcp"); + expect(request.mock.calls[1]).toEqual(request.mock.calls[2]); + expect(request.mock.calls[2][0]).toMatch(/\/repairs\?environment=gcp$/); + expect(request.mock.calls[2][1].headers["If-Match"]).toBe(REVISION); + expect(JSON.parse(request.mock.calls[2][1].body)).toEqual(window); + request.mockResolvedValueOnce( + Response.json({ ...runFixture, repair_window: window }, { status: 202 }), + ); + await expect( + client.startRepair(ADDRESS, REVISION, { ...window, end_date: "2026-09-04" }, "gcp"), + ).rejects.toMatchObject({ ambiguous: true }); + expect(request.mock.calls[3][1].headers["Idempotency-Key"]).not.toBe( + request.mock.calls[2][1].headers["Idempotency-Key"], + ); + }); it("requires compatible authenticated capabilities before hosted use", async () => { const request = vi.fn(async () => Response.json(capabilities())); const client = new HostedControlApiClient(request); diff --git a/src/features/hosted-control/control-api.ts b/src/features/hosted-control/control-api.ts index 7870c0a..ca6387f 100644 --- a/src/features/hosted-control/control-api.ts +++ b/src/features/hosted-control/control-api.ts @@ -3,6 +3,10 @@ import { ApiErrorEnvelopeSchema, DeploymentPreviewResponseSchema, GraphValidationResponseSchema, + GraphChangePreviewResponseSchema, + GraphRepairPreviewResponseSchema, + GraphRepairWindowSchema, + RunExplanationResponseSchema, IncompatibleDanderContractError, LogPageResponseSchema, MutationResultSchema, @@ -11,10 +15,15 @@ import { type CapabilitiesResponse, type DeploymentPreviewResponse, type GraphValidationResponse, + type GraphChangePreviewResponse, + type GraphRepairPreviewResponse, + type GraphRepairWindow, + type RunExplanationResponse, type LogPageResponse, type MutationResult, type RunStatusResponse, } from "@/lib/dander-contracts"; +import { PipelineGraphSchema, type PipelineGraph } from "@/lib/pipeline-graph"; import type { GraphAddress } from "@/lib/persistence/graph-persistence"; const MAX_CAPABILITIES_BYTES = 128 * 1024; @@ -151,6 +160,116 @@ export class HostedControlApiClient { return run; } + /** Compare the unsaved document without saving it or submitting any warehouse work. */ + async previewChanges( + address: GraphAddress, + revision: string, + document: PipelineGraph, + ): Promise { + const body = PipelineGraphSchema.parse(document); + const response = await this.request(`${graphPath(address)}/change-preview`, { + method: "POST", + headers: { + Accept: "application/json", + "Content-Type": "application/json", + "If-Match": revision, + }, + body: JSON.stringify(body), + }); + if (response.status !== 200) + throw await operationError(response, "Dander could not preview these changes."); + const parsed = GraphChangePreviewResponseSchema.safeParse( + await readBoundedJson(response, MAX_PREVIEW_BYTES), + ); + if (!parsed.success) throw incompatibleResponse("graph change preview"); + return parsed.data; + } + + /** Explain only the server's recorded evidence for this exact run. */ + async explainRun(runId: string): Promise { + const response = await this.request(`/v1/runs/${encodeURIComponent(runId)}/explanation`, { + method: "GET", + headers: { Accept: "application/json" }, + }); + if (response.status !== 200) + throw await operationError(response, "Dander could not explain this run."); + const parsed = RunExplanationResponseSchema.safeParse( + await readBoundedJson(response, MAX_RUN_STATUS_BYTES), + ); + if (!parsed.success || parsed.data.run_id !== runId) + throw incompatibleResponse("run explanation"); + return parsed.data; + } + + /** Eligibility and write scope come from Dander; preview never launches a repair. */ + async previewRepair( + address: GraphAddress, + revision: string, + window: GraphRepairWindow, + ): Promise { + const body = GraphRepairWindowSchema.parse(window); + const response = await this.request(`${graphPath(address)}/repair-preview`, { + method: "POST", + headers: { + Accept: "application/json", + "Content-Type": "application/json", + "If-Match": revision, + }, + body: JSON.stringify(body), + }); + if (response.status !== 200) + throw await operationError(response, "Dander could not preview this repair."); + const parsed = GraphRepairPreviewResponseSchema.safeParse( + await readBoundedJson(response, MAX_PREVIEW_BYTES), + ); + if (!parsed.success || !sameWindow(parsed.data.window, body)) + throw incompatibleResponse("date repair preview"); + return parsed.data; + } + + /** Lost responses retain the key for this exact graph revision, dates and environment. */ + async startRepair( + address: GraphAddress, + revision: string, + window: GraphRepairWindow, + environment: string, + ): Promise { + const body = GraphRepairWindowSchema.parse(window); + const scope = `repair:${addressKey(address)}`; + const mutation = this.mutationFor( + scope, + JSON.stringify([ + "repair", + address.project, + address.graph, + revision, + body.start_date, + body.end_date, + environment, + ]), + ); + const query = new URLSearchParams({ environment }); + const response = await this.request(`${graphPath(address)}/repairs?${query.toString()}`, { + method: "POST", + headers: { + Accept: "application/json", + "Content-Type": "application/json", + "If-Match": revision, + "Idempotency-Key": mutation.idempotencyKey, + }, + body: JSON.stringify(body), + }); + if (response.status !== 202) { + this.clearDefinitiveFailure(scope, response.status); + throw await operationError(response, "Dander could not start this repair."); + } + const run = await readRunStatus(response, "repair start result", true); + if (!run.repair_window || !sameWindow(run.repair_window, body)) + throw ambiguousMutationResponse("repair result for a different date window"); + this.pendingMutations.delete(scope); + return run; + } + async getRun(runId: string): Promise { const response = await this.request(`/v1/runs/${encodeURIComponent(runId)}`, { method: "GET", @@ -250,6 +369,10 @@ export class HostedControlApiClient { } } +function sameWindow(left: GraphRepairWindow, right: GraphRepairWindow): boolean { + return left.start_date === right.start_date && left.end_date === right.end_date; +} + function graphPath(address: GraphAddress): string { return `/v1/projects/${encodeURIComponent(address.project)}/graphs/${encodeURIComponent(address.graph)}`; } diff --git a/src/features/hosted-control/journey.test.tsx b/src/features/hosted-control/journey.test.tsx new file mode 100644 index 0000000..92fdb08 --- /dev/null +++ b/src/features/hosted-control/journey.test.tsx @@ -0,0 +1,310 @@ +import { act, fireEvent, render, renderHook, screen, waitFor } from "@testing-library/react"; +import { beforeEach, describe, expect, it, vi } from "vitest"; +import changeFixture from "@/generated/dander-contracts/bundle/fixtures/graph-change-preview.json"; +import repairFixture from "@/generated/dander-contracts/bundle/fixtures/graph-repair-preview.json"; +import capabilitiesFixture from "@/generated/dander-contracts/bundle/fixtures/capabilities.json"; +import explanationFixture from "@/generated/dander-contracts/bundle/fixtures/run-explanation.json"; +import { + CapabilitiesResponseSchema, + GraphChangePreviewResponseSchema, + GraphRepairPreviewResponseSchema, + RunExplanationResponseSchema, +} from "@/lib/dander-contracts"; +import { useGraphChangePreview } from "@/features/hosted-control/useGraphChangePreview"; +import { DateRepairPanel } from "@/features/hosted-control/DateRepairPanel"; +import { GraphChangeReview } from "@/features/hosted-control/GraphChangeReview"; +import { RunOutcome } from "@/features/hosted-control/RunOutcome"; +import type { HostedRunControls } from "@/features/hosted-control/useHostedRunControls"; +import type { GraphPersistenceControls } from "@/features/graph-io/useGraphPersistence"; +import { useGraphStore } from "@/lib/graph-store"; + +const preview = GraphChangePreviewResponseSchema.parse(changeFixture); +const repair = GraphRepairPreviewResponseSchema.parse(repairFixture); +const capabilities = CapabilitiesResponseSchema.parse({ + ...capabilitiesFixture, + operations: [ + "graph.read", + "graph.edit", + "graph.change-preview", + "graph.repair-preview", + "run.read", + "run.start", + "run.repair", + "run.explain", + ], +}); +function persistence(overrides: Partial = {}): GraphPersistenceControls { + return { + status: "dirty", + error: null, + revision: '"v1"', + address: { project: "demo", graph: "pipeline" }, + contentSha256: preview.baseline_content_sha256, + attached: true, + managed: true, + projects: [], + graphs: [], + nextCursor: null, + browsing: false, + browseError: null, + loadProjects: vi.fn(async () => []), + loadGraphs: vi.fn(async () => undefined), + create: vi.fn(async () => undefined), + open: vi.fn(async () => undefined), + reload: vi.fn(async () => undefined), + save: vi.fn(async () => undefined), + delete: vi.fn(async () => undefined), + detach: vi.fn(), + ...overrides, + }; +} +function runs(overrides: Partial = {}): HostedRunControls { + return { + pending: null, + logsPending: false, + pollingPaused: false, + error: null, + conflict: false, + acknowledgement: null, + run: null, + origin: null, + logs: null, + polling: false, + canStart: true, + canStartRepair: true, + canCancel: false, + canReplay: false, + canLoadLogs: false, + start: vi.fn(async () => undefined), + cancel: vi.fn(async () => undefined), + replay: vi.fn(async () => undefined), + loadLogs: vi.fn(async () => undefined), + refresh: vi.fn(async () => undefined), + ...overrides, + }; +} +beforeEach(() => { + useGraphStore.getState().setGraph([], [], "draft"); +}); + +describe("reviewed graph identity", () => { + it("requires the reviewed candidate's saved hash and invalidates later edits", async () => { + const saved = persistence(); + const client = { previewChanges: vi.fn(async () => preview) }; + const { result, rerender } = renderHook( + ({ state }) => useGraphChangePreview({ client, persistence: state, capabilities }), + { initialProps: { state: saved } }, + ); + await act(async () => result.current.previewChanges()); + expect(result.current.canSave).toBe(true); + expect(result.current.reviewedSaved).toBe(false); + await act(async () => result.current.saveReviewed()); + expect(saved.save).toHaveBeenCalledOnce(); + rerender({ + state: { + ...saved, + revision: '"v2"', + contentSha256: preview.candidate_content_sha256, + status: "clean", + }, + }); + expect(result.current.reviewedSaved).toBe(true); + act(() => useGraphStore.getState().setGraph([], [], "new edit")); + expect(result.current.isReviewedNow()).toBe(false); + rerender({ + state: { + ...saved, + revision: '"v2"', + contentSha256: preview.candidate_content_sha256, + status: "dirty", + }, + }); + expect(result.current.preview).toBeNull(); + expect(result.current.reviewedSaved).toBe(false); + }); + + it("discards a preview arriving after the draft changes, and a wrong baseline", async () => { + let resolve!: (value: typeof preview) => void; + const client = { + previewChanges: vi.fn( + () => + new Promise((done) => { + resolve = done; + }), + ), + }; + const { result } = renderHook(() => + useGraphChangePreview({ client, persistence: persistence(), capabilities }), + ); + let request!: Promise; + act(() => { + request = result.current.previewChanges(); + }); + act(() => useGraphStore.getState().setGraph([], [], "edited while waiting")); + await act(async () => { + resolve(preview); + await request; + }); + expect(result.current.preview).toBeNull(); + client.previewChanges.mockResolvedValueOnce({ + ...preview, + baseline_content_sha256: "f".repeat(64), + }); + await act(async () => result.current.previewChanges()); + expect(result.current.error).toMatch(/different saved graph/); + }); +}); + +describe("date repair", () => { + it("submits exactly the reviewed window and invalidates it after a date edit", async () => { + const client = { previewRepair: vi.fn(async () => repair) }; + const controls = runs(); + render( + , + ); + fireEvent.click(screen.getByText("Repair selected output dates")); + fireEvent.change(screen.getByLabelText(/First date/), { target: { value: "2026-09-01" } }); + fireEvent.change(screen.getByLabelText(/End date/), { target: { value: "2026-09-03" } }); + fireEvent.click(screen.getByRole("button", { name: "Preview date repair" })); + const start = await screen.findByRole("button", { name: "Start reviewed repair" }); + fireEvent.click(start); + expect(controls.start).toHaveBeenCalledWith({ window: repair.window, environment: "gcp" }); + fireEvent.change(screen.getByLabelText(/End date/), { target: { value: "2026-09-04" } }); + expect(screen.queryByRole("button", { name: "Start reviewed repair" })).not.toBeInTheDocument(); + expect(controls.start).toHaveBeenCalledOnce(); + }); + + it("requires an advertised environment and never offers repair for an unsaved graph", async () => { + const client = { previewRepair: vi.fn(async () => ({ ...repair, environments: [] })) }; + const props = { + client, + persistence: persistence({ status: "clean", contentSha256: repair.graph_content_sha256 }), + controls: runs(), + canPreview: true, + }; + const { rerender } = render(); + fireEvent.click(screen.getByText("Repair selected output dates")); + fireEvent.change(screen.getByLabelText(/First date/), { target: { value: "2026-09-01" } }); + fireEvent.change(screen.getByLabelText(/End date/), { target: { value: "2026-09-03" } }); + fireEvent.click(screen.getByRole("button", { name: "Preview date repair" })); + expect(await screen.findByRole("button", { name: "Start reviewed repair" })).toBeDisabled(); + rerender( + , + ); + expect(screen.queryByRole("button", { name: "Start reviewed repair" })).not.toBeInTheDocument(); + expect(screen.getByRole("button", { name: "Preview date repair" })).toBeDisabled(); + }); +}); + +it("shows unknown measurements and the real explanation instead of invented zeros", async () => { + const explanation = RunExplanationResponseSchema.parse(explanationFixture); + const client = { explainRun: vi.fn(async () => explanation) }; + render( + , + ); + expect(screen.getByText(/Extracted: Unknown · Affected: Unknown/)).toBeInTheDocument(); + await waitFor(() => expect(screen.getByText(explanation.summary)).toBeInTheDocument()); + expect(client.explainRun).toHaveBeenCalledWith(explanation.run_id); +}); + +it("keeps server-default counters unknown when no result document was recorded", async () => { + const explanation = { + ...RunExplanationResponseSchema.parse(explanationFixture), + results_available: false, + }; + render( + explanation) }} + controls={runs({ + run: { + run_id: explanation.run_id, + state: "succeeded", + extracted: 0, + affected: 0, + models: 0, + result_schema: null, + }, + })} + canExplain + />, + ); + await waitFor(() => expect(screen.getByText(explanation.summary)).toBeInTheDocument()); + expect( + screen.getByText(/Extracted: Unknown · Affected: Unknown · Models: Unknown/), + ).toBeInTheDocument(); +}); + +it("discards an explanation that arrives after the recorded run status changes", async () => { + const base = RunExplanationResponseSchema.parse(explanationFixture); + let finishOld!: (value: typeof base) => void; + let finishNew!: (value: typeof base) => void; + const client = { + explainRun: vi + .fn() + .mockImplementationOnce( + () => + new Promise((resolve) => { + finishOld = resolve; + }), + ) + .mockImplementationOnce( + () => + new Promise((resolve) => { + finishNew = resolve; + }), + ), + }; + const { rerender } = render( + , + ); + rerender( + , + ); + await act(async () => + finishOld({ ...base, state: "running", summary: "Old running explanation" }), + ); + expect(screen.queryByText("Old running explanation")).not.toBeInTheDocument(); + expect(screen.getByText("Run succeeded")).toBeInTheDocument(); + await act(async () => + finishNew({ ...base, state: "succeeded", summary: "Current completed explanation" }), + ); + expect(screen.getByText("Current completed explanation")).toBeInTheDocument(); +}); + +it("shows every producer-reported output effect, including unchanged outputs a full run writes", () => { + render(); + expect( + screen.getByText( + `A full run writes all ${preview.run_output_ids.length} configured outputs. Saving alone does not change warehouse data.`, + ), + ).toBeInTheDocument(); + for (const output of preview.outputs) { + expect(screen.getByText(output.name)).toBeInTheDocument(); + expect(screen.getByText(output.effect)).toBeInTheDocument(); + } + expect(screen.getByText(/Rows and cost: unknown/)).toBeInTheDocument(); +}); diff --git a/src/features/hosted-control/useGraphChangePreview.ts b/src/features/hosted-control/useGraphChangePreview.ts new file mode 100644 index 0000000..dd5c2b4 --- /dev/null +++ b/src/features/hosted-control/useGraphChangePreview.ts @@ -0,0 +1,136 @@ +"use client"; + +import { useState } from "react"; +import type { GraphPersistenceControls } from "@/features/graph-io/useGraphPersistence"; +import { + HostedControlOperationError, + type HostedControlApiClient, +} from "@/features/hosted-control/control-api"; +import type { CapabilitiesResponse, GraphChangePreviewResponse } from "@/lib/dander-contracts"; +import { useGraphStore } from "@/lib/graph-store"; +import { canvasToGraph } from "@/lib/pipeline-graph"; + +type Review = { + address: string; + revision: string; + candidate: string; + preview: GraphChangePreviewResponse; +}; + +/** Preserve a review through its exact save; any subsequent edit requires a fresh preview. */ +export function useGraphChangePreview({ + client, + persistence, + capabilities, +}: { + client: Pick; + persistence: GraphPersistenceControls; + capabilities: CapabilitiesResponse; +}): { + preview: GraphChangePreviewResponse | null; + pending: boolean; + error: string | null; + conflict: boolean; + canPreview: boolean; + canSave: boolean; + reviewedSaved: boolean; + previewChanges(): Promise; + saveReviewed(): Promise; + isReviewedNow(): boolean; +} { + const nodes = useGraphStore((state) => state.nodes); + const edges = useGraphStore((state) => state.edges); + const name = useGraphStore((state) => state.graphName); + const trigger = useGraphStore((state) => state.graphTrigger); + const candidate = JSON.stringify(canvasToGraph(nodes, edges, name, trigger)); + const address = JSON.stringify(persistence.address); + const [review, setReview] = useState(null); + const [pending, setPending] = useState(false); + const [failure, setFailure] = useState<{ + candidate: string; + address: string; + message: string; + conflict: boolean; + } | null>(null); + const has = (operation: CapabilitiesResponse["operations"][number]): boolean => + capabilities.operations.includes(operation); + const busy = ["loading", "saving", "deleting", "conflict"].includes(persistence.status); + const savedMatches = + persistence.status === "clean" && + review?.preview.candidate_content_sha256 === persistence.contentSha256; + const currentReview = + review?.address === address && + review.candidate === candidate && + (savedMatches || review.revision === persistence.revision) + ? review + : null; + const currentFailure = + failure?.address === address && failure.candidate === candidate ? failure : null; + const canPreview = Boolean( + persistence.address && + persistence.revision && + persistence.contentSha256 && + !busy && + !pending && + has("graph.change-preview"), + ); + const canSave = Boolean( + currentReview && persistence.status === "dirty" && !pending && has("graph.edit"), + ); + + async function previewChanges(): Promise { + if (!canPreview || !persistence.address || !persistence.revision) return; + const captured = currentCandidate(); + setPending(true); + setFailure(null); + setReview(null); + try { + const preview = await client.previewChanges( + persistence.address, + persistence.revision, + JSON.parse(captured), + ); + if (preview.baseline_content_sha256 !== persistence.contentSha256) + throw new HostedControlOperationError( + "This preview belongs to a different saved graph. Reload and review again.", + { conflict: true }, + ); + setReview({ address, revision: persistence.revision, candidate: captured, preview }); + } catch (cause) { + setFailure({ + address, + candidate: captured, + message: cause instanceof Error ? cause.message : "The preview could not be loaded.", + conflict: cause instanceof HostedControlOperationError && cause.conflict, + }); + } finally { + setPending(false); + } + } + + async function saveReviewed(): Promise { + if (!canSave || !currentReview || currentCandidate() !== currentReview.candidate) return; + await persistence.save(); + } + + return { + preview: currentReview?.preview ?? null, + pending, + error: currentFailure?.message ?? null, + conflict: currentFailure?.conflict ?? false, + canPreview, + canSave, + reviewedSaved: Boolean(currentReview && savedMatches), + previewChanges, + saveReviewed, + isReviewedNow: () => + Boolean(currentReview && savedMatches && currentCandidate() === currentReview.candidate), + }; +} + +function currentCandidate(): string { + const state = useGraphStore.getState(); + return JSON.stringify( + canvasToGraph(state.nodes, state.edges, state.graphName, state.graphTrigger), + ); +} diff --git a/src/features/hosted-control/useHostedRunControls.test.tsx b/src/features/hosted-control/useHostedRunControls.test.tsx index 53d10d3..60c6eb3 100644 --- a/src/features/hosted-control/useHostedRunControls.test.tsx +++ b/src/features/hosted-control/useHostedRunControls.test.tsx @@ -64,6 +64,31 @@ afterEach(() => { }); describe("useHostedRunControls", () => { + it("uses the repair route for reviewed dates, then retains normal polling and cancellation", async () => { + vi.useFakeTimers(); + const window = { start_date: "2026-09-01", end_date: "2026-09-03" }; + const api = client({ + startRepair: vi.fn(async () => run("queued", { repair_window: window, can_cancel: true })), + getRun: vi.fn(async () => run("running", { repair_window: window, can_cancel: true })), + }); + const { result } = renderHook(() => + useHostedRunControls({ + client: api, + capabilities: { ...CAPABILITIES, operations: [...CAPABILITIES.operations, "run.repair"] }, + address: ADDRESS, + revision: REVISION, + graphIsClean: true, + }), + ); + await act(async () => result.current.start({ window, environment: "gcp" })); + expect(api.startRepair).toHaveBeenCalledWith(ADDRESS, REVISION, window, "gcp"); + expect(api.startRun).not.toHaveBeenCalled(); + expect(result.current.canStartRepair).toBe(false); + await act(async () => vi.advanceTimersByTimeAsync(2_000)); + expect(result.current.run?.repair_window).toEqual(window); + await act(async () => result.current.cancel()); + expect(api.cancelRun).toHaveBeenCalledWith("run-one"); + }); it("starts, polls every two seconds, loads one bounded page, and follows replay", async () => { vi.useFakeTimers(); const getRun = vi diff --git a/src/features/hosted-control/useHostedRunControls.ts b/src/features/hosted-control/useHostedRunControls.ts index 9666f4c..5ce48fc 100644 --- a/src/features/hosted-control/useHostedRunControls.ts +++ b/src/features/hosted-control/useHostedRunControls.ts @@ -9,6 +9,7 @@ import { import type { CapabilitiesResponse, LogPageResponse, + GraphRepairWindow, RunStatusResponse, } from "@/lib/dander-contracts"; import type { GraphAddress } from "@/lib/persistence/graph-persistence"; @@ -35,19 +36,22 @@ type RunView = { export type HostedRunControls = RunView & { polling: boolean; canStart: boolean; + canStartRepair: boolean; canCancel: boolean; canReplay: boolean; canLoadLogs: boolean; - start(): Promise; + start(repair?: { window: GraphRepairWindow; environment: string }): Promise; cancel(): Promise; replay(): Promise; loadLogs(): Promise; + refresh(): Promise; }; export type HostedRunClient = Pick< HostedControlApiClient, "startRun" | "getRun" | "logs" | "cancelRun" | "replayRun" ->; +> & + Partial>; const ACTIVE_STATES = new Set([ "queued", @@ -136,59 +140,65 @@ export function useHostedRunControls({ }; }, [client, pollIntervalMs, polling, view.run]); - const start = useCallback(async () => { - if ( - !client || - !address || - !revision || - !graphIsClean || - !has("run.start") || - !canReadRun || - view.pending !== null || - view.logsPending || - activeRun - ) { - setView((current) => ({ - ...current, - error: - "Open and save a hosted graph with run.start and run.read access before starting a run.", - })); - return; - } - const origin = { address, revision }; - setView((current) => ({ - ...current, - pending: "start", - error: null, - conflict: false, - acknowledgement: null, - })); - try { - const run = await client.startRun(address, revision); - setView({ - ...EMPTY_VIEW, - run, - origin, - }); - } catch (cause) { + const start = useCallback( + async (repair?: { window: GraphRepairWindow; environment: string }) => { + if ( + !client || + !address || + !revision || + !graphIsClean || + !(repair ? has("run.repair") && client.startRepair : has("run.start")) || + !canReadRun || + view.pending !== null || + view.logsPending || + activeRun + ) { + setView((current) => ({ + ...current, + error: repair + ? "Open and save a hosted graph with run.repair and run.read access before starting a repair." + : "Open and save a hosted graph with run.start and run.read access before starting a run.", + })); + return; + } + const origin = { address, revision }; setView((current) => ({ ...current, - pending: null, - error: operationMessage(cause, "Druff could not start this run."), - conflict: cause instanceof HostedControlOperationError && cause.conflict, + pending: "start", + error: null, + conflict: false, + acknowledgement: null, })); - } - }, [ - activeRun, - address, - canReadRun, - client, - graphIsClean, - has, - revision, - view.logsPending, - view.pending, - ]); + try { + const run = repair + ? await client.startRepair!(address, revision, repair.window, repair.environment) + : await client.startRun(address, revision); + setView({ + ...EMPTY_VIEW, + run, + origin, + }); + } catch (cause) { + setView((current) => ({ + ...current, + pending: null, + error: operationMessage(cause, "Druff could not start this run."), + conflict: cause instanceof HostedControlOperationError && cause.conflict, + })); + } + }, + [ + activeRun, + address, + canReadRun, + client, + graphIsClean, + has, + revision, + view.logsPending, + view.pending, + ], + ); const cancel = useCallback(async () => { const captured = view.run; @@ -318,9 +328,39 @@ export function useHostedRunControls({ } }, [client, has, logLimit, view.logsPending, view.pending, view.run]); + const refresh = useCallback(async () => { + if (!client || !view.run || !canReadRun || view.pending) return; + const runId = view.run.run_id; + try { + const run = await client.getRun(runId); + setView((current) => + current.run?.run_id === runId + ? { ...current, run, error: null, pollingPaused: false } + : current, + ); + } catch (cause) { + setView((current) => + current.run?.run_id === runId + ? { ...current, error: operationMessage(cause, "Druff could not refresh this run.") } + : current, + ); + } + }, [client, canReadRun, view.run, view.pending]); + return { ...view, polling, + canStartRepair: Boolean( + client?.startRepair && + address && + revision && + graphIsClean && + has("run.repair") && + canReadRun && + view.pending === null && + !view.logsPending && + !activeRun, + ), canStart: client !== null && address !== null && @@ -353,6 +393,7 @@ export function useHostedRunControls({ cancel, replay, loadLogs, + refresh, }; } diff --git a/src/generated/dander-contracts/bundle/fixtures/capabilities.json b/src/generated/dander-contracts/bundle/fixtures/capabilities.json index e13eea2..8426536 100644 --- a/src/generated/dander-contracts/bundle/fixtures/capabilities.json +++ b/src/generated/dander-contracts/bundle/fixtures/capabilities.json @@ -1 +1 @@ -{"api_version":"v1","compatibility":{"maximum_druff_contract":"1.x","minimum_druff_contract":"1.0.0"},"contract":{"id":"io.dander.control.contracts/v1","sha256":"0000000000000000000000000000000000000000000000000000000000000000"},"dander_version":"0.0.0","limits":{"max_graph_bytes":5242880,"max_log_records":500,"max_page_size":100},"operations":["graph.read","graph.edit","graph.validate","run.read"]} +{"api_version":"v1","compatibility":{"maximum_druff_contract":"1.x","minimum_druff_contract":"1.0.0"},"contract":{"id":"io.dander.control.contracts/v1","sha256":"0000000000000000000000000000000000000000000000000000000000000000"},"dander_version":"0.0.0","limits":{"max_graph_bytes":5242880,"max_log_records":500,"max_page_size":100},"operations":["graph.read","graph.edit","graph.validate","graph.change-preview","run.read","run.explain"]} diff --git a/src/generated/dander-contracts/bundle/fixtures/graph-change-preview.json b/src/generated/dander-contracts/bundle/fixtures/graph-change-preview.json new file mode 100644 index 0000000..84beba8 --- /dev/null +++ b/src/generated/dander-contracts/bundle/fixtures/graph-change-preview.json @@ -0,0 +1 @@ +{"affected_outputs":["target_incremental","target_replace","target_scd1","target_scd2","target_snapshot"],"baseline_content_sha256":"97cb66a56e300fbcba2ee316511bd1bc14ffe115903f6a4d61452e236e9a19a1","candidate_content_sha256":"8d4b78b016880a28a55d2f7f8949616e617bc141abc4637afd2bb4015f634f2a","connection_changes":[{"change":"added","source":"normalize_records","target":"target_incremental"},{"change":"added","source":"normalize_records","target":"target_replace"},{"change":"added","source":"normalize_records","target":"target_scd1"},{"change":"added","source":"normalize_records","target":"target_scd2"},{"change":"added","source":"normalize_records","target":"target_snapshot"},{"change":"added","source":"source_records","target":"normalize_records"},{"change":"added","source":"source_regions","target":"normalize_records"}],"estimates":{"cost_usd":null,"explanation":"Unknown: this preview reads graph definitions only, not source or warehouse data.","rows_written":null},"graph_properties_changed":["name","trigger"],"limitations":["Static impact within this graph only; external consumers are not inspected.","Affected outputs describe changed definitions, not a selection of outputs to execute. A full run writes every configured output, including unchanged outputs.","Declared write behavior is not proof that this graph can execute. Runtime validation and provider checks still apply; the current graph runtime supports replace targets.","Saving a graph does not write or delete warehouse data."],"node_changes":[{"affects_data":true,"change":"added","changed_properties":[],"name":"Normalize records","node_id":"normalize_records"},{"affects_data":true,"change":"added","changed_properties":[],"name":"Notify operator","node_id":"notify_operator"},{"affects_data":true,"change":"added","changed_properties":[],"name":"Records","node_id":"source_records"},{"affects_data":true,"change":"added","changed_properties":[],"name":"Regions","node_id":"source_regions"},{"affects_data":true,"change":"added","changed_properties":[],"name":"Target Incremental","node_id":"target_incremental"},{"affects_data":true,"change":"added","changed_properties":[],"name":"Target Replace","node_id":"target_replace"},{"affects_data":true,"change":"added","changed_properties":[],"name":"Target Scd1","node_id":"target_scd1"},{"affects_data":true,"change":"added","changed_properties":[],"name":"Target Scd2","node_id":"target_scd2"},{"affects_data":true,"change":"added","changed_properties":[],"name":"Target Snapshot","node_id":"target_snapshot"}],"outputs":[{"affected":true,"after":{"field_names":["id","updated_at"],"writer":{"clustering":[],"cursor_field":"updated_at","destination":{"business_key":["id"],"dataset":"analytics","project":null,"table":"target_incremental"},"max_batch_rows":10000,"partitioning":null,"schema_evolution":"strict","transport":"storage_write","write_mode":"incremental"}},"before":null,"effect":"New graph output. Declared next-run behavior: Writes incremental rows using the configured cursor and keys.","name":"Target Incremental","node_id":"target_incremental"},{"affected":true,"after":{"field_names":["id","updated_at"],"writer":{"clustering":[],"cursor_field":null,"destination":{"business_key":[],"dataset":"analytics","project":null,"table":"target_replace"},"max_batch_rows":10000,"partitioning":null,"schema_evolution":"strict","transport":"copy","write_mode":"replace"}},"before":null,"effect":"New graph output. Declared next-run behavior: Replaces all rows in the destination with this run's result.","name":"Target Replace","node_id":"target_replace"},{"affected":true,"after":{"field_names":["id","updated_at"],"writer":{"clustering":[],"cursor_field":null,"destination":{"business_key":["id"],"dataset":"analytics","project":null,"table":"target_scd1"},"max_batch_rows":10000,"partitioning":null,"schema_evolution":"strict","transport":"load_job","write_mode":"scd1"}},"before":null,"effect":"New graph output. Declared next-run behavior: Updates matching business keys and inserts new rows.","name":"Target Scd1","node_id":"target_scd1"},{"affected":true,"after":{"field_names":["id","updated_at"],"writer":{"clustering":[],"cursor_field":null,"destination":{"business_key":["id"],"dataset":"analytics","project":null,"table":"target_scd2"},"max_batch_rows":10000,"partitioning":null,"schema_evolution":"strict","transport":"copy","write_mode":"scd2"}},"before":null,"effect":"New graph output. Declared next-run behavior: Keeps row history and records new versions of changed business keys.","name":"Target Scd2","node_id":"target_scd2"},{"affected":true,"after":{"field_names":["id","updated_at"],"writer":{"clustering":[],"cursor_field":null,"destination":{"business_key":[],"dataset":"analytics","project":null,"table":"target_snapshot"},"max_batch_rows":10000,"partitioning":null,"schema_evolution":"strict","transport":"load_job","write_mode":"snapshot"}},"before":null,"effect":"New graph output. Declared next-run behavior: Writes a snapshot using the configured partitioning.","name":"Target Snapshot","node_id":"target_snapshot"}],"run_output_ids":["target_incremental","target_replace","target_scd1","target_scd2","target_snapshot"]} diff --git a/src/generated/dander-contracts/bundle/fixtures/graph-repair-preview.json b/src/generated/dander-contracts/bundle/fixtures/graph-repair-preview.json new file mode 100644 index 0000000..8434b4b --- /dev/null +++ b/src/generated/dander-contracts/bundle/fixtures/graph-repair-preview.json @@ -0,0 +1 @@ +{"environments":["gcp"],"estimated_cost_usd":null,"estimated_rows":null,"graph_content_sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","limitations":["Start date is included; end date is excluded. Timestamp fields use UTC calendar dates.","Source extraction and its normal saved progress are unchanged. This is not a historical snapshot.","Only selected output dates are published; computing them can scan data outside that range.","A record moving across the date boundary stops publication for that output. Choose a wider range or rebuild the full output.","Each output publishes atomically. Earlier successful outputs remain if a later output fails; repeating the same repair converges on the current raw data.","Execution requires a current repair-capable runtime with a BigQuery warehouse. Runtime validation and warehouse checks still apply."],"outputs":[{"business_key":["id"],"destination":{"business_key":["id"],"dataset":"analytics","project":null,"table":"daily_output"},"name":"Daily output","node_id":"daily_output","partition_field":"updated_at","partition_type":"TIMESTAMP"}],"source":"retained_raw","summary":"Rebuild the selected output dates from the raw data currently stored in your warehouse.","window":{"end_date":"2026-09-03","start_date":"2026-09-01"}} diff --git a/src/generated/dander-contracts/bundle/fixtures/graph-repair-window.json b/src/generated/dander-contracts/bundle/fixtures/graph-repair-window.json new file mode 100644 index 0000000..eb398ba --- /dev/null +++ b/src/generated/dander-contracts/bundle/fixtures/graph-repair-window.json @@ -0,0 +1 @@ +{"end_date":"2026-09-03","start_date":"2026-09-01"} diff --git a/src/generated/dander-contracts/bundle/fixtures/run-explanation.json b/src/generated/dander-contracts/bundle/fixtures/run-explanation.json new file mode 100644 index 0000000..92021aa --- /dev/null +++ b/src/generated/dander-contracts/bundle/fixtures/run-explanation.json @@ -0,0 +1 @@ +{"available_actions":["refresh","logs","replay","inspect_outputs"],"caveats":["Recorded counts describe this run; they are not a before/after data comparison.","Runtime telemetry has not been collected for this run.","Replay starts another execution; it does not undo prior writes or repair only a selected date range."],"details":["Recorded extraction: 2 rows from 1 endpoints.","Recorded output: 2 affected rows and 1 models.","Recorded validation and catalog: 1 assertions evaluated and 1 assets."],"next_action":{"kind":"inspect_outputs","label":"Review the pipeline outputs","reason":"Confirm that the recorded output matches the result you expected."},"results_available":true,"run_id":"run-synthetic","state":"succeeded","summary":"The run succeeded and its result measurements are available."} diff --git a/src/generated/dander-contracts/bundle/fixtures/run-status.json b/src/generated/dander-contracts/bundle/fixtures/run-status.json index 2c09b26..b9f2c37 100644 --- a/src/generated/dander-contracts/bundle/fixtures/run-status.json +++ b/src/generated/dander-contracts/bundle/fixtures/run-status.json @@ -1 +1 @@ -{"affected":2,"assertions":1,"assets":1,"can_cancel":false,"can_replay":true,"endpoints":1,"extracted":2,"failure_code":null,"failure_summary":null,"finished_at":"2026-08-13T12:01:00Z","logs_available":true,"models":1,"run_id":"run-synthetic","stage":"complete","started_at":"2026-08-13T12:00:00Z","state":"succeeded"} +{"affected":2,"assertions":1,"assets":1,"can_cancel":false,"can_replay":true,"endpoints":1,"extracted":2,"failure_code":null,"failure_summary":null,"finished_at":"2026-08-13T12:01:00Z","logs_available":true,"models":1,"result_schema":"io.dander.control.execution-result-summary/v1","run_id":"run-synthetic","skipped":false,"stage":"complete","started_at":"2026-08-13T12:00:00Z","state":"succeeded","telemetry":{"bytes_billed":0,"bytes_processed":128,"bytes_read":128,"bytes_written":128,"duration_ms":60000,"execution_duration_ms":100,"operation_count":2,"queue_duration_ms":0,"retry_count":0,"rows_affected":2,"rows_read":2,"rows_written":2,"spill_bytes":0}} diff --git a/src/generated/dander-contracts/bundle/manifest.json b/src/generated/dander-contracts/bundle/manifest.json index 2a083bd..465c79c 100644 --- a/src/generated/dander-contracts/bundle/manifest.json +++ b/src/generated/dander-contracts/bundle/manifest.json @@ -1 +1 @@ -{"bundle_id":"io.dander.control.contracts/v1","bundle_sha256":"695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3","files":[{"contract":"api-error","kind":"fixture","path":"fixtures/api-error.json","sha256":"ed11f73d577b895d9cb6c1167e696b95a30b8ffa2c2d784ff83b7c6346b6ca0d"},{"contract":"capabilities","kind":"fixture","path":"fixtures/capabilities.json","sha256":"7adeda8a3addfdc492d5cb196a71b5f75abaaf675e504584ae40e07e48b8f438"},{"contract":"connector-catalog","kind":"fixture","path":"fixtures/connector-catalog.json","sha256":"c5d8c023bebdc7f39d445bbf8e54f8b3c2f0a72f57aaff3e5c8334274843dc25"},{"contract":"control-bootstrap","kind":"fixture","path":"fixtures/control-bootstrap.json","sha256":"4dac4acea0153c63bf6fbefc6a2f25a4354c1f61f448af3330adf2d1a95d9c80"},{"contract":"deployment-preview","kind":"fixture","path":"fixtures/deployment-preview.json","sha256":"aa9703ab7e8e1ef91a1f8324798709b01bbc5580ba14e3b936fe882820fba539"},{"contract":"graph-create","kind":"fixture","path":"fixtures/graph-create.json","sha256":"c576c1e3109e9dbbdb3f9c81aec477e84639458dbfc2846e1f48f8f3331cc529"},{"contract":"graph-page","kind":"fixture","path":"fixtures/graph-page.json","sha256":"95c2133bb9b2c5aa18de13b73e91322450fcdbf958bee619b603276ac88ba816"},{"contract":"graph-resource","kind":"fixture","path":"fixtures/graph-resource.json","sha256":"68b523de7a34f8383f6d32e47587669091e1292dc93d5afe6b978c7b01dc811d"},{"contract":"graph-validation","kind":"fixture","path":"fixtures/graph-validation.json","sha256":"64a5f8a1f39bde3ef30f5401cf285a9de6091aad9771591b1817168e646dc3e0"},{"contract":"log-page","kind":"fixture","path":"fixtures/log-page.json","sha256":"481c46c6365cfdcaf184dacd53f59cb34e894ec9a11675e876bd220aa609d76c"},{"contract":"mutation-result","kind":"fixture","path":"fixtures/mutation-result.json","sha256":"aa0eb0a3e48f03102c1165aff9933e2be1c54f80a2e29bb67a0aa3bc1fae9898"},{"contract":"operation-catalog","kind":"fixture","path":"fixtures/operation-catalog.json","sha256":"adb73dac2061e1b00a85148cfaf810040aeafb32fb7fd670c077596853f05508"},{"contract":"pipeline-graph","kind":"fixture","path":"fixtures/pipeline-graph-alias-input.json","sha256":"de73bc8e172dfa8daba536fe14fef13a272dd61e8f1bcfef286fe043477ca451"},{"contract":"pipeline-graph","kind":"fixture","path":"fixtures/pipeline-graph.json","sha256":"65c6fa7b88221b1e9a1e51ec773fb9c374533d0ed54e2f2a5c8c7a1242b1b1bc"},{"contract":"plugin-catalog","kind":"fixture","path":"fixtures/plugin-catalog.json","sha256":"039cf19f5ce4c4d5b35e8b1801ff151cf0912b7f90792196dce76e2fce7726df"},{"contract":"project-list","kind":"fixture","path":"fixtures/project-list.json","sha256":"157e70424be88bfaf0429d66dd3a8103a4e402e3f9067685bfe78e2faadf56d3"},{"contract":"run-page","kind":"fixture","path":"fixtures/run-page.json","sha256":"cae943a95060651795160b980d8c25b99ff92440cf905b115b96282cf624fd87"},{"contract":"run-request","kind":"fixture","path":"fixtures/run-request.json","sha256":"36013392b347194d13be6747840c93edb9c8dbf19468a6e19032f26899824f71"},{"contract":"run-status","kind":"fixture","path":"fixtures/run-status.json","sha256":"a02114827482d551a6086b5223c89dd2c4bde281cba3f3dd015f85306199039c"},{"contract":"api-error","kind":"schema","path":"schemas/api-error.schema.json","sha256":"de86daa1616237146b0666f3c69bf7c22d5679595d756ca980becb69b1613164"},{"contract":"capabilities","kind":"schema","path":"schemas/capabilities.schema.json","sha256":"a9d85b8a6e5f73a425432f5f436e7809592889e72c71762c5c544151a1bf1217"},{"contract":"connector-catalog","kind":"schema","path":"schemas/connector-catalog.schema.json","sha256":"132f169721b81569c4934d03c34e1a276176b40a45711de61264bb4928420dc5"},{"contract":"control-bootstrap","kind":"schema","path":"schemas/control-bootstrap.schema.json","sha256":"013a30d4d4c6f417a898ce0c81fc00dcbfc138e76b79d49694d1af7a6f8b4096"},{"contract":"deployment-preview","kind":"schema","path":"schemas/deployment-preview.schema.json","sha256":"67449ad10f78b972ff3fbda98948f3679dcdecf908ae468fe8ddf843158dfe81"},{"contract":"graph-create","kind":"schema","path":"schemas/graph-create.schema.json","sha256":"15cefbe92bdc171916d0118bfa33c665ac39a409661b222861a6f72a23331b41"},{"contract":"graph-page","kind":"schema","path":"schemas/graph-page.schema.json","sha256":"204018767f05e10a110f7caa177312ffea1266cfbd7eb841ed8a8ff90fbe1e09"},{"contract":"graph-resource","kind":"schema","path":"schemas/graph-resource.schema.json","sha256":"dc3ad0085768407720c825c95a5ff7f1ea01e85f6377a8f32445e926a9e88c61"},{"contract":"graph-validation","kind":"schema","path":"schemas/graph-validation.schema.json","sha256":"e835cd4ed7f698420a643305116f46644d54c8514548b849e34c23d398123d54"},{"contract":"log-page","kind":"schema","path":"schemas/log-page.schema.json","sha256":"bdc4059aecaeb7e18c93b3173726b256119306137a0988ddf1673bb50d260bc6"},{"contract":"mutation-result","kind":"schema","path":"schemas/mutation-result.schema.json","sha256":"078ca417acce9d4cd61c89607e5174156e986f432055c07509b9282fe2f537b7"},{"contract":"operation-catalog","kind":"schema","path":"schemas/operation-catalog.schema.json","sha256":"3ed2d3fd7defc677f7841b4e252a31dffd739922829d572ba9d5a7a635fae000"},{"contract":"pipeline-graph","kind":"schema","path":"schemas/pipeline-graph.schema.json","sha256":"3c2aa99c1ab5a93f2c590c0634fd1b39b8d1e84c56fbe8e42e0ff3051ee40377"},{"contract":"plugin-catalog","kind":"schema","path":"schemas/plugin-catalog.schema.json","sha256":"d934e93c333123284d96e2c9fb19080c952c6e353a721207d36228347923eb83"},{"contract":"project-list","kind":"schema","path":"schemas/project-list.schema.json","sha256":"a61e8c0dff565792079c1954584d7424a90fad35de85745682492a60e8067243"},{"contract":"run-page","kind":"schema","path":"schemas/run-page.schema.json","sha256":"2bda42c862d542dfbf0fadfcbb4f05592c22e54b5137ec699fa13ec073d99b30"},{"contract":"run-request","kind":"schema","path":"schemas/run-request.schema.json","sha256":"0a8aa50cf4e82b573476e446e1c9eb6fba1482625abb300b719199ce68866eba"},{"contract":"run-status","kind":"schema","path":"schemas/run-status.schema.json","sha256":"a8f9a83cb6d0316039667d9318df76644bbbbffd260ee6b92dd4fdb487fd4fac"}],"json_schema_dialect":"https://json-schema.org/draft/2020-12/schema","reference_convention":"self-contained internal #/$defs references","schema":"io.dander.control.contracts-manifest/v1"} +{"bundle_id":"io.dander.control.contracts/v1","bundle_sha256":"a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279","files":[{"contract":"api-error","kind":"fixture","path":"fixtures/api-error.json","sha256":"ed11f73d577b895d9cb6c1167e696b95a30b8ffa2c2d784ff83b7c6346b6ca0d"},{"contract":"capabilities","kind":"fixture","path":"fixtures/capabilities.json","sha256":"91dff64c697c6a527c9e71f2b67e167eea434e19b28a884bce83e390ce94c7dd"},{"contract":"connector-catalog","kind":"fixture","path":"fixtures/connector-catalog.json","sha256":"c5d8c023bebdc7f39d445bbf8e54f8b3c2f0a72f57aaff3e5c8334274843dc25"},{"contract":"control-bootstrap","kind":"fixture","path":"fixtures/control-bootstrap.json","sha256":"4dac4acea0153c63bf6fbefc6a2f25a4354c1f61f448af3330adf2d1a95d9c80"},{"contract":"deployment-preview","kind":"fixture","path":"fixtures/deployment-preview.json","sha256":"aa9703ab7e8e1ef91a1f8324798709b01bbc5580ba14e3b936fe882820fba539"},{"contract":"graph-change-preview","kind":"fixture","path":"fixtures/graph-change-preview.json","sha256":"4c108460b9567164472b9f1cad035b23b0a07da31f2062a0de5cfe1f91b79333"},{"contract":"graph-create","kind":"fixture","path":"fixtures/graph-create.json","sha256":"c576c1e3109e9dbbdb3f9c81aec477e84639458dbfc2846e1f48f8f3331cc529"},{"contract":"graph-page","kind":"fixture","path":"fixtures/graph-page.json","sha256":"95c2133bb9b2c5aa18de13b73e91322450fcdbf958bee619b603276ac88ba816"},{"contract":"graph-repair-preview","kind":"fixture","path":"fixtures/graph-repair-preview.json","sha256":"1616eb1cc4944f5da6289e98084bd7744504a2892bdea17b77de91357d7dd536"},{"contract":"graph-repair-window","kind":"fixture","path":"fixtures/graph-repair-window.json","sha256":"2e31c98ace07994d1bed9d848cee474177bb42d723d2c18a5474098136bb3a9d"},{"contract":"graph-resource","kind":"fixture","path":"fixtures/graph-resource.json","sha256":"68b523de7a34f8383f6d32e47587669091e1292dc93d5afe6b978c7b01dc811d"},{"contract":"graph-validation","kind":"fixture","path":"fixtures/graph-validation.json","sha256":"64a5f8a1f39bde3ef30f5401cf285a9de6091aad9771591b1817168e646dc3e0"},{"contract":"log-page","kind":"fixture","path":"fixtures/log-page.json","sha256":"481c46c6365cfdcaf184dacd53f59cb34e894ec9a11675e876bd220aa609d76c"},{"contract":"mutation-result","kind":"fixture","path":"fixtures/mutation-result.json","sha256":"aa0eb0a3e48f03102c1165aff9933e2be1c54f80a2e29bb67a0aa3bc1fae9898"},{"contract":"operation-catalog","kind":"fixture","path":"fixtures/operation-catalog.json","sha256":"adb73dac2061e1b00a85148cfaf810040aeafb32fb7fd670c077596853f05508"},{"contract":"pipeline-graph","kind":"fixture","path":"fixtures/pipeline-graph-alias-input.json","sha256":"de73bc8e172dfa8daba536fe14fef13a272dd61e8f1bcfef286fe043477ca451"},{"contract":"pipeline-graph","kind":"fixture","path":"fixtures/pipeline-graph.json","sha256":"65c6fa7b88221b1e9a1e51ec773fb9c374533d0ed54e2f2a5c8c7a1242b1b1bc"},{"contract":"plugin-catalog","kind":"fixture","path":"fixtures/plugin-catalog.json","sha256":"039cf19f5ce4c4d5b35e8b1801ff151cf0912b7f90792196dce76e2fce7726df"},{"contract":"project-list","kind":"fixture","path":"fixtures/project-list.json","sha256":"157e70424be88bfaf0429d66dd3a8103a4e402e3f9067685bfe78e2faadf56d3"},{"contract":"run-explanation","kind":"fixture","path":"fixtures/run-explanation.json","sha256":"e0ccfd75142882f91fcc0e352b09c5ecf92193646c3a98107f56fa6482b15cd4"},{"contract":"run-page","kind":"fixture","path":"fixtures/run-page.json","sha256":"cae943a95060651795160b980d8c25b99ff92440cf905b115b96282cf624fd87"},{"contract":"run-request","kind":"fixture","path":"fixtures/run-request.json","sha256":"36013392b347194d13be6747840c93edb9c8dbf19468a6e19032f26899824f71"},{"contract":"run-status","kind":"fixture","path":"fixtures/run-status.json","sha256":"c2d76c2b9879b45d954027247da0849f216db44d8f449ea4a0c24443a8283556"},{"contract":"api-error","kind":"schema","path":"schemas/api-error.schema.json","sha256":"de86daa1616237146b0666f3c69bf7c22d5679595d756ca980becb69b1613164"},{"contract":"capabilities","kind":"schema","path":"schemas/capabilities.schema.json","sha256":"726c775f8b9c87b068ac57f42e011fede45a9af3d46feb9a56d80ab31d65308d"},{"contract":"connector-catalog","kind":"schema","path":"schemas/connector-catalog.schema.json","sha256":"132f169721b81569c4934d03c34e1a276176b40a45711de61264bb4928420dc5"},{"contract":"control-bootstrap","kind":"schema","path":"schemas/control-bootstrap.schema.json","sha256":"013a30d4d4c6f417a898ce0c81fc00dcbfc138e76b79d49694d1af7a6f8b4096"},{"contract":"deployment-preview","kind":"schema","path":"schemas/deployment-preview.schema.json","sha256":"67449ad10f78b972ff3fbda98948f3679dcdecf908ae468fe8ddf843158dfe81"},{"contract":"graph-change-preview","kind":"schema","path":"schemas/graph-change-preview.schema.json","sha256":"e45220e046d17c5b608da11e59bbeec6160f56f910b568bd15c8651465e585bf"},{"contract":"graph-create","kind":"schema","path":"schemas/graph-create.schema.json","sha256":"15cefbe92bdc171916d0118bfa33c665ac39a409661b222861a6f72a23331b41"},{"contract":"graph-page","kind":"schema","path":"schemas/graph-page.schema.json","sha256":"204018767f05e10a110f7caa177312ffea1266cfbd7eb841ed8a8ff90fbe1e09"},{"contract":"graph-repair-preview","kind":"schema","path":"schemas/graph-repair-preview.schema.json","sha256":"2c738cccf9c4e14ae5ad683ab590e9d9c682f630d497de796fd8c0f09bbf6ccf"},{"contract":"graph-repair-window","kind":"schema","path":"schemas/graph-repair-window.schema.json","sha256":"cf447ee4441b22db5e994e2ecf27469ad0c8d17a2cf31817142cee401827439b"},{"contract":"graph-resource","kind":"schema","path":"schemas/graph-resource.schema.json","sha256":"dc3ad0085768407720c825c95a5ff7f1ea01e85f6377a8f32445e926a9e88c61"},{"contract":"graph-validation","kind":"schema","path":"schemas/graph-validation.schema.json","sha256":"e835cd4ed7f698420a643305116f46644d54c8514548b849e34c23d398123d54"},{"contract":"log-page","kind":"schema","path":"schemas/log-page.schema.json","sha256":"bdc4059aecaeb7e18c93b3173726b256119306137a0988ddf1673bb50d260bc6"},{"contract":"mutation-result","kind":"schema","path":"schemas/mutation-result.schema.json","sha256":"078ca417acce9d4cd61c89607e5174156e986f432055c07509b9282fe2f537b7"},{"contract":"operation-catalog","kind":"schema","path":"schemas/operation-catalog.schema.json","sha256":"3ed2d3fd7defc677f7841b4e252a31dffd739922829d572ba9d5a7a635fae000"},{"contract":"pipeline-graph","kind":"schema","path":"schemas/pipeline-graph.schema.json","sha256":"3c2aa99c1ab5a93f2c590c0634fd1b39b8d1e84c56fbe8e42e0ff3051ee40377"},{"contract":"plugin-catalog","kind":"schema","path":"schemas/plugin-catalog.schema.json","sha256":"d934e93c333123284d96e2c9fb19080c952c6e353a721207d36228347923eb83"},{"contract":"project-list","kind":"schema","path":"schemas/project-list.schema.json","sha256":"a61e8c0dff565792079c1954584d7424a90fad35de85745682492a60e8067243"},{"contract":"run-explanation","kind":"schema","path":"schemas/run-explanation.schema.json","sha256":"e00ca3f82bfca14e77d61f00b14bc2c314820b680ff357b3c45e988eae6a8324"},{"contract":"run-page","kind":"schema","path":"schemas/run-page.schema.json","sha256":"b9caffd70b6f5fe6a14b6666e3934aa18d7934318e6db3c268c8d9598979d4fd"},{"contract":"run-request","kind":"schema","path":"schemas/run-request.schema.json","sha256":"0a8aa50cf4e82b573476e446e1c9eb6fba1482625abb300b719199ce68866eba"},{"contract":"run-status","kind":"schema","path":"schemas/run-status.schema.json","sha256":"e391062817d4f4153c341d17f99a8363dc7516c32eaf73785baf65f8231969bf"}],"json_schema_dialect":"https://json-schema.org/draft/2020-12/schema","reference_convention":"self-contained internal #/$defs references","schema":"io.dander.control.contracts-manifest/v1"} diff --git a/src/generated/dander-contracts/bundle/schemas/capabilities.schema.json b/src/generated/dander-contracts/bundle/schemas/capabilities.schema.json index 5b00d50..1745273 100644 --- a/src/generated/dander-contracts/bundle/schemas/capabilities.schema.json +++ b/src/generated/dander-contracts/bundle/schemas/capabilities.schema.json @@ -1 +1 @@ -{"$defs":{"CompatibilityRange":{"additionalProperties":false,"properties":{"maximum_druff_contract":{"title":"Maximum Druff Contract","type":"string"},"minimum_druff_contract":{"title":"Minimum Druff Contract","type":"string"}},"required":["minimum_druff_contract","maximum_druff_contract"],"title":"CompatibilityRange","type":"object"},"ContractIdentity":{"additionalProperties":false,"properties":{"id":{"const":"io.dander.control.contracts/v1","title":"Id","type":"string"},"sha256":{"pattern":"^[0-9a-f]{64}$","title":"Sha256","type":"string"}},"required":["id","sha256"],"title":"ContractIdentity","type":"object"},"ControlLimits":{"additionalProperties":false,"properties":{"max_graph_bytes":{"exclusiveMinimum":0,"title":"Max Graph Bytes","type":"integer"},"max_log_records":{"exclusiveMinimum":0,"title":"Max Log Records","type":"integer"},"max_page_size":{"exclusiveMinimum":0,"title":"Max Page Size","type":"integer"}},"required":["max_graph_bytes","max_page_size","max_log_records"],"title":"ControlLimits","type":"object"}},"$id":"urn:dander:control:contracts:v1:capabilities","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"api_version":{"const":"v1","default":"v1","title":"Api Version","type":"string"},"compatibility":{"$ref":"#/$defs/CompatibilityRange"},"contract":{"$ref":"#/$defs/ContractIdentity"},"dander_version":{"title":"Dander Version","type":"string"},"limits":{"$ref":"#/$defs/ControlLimits"},"operations":{"items":{"enum":["graph.read","graph.edit","graph.delete","graph.validate","deployment.preview","run.start","run.read","run.logs","run.cancel","run.replay"],"type":"string"},"title":"Operations","type":"array"}},"required":["dander_version","contract","compatibility","operations","limits"],"title":"CapabilitiesResponse","type":"object"} +{"$defs":{"CompatibilityRange":{"additionalProperties":false,"properties":{"maximum_druff_contract":{"title":"Maximum Druff Contract","type":"string"},"minimum_druff_contract":{"title":"Minimum Druff Contract","type":"string"}},"required":["minimum_druff_contract","maximum_druff_contract"],"title":"CompatibilityRange","type":"object"},"ContractIdentity":{"additionalProperties":false,"properties":{"id":{"const":"io.dander.control.contracts/v1","title":"Id","type":"string"},"sha256":{"pattern":"^[0-9a-f]{64}$","title":"Sha256","type":"string"}},"required":["id","sha256"],"title":"ContractIdentity","type":"object"},"ControlLimits":{"additionalProperties":false,"properties":{"max_graph_bytes":{"exclusiveMinimum":0,"title":"Max Graph Bytes","type":"integer"},"max_log_records":{"exclusiveMinimum":0,"title":"Max Log Records","type":"integer"},"max_page_size":{"exclusiveMinimum":0,"title":"Max Page Size","type":"integer"}},"required":["max_graph_bytes","max_page_size","max_log_records"],"title":"ControlLimits","type":"object"}},"$id":"urn:dander:control:contracts:v1:capabilities","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"api_version":{"const":"v1","default":"v1","title":"Api Version","type":"string"},"compatibility":{"$ref":"#/$defs/CompatibilityRange"},"contract":{"$ref":"#/$defs/ContractIdentity"},"dander_version":{"title":"Dander Version","type":"string"},"limits":{"$ref":"#/$defs/ControlLimits"},"operations":{"items":{"enum":["graph.read","graph.edit","graph.delete","graph.validate","graph.change-preview","graph.repair-preview","deployment.preview","run.start","run.read","run.explain","run.repair","run.logs","run.cancel","run.replay"],"type":"string"},"title":"Operations","type":"array"}},"required":["dander_version","contract","compatibility","operations","limits"],"title":"CapabilitiesResponse","type":"object"} diff --git a/src/generated/dander-contracts/bundle/schemas/graph-change-preview.schema.json b/src/generated/dander-contracts/bundle/schemas/graph-change-preview.schema.json new file mode 100644 index 0000000..d77ffa9 --- /dev/null +++ b/src/generated/dander-contracts/bundle/schemas/graph-change-preview.schema.json @@ -0,0 +1 @@ +{"$defs":{"DestinationDocument":{"additionalProperties":false,"properties":{"business_key":{"items":{"type":"string"},"title":"Business Key","type":"array"},"dataset":{"minLength":1,"title":"Dataset","type":"string"},"project":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Project"},"table":{"minLength":1,"title":"Table","type":"string"}},"required":["dataset","table"],"title":"DestinationDocument","type":"object"},"GraphChangeEstimates":{"additionalProperties":false,"properties":{"cost_usd":{"default":null,"title":"Cost Usd","type":"null"},"explanation":{"default":"Unknown: this preview reads graph definitions only, not source or warehouse data.","title":"Explanation","type":"string"},"rows_written":{"default":null,"title":"Rows Written","type":"null"}},"title":"GraphChangeEstimates","type":"object"},"GraphConnectionChange":{"additionalProperties":false,"properties":{"change":{"enum":["added","removed","modified"],"title":"Change","type":"string"},"source":{"title":"Source","type":"string"},"target":{"title":"Target","type":"string"}},"required":["source","target","change"],"title":"GraphConnectionChange","type":"object"},"GraphNodeChange":{"additionalProperties":false,"properties":{"affects_data":{"title":"Affects Data","type":"boolean"},"change":{"enum":["added","removed","modified","layout_only"],"title":"Change","type":"string"},"changed_properties":{"default":[],"items":{"type":"string"},"title":"Changed Properties","type":"array"},"name":{"title":"Name","type":"string"},"node_id":{"title":"Node Id","type":"string"}},"required":["node_id","name","change","affects_data"],"title":"GraphNodeChange","type":"object"},"GraphOutputImpact":{"additionalProperties":false,"properties":{"affected":{"title":"Affected","type":"boolean"},"after":{"anyOf":[{"$ref":"#/$defs/GraphOutputState"},{"type":"null"}]},"before":{"anyOf":[{"$ref":"#/$defs/GraphOutputState"},{"type":"null"}]},"effect":{"title":"Effect","type":"string"},"name":{"title":"Name","type":"string"},"node_id":{"title":"Node Id","type":"string"}},"required":["node_id","name","affected","before","after","effect"],"title":"GraphOutputImpact","type":"object"},"GraphOutputState":{"additionalProperties":false,"description":"Only declared output coordinates and field names, never arbitrary node configuration.","properties":{"field_names":{"items":{"type":"string"},"title":"Field Names","type":"array"},"writer":{"anyOf":[{"$ref":"#/$defs/WriterDocument"},{"type":"null"}]}},"required":["writer","field_names"],"title":"GraphOutputState","type":"object"},"PartitioningDocument":{"additionalProperties":false,"properties":{"field":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Field"},"granularity":{"$ref":"#/$defs/PartitioningType","default":"day"},"require_partition_filter":{"default":false,"title":"Require Partition Filter","type":"boolean"}},"title":"PartitioningDocument","type":"object"},"PartitioningType":{"description":"The closed set of time-unit partitioning granularities a `PartitioningSpec` may declare.\n\nA `StrEnum` (matching the `WriteMode`/`TransformationKind`/`JoinType` convention elsewhere in\n`dander.pipeline`), so it serializes to/from its plain string value stably in YAML and JSON;\nan out-of-set value fails validation with a clear `ValidationError`. Scope is deliberately\nlimited to BigQuery time-unit partitioning — integer-range partitioning is a deferred future\nmember (see `steering/02-engineering.md` on avoiding speculative generality).\n\nAttributes:\n HOUR: Hourly partitions.\n DAY: Daily partitions — the common case and BigQuery's default granularity.\n MONTH: Monthly partitions.\n YEAR: Yearly partitions.","enum":["hour","day","month","year"],"title":"PartitioningType","type":"string"},"SchemaEvolution":{"description":"How a writer handles declared columns absent from an existing target.","enum":["strict","additive"],"title":"SchemaEvolution","type":"string"},"WriteMode":{"description":"Supported load strategies.","enum":["scd1","scd2","snapshot","incremental","replace"],"title":"WriteMode","type":"string"},"WriterDocument":{"additionalProperties":false,"properties":{"clustering":{"items":{"type":"string"},"maxItems":4,"title":"Clustering","type":"array"},"cursor_field":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Cursor Field"},"destination":{"$ref":"#/$defs/DestinationDocument"},"max_batch_rows":{"default":10000,"exclusiveMinimum":0,"maximum":100000,"title":"Max Batch Rows","type":"integer"},"partitioning":{"anyOf":[{"$ref":"#/$defs/PartitioningDocument"},{"type":"null"}],"default":null},"schema_evolution":{"$ref":"#/$defs/SchemaEvolution","default":"strict"},"transport":{"default":"load_job","enum":["load_job","storage_write","copy"],"title":"Transport","type":"string"},"write_mode":{"$ref":"#/$defs/WriteMode"}},"required":["write_mode","destination"],"title":"WriterDocument","type":"object"}},"$id":"urn:dander:control:contracts:v1:graph-change-preview","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Static changes and potential downstream effects; a run still executes all outputs.","properties":{"affected_outputs":{"items":{"type":"string"},"title":"Affected Outputs","type":"array"},"baseline_content_sha256":{"pattern":"^[0-9a-f]{64}$","title":"Baseline Content Sha256","type":"string"},"candidate_content_sha256":{"pattern":"^[0-9a-f]{64}$","title":"Candidate Content Sha256","type":"string"},"connection_changes":{"items":{"$ref":"#/$defs/GraphConnectionChange"},"title":"Connection Changes","type":"array"},"estimates":{"$ref":"#/$defs/GraphChangeEstimates"},"graph_properties_changed":{"items":{"type":"string"},"title":"Graph Properties Changed","type":"array"},"limitations":{"default":["Static impact within this graph only; external consumers are not inspected.","Affected outputs describe changed definitions, not a selection of outputs to execute. A full run writes every configured output, including unchanged outputs.","Declared write behavior is not proof that this graph can execute. Runtime validation and provider checks still apply; the current graph runtime supports replace targets.","Saving a graph does not write or delete warehouse data."],"items":{"type":"string"},"title":"Limitations","type":"array"},"node_changes":{"items":{"$ref":"#/$defs/GraphNodeChange"},"title":"Node Changes","type":"array"},"outputs":{"items":{"$ref":"#/$defs/GraphOutputImpact"},"title":"Outputs","type":"array"},"run_output_ids":{"items":{"type":"string"},"title":"Run Output Ids","type":"array"}},"required":["baseline_content_sha256","candidate_content_sha256","graph_properties_changed","node_changes","connection_changes","affected_outputs","outputs","run_output_ids"],"title":"GraphChangePreviewResponse","type":"object"} diff --git a/src/generated/dander-contracts/bundle/schemas/graph-repair-preview.schema.json b/src/generated/dander-contracts/bundle/schemas/graph-repair-preview.schema.json new file mode 100644 index 0000000..d895da7 --- /dev/null +++ b/src/generated/dander-contracts/bundle/schemas/graph-repair-preview.schema.json @@ -0,0 +1 @@ +{"$defs":{"DestinationDocument":{"additionalProperties":false,"properties":{"business_key":{"items":{"type":"string"},"title":"Business Key","type":"array"},"dataset":{"minLength":1,"title":"Dataset","type":"string"},"project":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Project"},"table":{"minLength":1,"title":"Table","type":"string"}},"required":["dataset","table"],"title":"DestinationDocument","type":"object"},"GraphRepairOutput":{"additionalProperties":false,"properties":{"business_key":{"items":{"type":"string"},"title":"Business Key","type":"array"},"destination":{"$ref":"#/$defs/DestinationDocument"},"name":{"title":"Name","type":"string"},"node_id":{"title":"Node Id","type":"string"},"partition_field":{"title":"Partition Field","type":"string"},"partition_type":{"enum":["DATE","TIMESTAMP"],"title":"Partition Type","type":"string"}},"required":["node_id","name","destination","partition_field","partition_type","business_key"],"title":"GraphRepairOutput","type":"object"},"GraphRepairWindow":{"additionalProperties":false,"description":"UTC calendar dates: start is inclusive and end is exclusive.","properties":{"end_date":{"format":"date","title":"End Date","type":"string"},"start_date":{"format":"date","title":"Start Date","type":"string"}},"required":["start_date","end_date"],"title":"GraphRepairWindow","type":"object"}},"$id":"urn:dander:control:contracts:v1:graph-repair-preview","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"environments":{"items":{"type":"string"},"title":"Environments","type":"array"},"estimated_cost_usd":{"default":null,"title":"Estimated Cost Usd","type":"null"},"estimated_rows":{"default":null,"title":"Estimated Rows","type":"null"},"graph_content_sha256":{"title":"Graph Content Sha256","type":"string"},"limitations":{"default":["Start date is included; end date is excluded. Timestamp fields use UTC calendar dates.","Source extraction and its normal saved progress are unchanged. This is not a historical snapshot.","Only selected output dates are published; computing them can scan data outside that range.","A record moving across the date boundary stops publication for that output. Choose a wider range or rebuild the full output.","Each output publishes atomically. Earlier successful outputs remain if a later output fails; repeating the same repair converges on the current raw data.","Execution requires a current repair-capable runtime with a BigQuery warehouse. Runtime validation and warehouse checks still apply."],"items":{"type":"string"},"title":"Limitations","type":"array"},"outputs":{"items":{"$ref":"#/$defs/GraphRepairOutput"},"title":"Outputs","type":"array"},"source":{"const":"retained_raw","default":"retained_raw","title":"Source","type":"string"},"summary":{"default":"Rebuild the selected output dates from the raw data currently stored in your warehouse.","title":"Summary","type":"string"},"window":{"$ref":"#/$defs/GraphRepairWindow"}},"required":["graph_content_sha256","window","outputs","environments"],"title":"GraphRepairPreviewResponse","type":"object"} diff --git a/src/generated/dander-contracts/bundle/schemas/graph-repair-window.schema.json b/src/generated/dander-contracts/bundle/schemas/graph-repair-window.schema.json new file mode 100644 index 0000000..60f61cc --- /dev/null +++ b/src/generated/dander-contracts/bundle/schemas/graph-repair-window.schema.json @@ -0,0 +1 @@ +{"$id":"urn:dander:control:contracts:v1:graph-repair-window","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"UTC calendar dates: start is inclusive and end is exclusive.","properties":{"end_date":{"format":"date","title":"End Date","type":"string"},"start_date":{"format":"date","title":"Start Date","type":"string"}},"required":["start_date","end_date"],"title":"GraphRepairWindow","type":"object"} diff --git a/src/generated/dander-contracts/bundle/schemas/run-explanation.schema.json b/src/generated/dander-contracts/bundle/schemas/run-explanation.schema.json new file mode 100644 index 0000000..a8c4297 --- /dev/null +++ b/src/generated/dander-contracts/bundle/schemas/run-explanation.schema.json @@ -0,0 +1 @@ +{"$defs":{"RunActionKind":{"enum":["refresh","logs","replay","cancel","inspect_outputs","review_configuration","none"],"type":"string"},"RunExplanationAction":{"additionalProperties":false,"description":"One suggested next step, without performing a run mutation.","properties":{"kind":{"$ref":"#/$defs/RunActionKind"},"label":{"title":"Label","type":"string"},"reason":{"title":"Reason","type":"string"}},"required":["kind","label","reason"],"title":"RunExplanationAction","type":"object"},"RunState":{"enum":["queued","running","succeeded","failed","canceling","canceled","retrying"],"title":"RunState","type":"string"}},"$id":"urn:dander:control:contracts:v1:run-explanation","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"A bounded explanation derived only from the current normalized run status.","properties":{"available_actions":{"items":{"$ref":"#/$defs/RunActionKind"},"maxItems":7,"title":"Available Actions","type":"array"},"caveats":{"items":{"type":"string"},"maxItems":8,"title":"Caveats","type":"array"},"details":{"items":{"type":"string"},"maxItems":8,"title":"Details","type":"array"},"next_action":{"$ref":"#/$defs/RunExplanationAction"},"results_available":{"title":"Results Available","type":"boolean"},"run_id":{"title":"Run Id","type":"string"},"state":{"$ref":"#/$defs/RunState"},"summary":{"title":"Summary","type":"string"}},"required":["run_id","state","results_available","summary","next_action"],"title":"RunExplanationResponse","type":"object"} diff --git a/src/generated/dander-contracts/bundle/schemas/run-page.schema.json b/src/generated/dander-contracts/bundle/schemas/run-page.schema.json index 89120e2..2d9d735 100644 --- a/src/generated/dander-contracts/bundle/schemas/run-page.schema.json +++ b/src/generated/dander-contracts/bundle/schemas/run-page.schema.json @@ -1 +1 @@ -{"$defs":{"RunState":{"enum":["queued","running","succeeded","failed","canceling","canceled","retrying"],"title":"RunState","type":"string"},"RunStatusResponse":{"additionalProperties":false,"properties":{"affected":{"default":0,"minimum":0,"title":"Affected","type":"integer"},"assertions":{"default":0,"minimum":0,"title":"Assertions","type":"integer"},"assets":{"default":0,"minimum":0,"title":"Assets","type":"integer"},"can_cancel":{"default":false,"title":"Can Cancel","type":"boolean"},"can_replay":{"default":false,"title":"Can Replay","type":"boolean"},"endpoints":{"default":0,"minimum":0,"title":"Endpoints","type":"integer"},"extracted":{"default":0,"minimum":0,"title":"Extracted","type":"integer"},"failure_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Failure Code"},"failure_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Failure Summary"},"finished_at":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Finished At"},"logs_available":{"default":false,"title":"Logs Available","type":"boolean"},"models":{"default":0,"minimum":0,"title":"Models","type":"integer"},"run_id":{"title":"Run Id","type":"string"},"stage":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Stage"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Started At"},"state":{"$ref":"#/$defs/RunState"}},"required":["run_id","state"],"title":"RunStatusResponse","type":"object"}},"$id":"urn:dander:control:contracts:v1:run-page","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"A bounded page of normalized, non-sensitive run summaries.","properties":{"items":{"items":{"$ref":"#/$defs/RunStatusResponse"},"maxItems":100,"title":"Items","type":"array"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Next Cursor"}},"required":["items"],"title":"RunPageResponse","type":"object"} +{"$defs":{"GraphRepairWindow":{"additionalProperties":false,"description":"UTC calendar dates: start is inclusive and end is exclusive.","properties":{"end_date":{"format":"date","title":"End Date","type":"string"},"start_date":{"format":"date","title":"Start Date","type":"string"}},"required":["start_date","end_date"],"title":"GraphRepairWindow","type":"object"},"RunPlacementDecision":{"additionalProperties":false,"description":"Fixed-size explanation of the execution-plan selection used by Control.","properties":{"decision_schema":{"const":"io.dander.control.placement-decision/v1","title":"Decision Schema","type":"string"},"eligible_plan_count":{"maximum":100,"minimum":1,"title":"Eligible Plan Count","type":"integer"},"estimated_cost_microusd":{"anyOf":[{"maximum":9223372036854775807,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"title":"Estimated Cost Microusd"},"max_cost_microusd":{"anyOf":[{"maximum":9223372036854775807,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"title":"Max Cost Microusd"},"mode":{"enum":["automatic","manual_override","configured_default","scheduled","replay"],"title":"Mode","type":"string"},"preferred_locality":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Preferred Locality"},"selected_environment":{"title":"Selected Environment","type":"string"},"selected_locality":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Selected Locality"}},"required":["decision_schema","mode","selected_environment","eligible_plan_count"],"title":"RunPlacementDecision","type":"object"},"RunSizeClassDecision":{"additionalProperties":false,"description":"Fixed-size explanation of the selected execution resource class.","properties":{"cpu_millis":{"minimum":1,"title":"Cpu Millis","type":"integer"},"decision_schema":{"const":"io.dander.control.size-class-decision/v2","title":"Decision Schema","type":"string"},"eligible_plan_count":{"maximum":100,"minimum":1,"title":"Eligible Plan Count","type":"integer"},"ephemeral_storage_mib":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"title":"Ephemeral Storage Mib"},"estimate_observed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Estimate Observed At"},"estimate_source":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Estimate Source"},"estimated_input_bytes":{"anyOf":[{"maximum":9223372036854775807,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"title":"Estimated Input Bytes"},"max_input_bytes":{"maximum":9223372036854775807,"minimum":0,"title":"Max Input Bytes","type":"integer"},"memory_mib":{"minimum":1,"title":"Memory Mib","type":"integer"},"mode":{"enum":["automatic_input","manual_override","configured_default","scheduled","replay"],"title":"Mode","type":"string"},"selected_size_class":{"title":"Selected Size Class","type":"string"}},"required":["decision_schema","mode","selected_size_class","max_input_bytes","cpu_millis","memory_mib","eligible_plan_count"],"title":"RunSizeClassDecision","type":"object"},"RunState":{"enum":["queued","running","succeeded","failed","canceling","canceled","retrying"],"title":"RunState","type":"string"},"RunStatusResponse":{"additionalProperties":false,"properties":{"affected":{"default":0,"minimum":0,"title":"Affected","type":"integer"},"assertions":{"default":0,"minimum":0,"title":"Assertions","type":"integer"},"assets":{"default":0,"minimum":0,"title":"Assets","type":"integer"},"can_cancel":{"default":false,"title":"Can Cancel","type":"boolean"},"can_replay":{"default":false,"title":"Can Replay","type":"boolean"},"endpoints":{"default":0,"minimum":0,"title":"Endpoints","type":"integer"},"extracted":{"default":0,"minimum":0,"title":"Extracted","type":"integer"},"failure_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Failure Code"},"failure_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Failure Summary"},"finished_at":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Finished At"},"logs_available":{"default":false,"title":"Logs Available","type":"boolean"},"models":{"default":0,"minimum":0,"title":"Models","type":"integer"},"placement":{"anyOf":[{"$ref":"#/$defs/RunPlacementDecision"},{"type":"null"}],"default":null},"repair_window":{"anyOf":[{"$ref":"#/$defs/GraphRepairWindow"},{"type":"null"}],"default":null},"result_schema":{"anyOf":[{"const":"io.dander.control.execution-result-summary/v1","type":"string"},{"type":"null"}],"default":null,"title":"Result Schema"},"run_id":{"title":"Run Id","type":"string"},"sizing":{"anyOf":[{"$ref":"#/$defs/RunSizeClassDecision"},{"type":"null"}],"default":null},"skipped":{"default":false,"title":"Skipped","type":"boolean"},"stage":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Stage"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Started At"},"state":{"$ref":"#/$defs/RunState"},"telemetry":{"anyOf":[{"$ref":"#/$defs/RunTelemetrySummary"},{"type":"null"}],"default":null}},"required":["run_id","state"],"title":"RunStatusResponse","type":"object"},"RunTelemetrySummary":{"additionalProperties":false,"description":"Fixed-size telemetry totals; provider operation details remain in logs.","properties":{"bytes_billed":{"maximum":9223372036854775807,"minimum":0,"title":"Bytes Billed","type":"integer"},"bytes_processed":{"maximum":9223372036854775807,"minimum":0,"title":"Bytes Processed","type":"integer"},"bytes_read":{"maximum":9223372036854775807,"minimum":0,"title":"Bytes Read","type":"integer"},"bytes_written":{"maximum":9223372036854775807,"minimum":0,"title":"Bytes Written","type":"integer"},"duration_ms":{"maximum":9223372036854775807,"minimum":0,"title":"Duration Ms","type":"integer"},"execution_duration_ms":{"maximum":9223372036854775807,"minimum":0,"title":"Execution Duration Ms","type":"integer"},"operation_count":{"maximum":9223372036854775807,"minimum":0,"title":"Operation Count","type":"integer"},"queue_duration_ms":{"maximum":9223372036854775807,"minimum":0,"title":"Queue Duration Ms","type":"integer"},"retry_count":{"maximum":9223372036854775807,"minimum":0,"title":"Retry Count","type":"integer"},"rows_affected":{"maximum":9223372036854775807,"minimum":0,"title":"Rows Affected","type":"integer"},"rows_read":{"maximum":9223372036854775807,"minimum":0,"title":"Rows Read","type":"integer"},"rows_written":{"maximum":9223372036854775807,"minimum":0,"title":"Rows Written","type":"integer"},"spill_bytes":{"maximum":9223372036854775807,"minimum":0,"title":"Spill Bytes","type":"integer"}},"required":["duration_ms","operation_count","retry_count","rows_read","rows_written","rows_affected","bytes_read","bytes_written","bytes_processed","bytes_billed","queue_duration_ms","execution_duration_ms","spill_bytes"],"title":"RunTelemetrySummary","type":"object"}},"$id":"urn:dander:control:contracts:v1:run-page","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"A bounded page of normalized, non-sensitive run summaries.","properties":{"items":{"items":{"$ref":"#/$defs/RunStatusResponse"},"maxItems":100,"title":"Items","type":"array"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Next Cursor"}},"required":["items"],"title":"RunPageResponse","type":"object"} diff --git a/src/generated/dander-contracts/bundle/schemas/run-status.schema.json b/src/generated/dander-contracts/bundle/schemas/run-status.schema.json index 3b7ecb5..f5d536c 100644 --- a/src/generated/dander-contracts/bundle/schemas/run-status.schema.json +++ b/src/generated/dander-contracts/bundle/schemas/run-status.schema.json @@ -1 +1 @@ -{"$defs":{"RunState":{"enum":["queued","running","succeeded","failed","canceling","canceled","retrying"],"title":"RunState","type":"string"}},"$id":"urn:dander:control:contracts:v1:run-status","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"affected":{"default":0,"minimum":0,"title":"Affected","type":"integer"},"assertions":{"default":0,"minimum":0,"title":"Assertions","type":"integer"},"assets":{"default":0,"minimum":0,"title":"Assets","type":"integer"},"can_cancel":{"default":false,"title":"Can Cancel","type":"boolean"},"can_replay":{"default":false,"title":"Can Replay","type":"boolean"},"endpoints":{"default":0,"minimum":0,"title":"Endpoints","type":"integer"},"extracted":{"default":0,"minimum":0,"title":"Extracted","type":"integer"},"failure_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Failure Code"},"failure_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Failure Summary"},"finished_at":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Finished At"},"logs_available":{"default":false,"title":"Logs Available","type":"boolean"},"models":{"default":0,"minimum":0,"title":"Models","type":"integer"},"run_id":{"title":"Run Id","type":"string"},"stage":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Stage"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Started At"},"state":{"$ref":"#/$defs/RunState"}},"required":["run_id","state"],"title":"RunStatusResponse","type":"object"} +{"$defs":{"GraphRepairWindow":{"additionalProperties":false,"description":"UTC calendar dates: start is inclusive and end is exclusive.","properties":{"end_date":{"format":"date","title":"End Date","type":"string"},"start_date":{"format":"date","title":"Start Date","type":"string"}},"required":["start_date","end_date"],"title":"GraphRepairWindow","type":"object"},"RunPlacementDecision":{"additionalProperties":false,"description":"Fixed-size explanation of the execution-plan selection used by Control.","properties":{"decision_schema":{"const":"io.dander.control.placement-decision/v1","title":"Decision Schema","type":"string"},"eligible_plan_count":{"maximum":100,"minimum":1,"title":"Eligible Plan Count","type":"integer"},"estimated_cost_microusd":{"anyOf":[{"maximum":9223372036854775807,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"title":"Estimated Cost Microusd"},"max_cost_microusd":{"anyOf":[{"maximum":9223372036854775807,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"title":"Max Cost Microusd"},"mode":{"enum":["automatic","manual_override","configured_default","scheduled","replay"],"title":"Mode","type":"string"},"preferred_locality":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Preferred Locality"},"selected_environment":{"title":"Selected Environment","type":"string"},"selected_locality":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Selected Locality"}},"required":["decision_schema","mode","selected_environment","eligible_plan_count"],"title":"RunPlacementDecision","type":"object"},"RunSizeClassDecision":{"additionalProperties":false,"description":"Fixed-size explanation of the selected execution resource class.","properties":{"cpu_millis":{"minimum":1,"title":"Cpu Millis","type":"integer"},"decision_schema":{"const":"io.dander.control.size-class-decision/v2","title":"Decision Schema","type":"string"},"eligible_plan_count":{"maximum":100,"minimum":1,"title":"Eligible Plan Count","type":"integer"},"ephemeral_storage_mib":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"title":"Ephemeral Storage Mib"},"estimate_observed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Estimate Observed At"},"estimate_source":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Estimate Source"},"estimated_input_bytes":{"anyOf":[{"maximum":9223372036854775807,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"title":"Estimated Input Bytes"},"max_input_bytes":{"maximum":9223372036854775807,"minimum":0,"title":"Max Input Bytes","type":"integer"},"memory_mib":{"minimum":1,"title":"Memory Mib","type":"integer"},"mode":{"enum":["automatic_input","manual_override","configured_default","scheduled","replay"],"title":"Mode","type":"string"},"selected_size_class":{"title":"Selected Size Class","type":"string"}},"required":["decision_schema","mode","selected_size_class","max_input_bytes","cpu_millis","memory_mib","eligible_plan_count"],"title":"RunSizeClassDecision","type":"object"},"RunState":{"enum":["queued","running","succeeded","failed","canceling","canceled","retrying"],"title":"RunState","type":"string"},"RunTelemetrySummary":{"additionalProperties":false,"description":"Fixed-size telemetry totals; provider operation details remain in logs.","properties":{"bytes_billed":{"maximum":9223372036854775807,"minimum":0,"title":"Bytes Billed","type":"integer"},"bytes_processed":{"maximum":9223372036854775807,"minimum":0,"title":"Bytes Processed","type":"integer"},"bytes_read":{"maximum":9223372036854775807,"minimum":0,"title":"Bytes Read","type":"integer"},"bytes_written":{"maximum":9223372036854775807,"minimum":0,"title":"Bytes Written","type":"integer"},"duration_ms":{"maximum":9223372036854775807,"minimum":0,"title":"Duration Ms","type":"integer"},"execution_duration_ms":{"maximum":9223372036854775807,"minimum":0,"title":"Execution Duration Ms","type":"integer"},"operation_count":{"maximum":9223372036854775807,"minimum":0,"title":"Operation Count","type":"integer"},"queue_duration_ms":{"maximum":9223372036854775807,"minimum":0,"title":"Queue Duration Ms","type":"integer"},"retry_count":{"maximum":9223372036854775807,"minimum":0,"title":"Retry Count","type":"integer"},"rows_affected":{"maximum":9223372036854775807,"minimum":0,"title":"Rows Affected","type":"integer"},"rows_read":{"maximum":9223372036854775807,"minimum":0,"title":"Rows Read","type":"integer"},"rows_written":{"maximum":9223372036854775807,"minimum":0,"title":"Rows Written","type":"integer"},"spill_bytes":{"maximum":9223372036854775807,"minimum":0,"title":"Spill Bytes","type":"integer"}},"required":["duration_ms","operation_count","retry_count","rows_read","rows_written","rows_affected","bytes_read","bytes_written","bytes_processed","bytes_billed","queue_duration_ms","execution_duration_ms","spill_bytes"],"title":"RunTelemetrySummary","type":"object"}},"$id":"urn:dander:control:contracts:v1:run-status","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"affected":{"default":0,"minimum":0,"title":"Affected","type":"integer"},"assertions":{"default":0,"minimum":0,"title":"Assertions","type":"integer"},"assets":{"default":0,"minimum":0,"title":"Assets","type":"integer"},"can_cancel":{"default":false,"title":"Can Cancel","type":"boolean"},"can_replay":{"default":false,"title":"Can Replay","type":"boolean"},"endpoints":{"default":0,"minimum":0,"title":"Endpoints","type":"integer"},"extracted":{"default":0,"minimum":0,"title":"Extracted","type":"integer"},"failure_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Failure Code"},"failure_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Failure Summary"},"finished_at":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Finished At"},"logs_available":{"default":false,"title":"Logs Available","type":"boolean"},"models":{"default":0,"minimum":0,"title":"Models","type":"integer"},"placement":{"anyOf":[{"$ref":"#/$defs/RunPlacementDecision"},{"type":"null"}],"default":null},"repair_window":{"anyOf":[{"$ref":"#/$defs/GraphRepairWindow"},{"type":"null"}],"default":null},"result_schema":{"anyOf":[{"const":"io.dander.control.execution-result-summary/v1","type":"string"},{"type":"null"}],"default":null,"title":"Result Schema"},"run_id":{"title":"Run Id","type":"string"},"sizing":{"anyOf":[{"$ref":"#/$defs/RunSizeClassDecision"},{"type":"null"}],"default":null},"skipped":{"default":false,"title":"Skipped","type":"boolean"},"stage":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Stage"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Started At"},"state":{"$ref":"#/$defs/RunState"},"telemetry":{"anyOf":[{"$ref":"#/$defs/RunTelemetrySummary"},{"type":"null"}],"default":null}},"required":["run_id","state"],"title":"RunStatusResponse","type":"object"} diff --git a/src/generated/dander-contracts/metadata.ts b/src/generated/dander-contracts/metadata.ts index 065d013..a511b5c 100644 --- a/src/generated/dander-contracts/metadata.ts +++ b/src/generated/dander-contracts/metadata.ts @@ -1,9 +1,11 @@ /** Generated from the exact published Dander wheel; do not edit by hand. */ export const DANDER_CONTRACT_PACKAGE = "dander-platform" as const; -export const DANDER_CONTRACT_PACKAGE_VERSION = "0.9.0rc19" as const; -export const DANDER_CONTRACT_WHEEL = "dander_platform-0.9.0rc19-py3-none-any.whl" as const; +export const DANDER_CONTRACT_PACKAGE_VERSION = "0.9.0rc33" as const; +export const DANDER_CONTRACT_WHEEL = "dander_platform-0.9.0rc33-py3-none-any.whl" as const; +export const DANDER_CONTRACT_WHEEL_URL = + "https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl" as const; export const DANDER_CONTRACT_WHEEL_SHA256 = - "8f1336786e46471a2048d6250008ad176ff3b62d047020872659304c7d2db552" as const; + "2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f" as const; export const DANDER_CONTRACT_BUNDLE_ID = "io.dander.control.contracts/v1" as const; export const DANDER_CONTRACT_BUNDLE_SHA256 = - "695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3" as const; + "a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279" as const; diff --git a/src/generated/dander-contracts/types/api-error.ts b/src/generated/dander-contracts/types/api-error.ts index 73a76ad..1227db4 100644 --- a/src/generated/dander-contracts/types/api-error.ts +++ b/src/generated/dander-contracts/types/api-error.ts @@ -1,7 +1,8 @@ /** - * Generated from dander-platform==0.9.0rc19 (dander_platform-0.9.0rc19-py3-none-any.whl). - * Wheel SHA256: 8f1336786e46471a2048d6250008ad176ff3b62d047020872659304c7d2db552 - * Contract bundle: io.dander.control.contracts/v1 (695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3) + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/capabilities.ts b/src/generated/dander-contracts/types/capabilities.ts index 07f8e82..c4b4eb0 100644 --- a/src/generated/dander-contracts/types/capabilities.ts +++ b/src/generated/dander-contracts/types/capabilities.ts @@ -1,7 +1,8 @@ /** - * Generated from dander-platform==0.9.0rc19 (dander_platform-0.9.0rc19-py3-none-any.whl). - * Wheel SHA256: 8f1336786e46471a2048d6250008ad176ff3b62d047020872659304c7d2db552 - * Contract bundle: io.dander.control.contracts/v1 (695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3) + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ @@ -19,9 +20,13 @@ export type Operations = ( | "graph.edit" | "graph.delete" | "graph.validate" + | "graph.change-preview" + | "graph.repair-preview" | "deployment.preview" | "run.start" | "run.read" + | "run.explain" + | "run.repair" | "run.logs" | "run.cancel" | "run.replay" diff --git a/src/generated/dander-contracts/types/connector-catalog.ts b/src/generated/dander-contracts/types/connector-catalog.ts index 9004837..2e7005f 100644 --- a/src/generated/dander-contracts/types/connector-catalog.ts +++ b/src/generated/dander-contracts/types/connector-catalog.ts @@ -1,7 +1,8 @@ /** - * Generated from dander-platform==0.9.0rc19 (dander_platform-0.9.0rc19-py3-none-any.whl). - * Wheel SHA256: 8f1336786e46471a2048d6250008ad176ff3b62d047020872659304c7d2db552 - * Contract bundle: io.dander.control.contracts/v1 (695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3) + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/control-bootstrap.ts b/src/generated/dander-contracts/types/control-bootstrap.ts index feaf9e5..fa93c76 100644 --- a/src/generated/dander-contracts/types/control-bootstrap.ts +++ b/src/generated/dander-contracts/types/control-bootstrap.ts @@ -1,7 +1,8 @@ /** - * Generated from dander-platform==0.9.0rc19 (dander_platform-0.9.0rc19-py3-none-any.whl). - * Wheel SHA256: 8f1336786e46471a2048d6250008ad176ff3b62d047020872659304c7d2db552 - * Contract bundle: io.dander.control.contracts/v1 (695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3) + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/deployment-preview.ts b/src/generated/dander-contracts/types/deployment-preview.ts index c46f43a..6e202e1 100644 --- a/src/generated/dander-contracts/types/deployment-preview.ts +++ b/src/generated/dander-contracts/types/deployment-preview.ts @@ -1,7 +1,8 @@ /** - * Generated from dander-platform==0.9.0rc19 (dander_platform-0.9.0rc19-py3-none-any.whl). - * Wheel SHA256: 8f1336786e46471a2048d6250008ad176ff3b62d047020872659304c7d2db552 - * Contract bundle: io.dander.control.contracts/v1 (695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3) + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/graph-change-preview.ts b/src/generated/dander-contracts/types/graph-change-preview.ts new file mode 100644 index 0000000..06fa3ac --- /dev/null +++ b/src/generated/dander-contracts/types/graph-change-preview.ts @@ -0,0 +1,200 @@ +/** + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) + * Do not edit by hand; run `pnpm contracts:generate`. + */ + +export type AffectedOutputs = string[]; +export type BaselineContentSha256 = string; +export type CandidateContentSha256 = string; +export type Change = "added" | "removed" | "modified"; +export type Source = string; +export type Target = string; +export type ConnectionChanges = GraphConnectionChange[]; +export type CostUsd = null; +export type Explanation = string; +export type RowsWritten = null; +export type GraphPropertiesChanged = string[]; +export type Limitations = string[]; +export type AffectsData = boolean; +export type Change1 = "added" | "removed" | "modified" | "layout_only"; +export type ChangedProperties = string[]; +export type Name = string; +export type NodeId = string; +export type NodeChanges = GraphNodeChange[]; +export type Affected = boolean; +export type FieldNames = string[]; +/** + * @maxItems 4 + */ +export type Clustering = + [] | [string] | [string, string] | [string, string, string] | [string, string, string, string]; +export type CursorField = string | null; +export type BusinessKey = string[]; +export type Dataset = string; +export type Project = string | null; +export type Table = string; +export type MaxBatchRows = number; +export type Field = string | null; +/** + * The closed set of time-unit partitioning granularities a `PartitioningSpec` may declare. + * + * A `StrEnum` (matching the `WriteMode`/`TransformationKind`/`JoinType` convention elsewhere in + * `dander.pipeline`), so it serializes to/from its plain string value stably in YAML and JSON; + * an out-of-set value fails validation with a clear `ValidationError`. Scope is deliberately + * limited to BigQuery time-unit partitioning — integer-range partitioning is a deferred future + * member (see `steering/02-engineering.md` on avoiding speculative generality). + * + * Attributes: + * HOUR: Hourly partitions. + * DAY: Daily partitions — the common case and BigQuery's default granularity. + * MONTH: Monthly partitions. + * YEAR: Yearly partitions. + */ +export type PartitioningType = "hour" | "day" | "month" | "year"; +export type RequirePartitionFilter = boolean; +/** + * How a writer handles declared columns absent from an existing target. + */ +export type SchemaEvolution = "strict" | "additive"; +export type Transport = "load_job" | "storage_write" | "copy"; +/** + * Supported load strategies. + * + * This interface was referenced by `GraphChangePreviewResponse`'s JSON-Schema + * via the `definition` "WriteMode". + */ +export type WriteMode = "scd1" | "scd2" | "snapshot" | "incremental" | "replace"; +export type Effect = string; +export type Name1 = string; +export type NodeId1 = string; +export type Outputs = GraphOutputImpact[]; +export type RunOutputIds = string[]; +/** + * The closed set of time-unit partitioning granularities a `PartitioningSpec` may declare. + * + * A `StrEnum` (matching the `WriteMode`/`TransformationKind`/`JoinType` convention elsewhere in + * `dander.pipeline`), so it serializes to/from its plain string value stably in YAML and JSON; + * an out-of-set value fails validation with a clear `ValidationError`. Scope is deliberately + * limited to BigQuery time-unit partitioning — integer-range partitioning is a deferred future + * member (see `steering/02-engineering.md` on avoiding speculative generality). + * + * Attributes: + * HOUR: Hourly partitions. + * DAY: Daily partitions — the common case and BigQuery's default granularity. + * MONTH: Monthly partitions. + * YEAR: Yearly partitions. + * + * This interface was referenced by `GraphChangePreviewResponse`'s JSON-Schema + * via the `definition` "PartitioningType". + */ +export type PartitioningType1 = "hour" | "day" | "month" | "year"; +/** + * How a writer handles declared columns absent from an existing target. + * + * This interface was referenced by `GraphChangePreviewResponse`'s JSON-Schema + * via the `definition` "SchemaEvolution". + */ +export type SchemaEvolution1 = "strict" | "additive"; + +/** + * Static changes and potential downstream effects; a run still executes all outputs. + */ +export interface GraphChangePreviewResponse { + affected_outputs: AffectedOutputs; + baseline_content_sha256: BaselineContentSha256; + candidate_content_sha256: CandidateContentSha256; + connection_changes: ConnectionChanges; + estimates?: GraphChangeEstimates; + graph_properties_changed: GraphPropertiesChanged; + limitations?: Limitations; + node_changes: NodeChanges; + outputs: Outputs; + run_output_ids: RunOutputIds; +} +/** + * This interface was referenced by `GraphChangePreviewResponse`'s JSON-Schema + * via the `definition` "GraphConnectionChange". + */ +export interface GraphConnectionChange { + change: Change; + source: Source; + target: Target; +} +/** + * This interface was referenced by `GraphChangePreviewResponse`'s JSON-Schema + * via the `definition` "GraphChangeEstimates". + */ +export interface GraphChangeEstimates { + cost_usd?: CostUsd; + explanation?: Explanation; + rows_written?: RowsWritten; +} +/** + * This interface was referenced by `GraphChangePreviewResponse`'s JSON-Schema + * via the `definition` "GraphNodeChange". + */ +export interface GraphNodeChange { + affects_data: AffectsData; + change: Change1; + changed_properties?: ChangedProperties; + name: Name; + node_id: NodeId; +} +/** + * This interface was referenced by `GraphChangePreviewResponse`'s JSON-Schema + * via the `definition` "GraphOutputImpact". + */ +export interface GraphOutputImpact { + affected: Affected; + after: GraphOutputState | null; + before: GraphOutputState | null; + effect: Effect; + name: Name1; + node_id: NodeId1; +} +/** + * Only declared output coordinates and field names, never arbitrary node configuration. + * + * This interface was referenced by `GraphChangePreviewResponse`'s JSON-Schema + * via the `definition` "GraphOutputState". + */ +export interface GraphOutputState { + field_names: FieldNames; + writer: WriterDocument | null; +} +/** + * This interface was referenced by `GraphChangePreviewResponse`'s JSON-Schema + * via the `definition` "WriterDocument". + */ +export interface WriterDocument { + clustering?: Clustering; + cursor_field?: CursorField; + destination: DestinationDocument; + max_batch_rows?: MaxBatchRows; + partitioning?: PartitioningDocument | null; + schema_evolution?: SchemaEvolution; + transport?: Transport; + write_mode: WriteMode; +} +/** + * This interface was referenced by `GraphChangePreviewResponse`'s JSON-Schema + * via the `definition` "DestinationDocument". + */ +export interface DestinationDocument { + business_key?: BusinessKey; + dataset: Dataset; + project?: Project; + table: Table; +} +/** + * This interface was referenced by `GraphChangePreviewResponse`'s JSON-Schema + * via the `definition` "PartitioningDocument". + */ +export interface PartitioningDocument { + field?: Field; + granularity?: PartitioningType; + require_partition_filter?: RequirePartitionFilter; +} diff --git a/src/generated/dander-contracts/types/graph-create.ts b/src/generated/dander-contracts/types/graph-create.ts index 2e546f0..d552b68 100644 --- a/src/generated/dander-contracts/types/graph-create.ts +++ b/src/generated/dander-contracts/types/graph-create.ts @@ -1,7 +1,8 @@ /** - * Generated from dander-platform==0.9.0rc19 (dander_platform-0.9.0rc19-py3-none-any.whl). - * Wheel SHA256: 8f1336786e46471a2048d6250008ad176ff3b62d047020872659304c7d2db552 - * Contract bundle: io.dander.control.contracts/v1 (695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3) + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/graph-page.ts b/src/generated/dander-contracts/types/graph-page.ts index 195bcab..94e1e1b 100644 --- a/src/generated/dander-contracts/types/graph-page.ts +++ b/src/generated/dander-contracts/types/graph-page.ts @@ -1,7 +1,8 @@ /** - * Generated from dander-platform==0.9.0rc19 (dander_platform-0.9.0rc19-py3-none-any.whl). - * Wheel SHA256: 8f1336786e46471a2048d6250008ad176ff3b62d047020872659304c7d2db552 - * Contract bundle: io.dander.control.contracts/v1 (695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3) + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/graph-repair-preview.ts b/src/generated/dander-contracts/types/graph-repair-preview.ts new file mode 100644 index 0000000..6198cc7 --- /dev/null +++ b/src/generated/dander-contracts/types/graph-repair-preview.ts @@ -0,0 +1,71 @@ +/** + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) + * Do not edit by hand; run `pnpm contracts:generate`. + */ + +export type Environments = string[]; +export type EstimatedCostUsd = null; +export type EstimatedRows = null; +export type GraphContentSha256 = string; +export type Limitations = string[]; +export type BusinessKey = string[]; +export type BusinessKey1 = string[]; +export type Dataset = string; +export type Project = string | null; +export type Table = string; +export type Name = string; +export type NodeId = string; +export type PartitionField = string; +export type PartitionType = "DATE" | "TIMESTAMP"; +export type Outputs = GraphRepairOutput[]; +export type Source = "retained_raw"; +export type Summary = string; +export type EndDate = string; +export type StartDate = string; + +export interface GraphRepairPreviewResponse { + environments: Environments; + estimated_cost_usd?: EstimatedCostUsd; + estimated_rows?: EstimatedRows; + graph_content_sha256: GraphContentSha256; + limitations?: Limitations; + outputs: Outputs; + source?: Source; + summary?: Summary; + window: GraphRepairWindow; +} +/** + * This interface was referenced by `GraphRepairPreviewResponse`'s JSON-Schema + * via the `definition` "GraphRepairOutput". + */ +export interface GraphRepairOutput { + business_key: BusinessKey; + destination: DestinationDocument; + name: Name; + node_id: NodeId; + partition_field: PartitionField; + partition_type: PartitionType; +} +/** + * This interface was referenced by `GraphRepairPreviewResponse`'s JSON-Schema + * via the `definition` "DestinationDocument". + */ +export interface DestinationDocument { + business_key?: BusinessKey1; + dataset: Dataset; + project?: Project; + table: Table; +} +/** + * UTC calendar dates: start is inclusive and end is exclusive. + * + * This interface was referenced by `GraphRepairPreviewResponse`'s JSON-Schema + * via the `definition` "GraphRepairWindow". + */ +export interface GraphRepairWindow { + end_date: EndDate; + start_date: StartDate; +} diff --git a/src/generated/dander-contracts/types/graph-repair-window.ts b/src/generated/dander-contracts/types/graph-repair-window.ts new file mode 100644 index 0000000..f34a5bd --- /dev/null +++ b/src/generated/dander-contracts/types/graph-repair-window.ts @@ -0,0 +1,18 @@ +/** + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) + * Do not edit by hand; run `pnpm contracts:generate`. + */ + +export type EndDate = string; +export type StartDate = string; + +/** + * UTC calendar dates: start is inclusive and end is exclusive. + */ +export interface GraphRepairWindow { + end_date: EndDate; + start_date: StartDate; +} diff --git a/src/generated/dander-contracts/types/graph-resource.ts b/src/generated/dander-contracts/types/graph-resource.ts index dd06aad..eddbe51 100644 --- a/src/generated/dander-contracts/types/graph-resource.ts +++ b/src/generated/dander-contracts/types/graph-resource.ts @@ -1,7 +1,8 @@ /** - * Generated from dander-platform==0.9.0rc19 (dander_platform-0.9.0rc19-py3-none-any.whl). - * Wheel SHA256: 8f1336786e46471a2048d6250008ad176ff3b62d047020872659304c7d2db552 - * Contract bundle: io.dander.control.contracts/v1 (695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3) + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/graph-validation.ts b/src/generated/dander-contracts/types/graph-validation.ts index 022854d..e9753e4 100644 --- a/src/generated/dander-contracts/types/graph-validation.ts +++ b/src/generated/dander-contracts/types/graph-validation.ts @@ -1,7 +1,8 @@ /** - * Generated from dander-platform==0.9.0rc19 (dander_platform-0.9.0rc19-py3-none-any.whl). - * Wheel SHA256: 8f1336786e46471a2048d6250008ad176ff3b62d047020872659304c7d2db552 - * Contract bundle: io.dander.control.contracts/v1 (695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3) + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/log-page.ts b/src/generated/dander-contracts/types/log-page.ts index f169a9b..b9e1cb3 100644 --- a/src/generated/dander-contracts/types/log-page.ts +++ b/src/generated/dander-contracts/types/log-page.ts @@ -1,7 +1,8 @@ /** - * Generated from dander-platform==0.9.0rc19 (dander_platform-0.9.0rc19-py3-none-any.whl). - * Wheel SHA256: 8f1336786e46471a2048d6250008ad176ff3b62d047020872659304c7d2db552 - * Contract bundle: io.dander.control.contracts/v1 (695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3) + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/mutation-result.ts b/src/generated/dander-contracts/types/mutation-result.ts index 694af31..8f6d8c1 100644 --- a/src/generated/dander-contracts/types/mutation-result.ts +++ b/src/generated/dander-contracts/types/mutation-result.ts @@ -1,7 +1,8 @@ /** - * Generated from dander-platform==0.9.0rc19 (dander_platform-0.9.0rc19-py3-none-any.whl). - * Wheel SHA256: 8f1336786e46471a2048d6250008ad176ff3b62d047020872659304c7d2db552 - * Contract bundle: io.dander.control.contracts/v1 (695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3) + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/operation-catalog.ts b/src/generated/dander-contracts/types/operation-catalog.ts index dee343f..2a72a80 100644 --- a/src/generated/dander-contracts/types/operation-catalog.ts +++ b/src/generated/dander-contracts/types/operation-catalog.ts @@ -1,7 +1,8 @@ /** - * Generated from dander-platform==0.9.0rc19 (dander_platform-0.9.0rc19-py3-none-any.whl). - * Wheel SHA256: 8f1336786e46471a2048d6250008ad176ff3b62d047020872659304c7d2db552 - * Contract bundle: io.dander.control.contracts/v1 (695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3) + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/pipeline-graph.ts b/src/generated/dander-contracts/types/pipeline-graph.ts index 4585671..3380d3c 100644 --- a/src/generated/dander-contracts/types/pipeline-graph.ts +++ b/src/generated/dander-contracts/types/pipeline-graph.ts @@ -1,7 +1,8 @@ /** - * Generated from dander-platform==0.9.0rc19 (dander_platform-0.9.0rc19-py3-none-any.whl). - * Wheel SHA256: 8f1336786e46471a2048d6250008ad176ff3b62d047020872659304c7d2db552 - * Contract bundle: io.dander.control.contracts/v1 (695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3) + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/plugin-catalog.ts b/src/generated/dander-contracts/types/plugin-catalog.ts index 0c43ad6..0793e01 100644 --- a/src/generated/dander-contracts/types/plugin-catalog.ts +++ b/src/generated/dander-contracts/types/plugin-catalog.ts @@ -1,7 +1,8 @@ /** - * Generated from dander-platform==0.9.0rc19 (dander_platform-0.9.0rc19-py3-none-any.whl). - * Wheel SHA256: 8f1336786e46471a2048d6250008ad176ff3b62d047020872659304c7d2db552 - * Contract bundle: io.dander.control.contracts/v1 (695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3) + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/project-list.ts b/src/generated/dander-contracts/types/project-list.ts index 9ef1bf7..08d99a0 100644 --- a/src/generated/dander-contracts/types/project-list.ts +++ b/src/generated/dander-contracts/types/project-list.ts @@ -1,7 +1,8 @@ /** - * Generated from dander-platform==0.9.0rc19 (dander_platform-0.9.0rc19-py3-none-any.whl). - * Wheel SHA256: 8f1336786e46471a2048d6250008ad176ff3b62d047020872659304c7d2db552 - * Contract bundle: io.dander.control.contracts/v1 (695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3) + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/run-explanation.ts b/src/generated/dander-contracts/types/run-explanation.ts new file mode 100644 index 0000000..c387df5 --- /dev/null +++ b/src/generated/dander-contracts/types/run-explanation.ts @@ -0,0 +1,96 @@ +/** + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) + * Do not edit by hand; run `pnpm contracts:generate`. + */ + +/** + * @maxItems 7 + */ +export type AvailableActions = + | [] + | [RunActionKind] + | [RunActionKind, RunActionKind] + | [RunActionKind, RunActionKind, RunActionKind] + | [RunActionKind, RunActionKind, RunActionKind, RunActionKind] + | [RunActionKind, RunActionKind, RunActionKind, RunActionKind, RunActionKind] + | [RunActionKind, RunActionKind, RunActionKind, RunActionKind, RunActionKind, RunActionKind] + | [ + RunActionKind, + RunActionKind, + RunActionKind, + RunActionKind, + RunActionKind, + RunActionKind, + RunActionKind, + ]; +/** + * This interface was referenced by `RunExplanationResponse`'s JSON-Schema + * via the `definition` "RunActionKind". + */ +export type RunActionKind = + "refresh" | "logs" | "replay" | "cancel" | "inspect_outputs" | "review_configuration" | "none"; +/** + * @maxItems 8 + */ +export type Caveats = + | [] + | [string] + | [string, string] + | [string, string, string] + | [string, string, string, string] + | [string, string, string, string, string] + | [string, string, string, string, string, string] + | [string, string, string, string, string, string, string] + | [string, string, string, string, string, string, string, string]; +/** + * @maxItems 8 + */ +export type Details = + | [] + | [string] + | [string, string] + | [string, string, string] + | [string, string, string, string] + | [string, string, string, string, string] + | [string, string, string, string, string, string] + | [string, string, string, string, string, string, string] + | [string, string, string, string, string, string, string, string]; +export type Label = string; +export type Reason = string; +export type ResultsAvailable = boolean; +export type RunId = string; +/** + * This interface was referenced by `RunExplanationResponse`'s JSON-Schema + * via the `definition` "RunState". + */ +export type RunState = + "queued" | "running" | "succeeded" | "failed" | "canceling" | "canceled" | "retrying"; +export type Summary = string; + +/** + * A bounded explanation derived only from the current normalized run status. + */ +export interface RunExplanationResponse { + available_actions?: AvailableActions; + caveats?: Caveats; + details?: Details; + next_action: RunExplanationAction; + results_available: ResultsAvailable; + run_id: RunId; + state: RunState; + summary: Summary; +} +/** + * One suggested next step, without performing a run mutation. + * + * This interface was referenced by `RunExplanationResponse`'s JSON-Schema + * via the `definition` "RunExplanationAction". + */ +export interface RunExplanationAction { + kind: RunActionKind; + label: Label; + reason: Reason; +} diff --git a/src/generated/dander-contracts/types/run-page.ts b/src/generated/dander-contracts/types/run-page.ts index f14c6f1..b89aac3 100644 --- a/src/generated/dander-contracts/types/run-page.ts +++ b/src/generated/dander-contracts/types/run-page.ts @@ -1,7 +1,8 @@ /** - * Generated from dander-platform==0.9.0rc19 (dander_platform-0.9.0rc19-py3-none-any.whl). - * Wheel SHA256: 8f1336786e46471a2048d6250008ad176ff3b62d047020872659304c7d2db552 - * Contract bundle: io.dander.control.contracts/v1 (695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3) + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ @@ -17,7 +18,31 @@ export type FailureSummary = string | null; export type FinishedAt = string | null; export type LogsAvailable = boolean; export type Models = number; +export type DecisionSchema = "io.dander.control.placement-decision/v1"; +export type EligiblePlanCount = number; +export type EstimatedCostMicrousd = number | null; +export type MaxCostMicrousd = number | null; +export type Mode = "automatic" | "manual_override" | "configured_default" | "scheduled" | "replay"; +export type PreferredLocality = string | null; +export type SelectedEnvironment = string; +export type SelectedLocality = string | null; +export type EndDate = string; +export type StartDate = string; +export type ResultSchema = "io.dander.control.execution-result-summary/v1" | null; export type RunId = string; +export type CpuMillis = number; +export type DecisionSchema1 = "io.dander.control.size-class-decision/v2"; +export type EligiblePlanCount1 = number; +export type EphemeralStorageMib = number | null; +export type EstimateObservedAt = string | null; +export type EstimateSource = string | null; +export type EstimatedInputBytes = number | null; +export type MaxInputBytes = number; +export type MemoryMib = number; +export type Mode1 = + "automatic_input" | "manual_override" | "configured_default" | "scheduled" | "replay"; +export type SelectedSizeClass = string; +export type Skipped = boolean; export type Stage = string | null; export type StartedAt = string | null; /** @@ -26,6 +51,19 @@ export type StartedAt = string | null; */ export type RunState = "queued" | "running" | "succeeded" | "failed" | "canceling" | "canceled" | "retrying"; +export type BytesBilled = number; +export type BytesProcessed = number; +export type BytesRead = number; +export type BytesWritten = number; +export type DurationMs = number; +export type ExecutionDurationMs = number; +export type OperationCount = number; +export type QueueDurationMs = number; +export type RetryCount = number; +export type RowsAffected = number; +export type RowsRead = number; +export type RowsWritten = number; +export type SpillBytes = number; /** * @maxItems 100 */ @@ -56,8 +94,80 @@ export interface RunStatusResponse { finished_at?: FinishedAt; logs_available?: LogsAvailable; models?: Models; + placement?: RunPlacementDecision | null; + repair_window?: GraphRepairWindow | null; + result_schema?: ResultSchema; run_id: RunId; + sizing?: RunSizeClassDecision | null; + skipped?: Skipped; stage?: Stage; started_at?: StartedAt; state: RunState; + telemetry?: RunTelemetrySummary | null; +} +/** + * Fixed-size explanation of the execution-plan selection used by Control. + * + * This interface was referenced by `RunPageResponse`'s JSON-Schema + * via the `definition` "RunPlacementDecision". + */ +export interface RunPlacementDecision { + decision_schema: DecisionSchema; + eligible_plan_count: EligiblePlanCount; + estimated_cost_microusd?: EstimatedCostMicrousd; + max_cost_microusd?: MaxCostMicrousd; + mode: Mode; + preferred_locality?: PreferredLocality; + selected_environment: SelectedEnvironment; + selected_locality?: SelectedLocality; +} +/** + * UTC calendar dates: start is inclusive and end is exclusive. + * + * This interface was referenced by `RunPageResponse`'s JSON-Schema + * via the `definition` "GraphRepairWindow". + */ +export interface GraphRepairWindow { + end_date: EndDate; + start_date: StartDate; +} +/** + * Fixed-size explanation of the selected execution resource class. + * + * This interface was referenced by `RunPageResponse`'s JSON-Schema + * via the `definition` "RunSizeClassDecision". + */ +export interface RunSizeClassDecision { + cpu_millis: CpuMillis; + decision_schema: DecisionSchema1; + eligible_plan_count: EligiblePlanCount1; + ephemeral_storage_mib?: EphemeralStorageMib; + estimate_observed_at?: EstimateObservedAt; + estimate_source?: EstimateSource; + estimated_input_bytes?: EstimatedInputBytes; + max_input_bytes: MaxInputBytes; + memory_mib: MemoryMib; + mode: Mode1; + selected_size_class: SelectedSizeClass; +} +/** + * Fixed-size telemetry totals; provider operation details remain in logs. + * + * This interface was referenced by `RunPageResponse`'s JSON-Schema + * via the `definition` "RunTelemetrySummary". + */ +export interface RunTelemetrySummary { + bytes_billed: BytesBilled; + bytes_processed: BytesProcessed; + bytes_read: BytesRead; + bytes_written: BytesWritten; + duration_ms: DurationMs; + execution_duration_ms: ExecutionDurationMs; + operation_count: OperationCount; + queue_duration_ms: QueueDurationMs; + retry_count: RetryCount; + rows_affected: RowsAffected; + rows_read: RowsRead; + rows_written: RowsWritten; + spill_bytes: SpillBytes; } diff --git a/src/generated/dander-contracts/types/run-request.ts b/src/generated/dander-contracts/types/run-request.ts index 5f99a28..e177ade 100644 --- a/src/generated/dander-contracts/types/run-request.ts +++ b/src/generated/dander-contracts/types/run-request.ts @@ -1,7 +1,8 @@ /** - * Generated from dander-platform==0.9.0rc19 (dander_platform-0.9.0rc19-py3-none-any.whl). - * Wheel SHA256: 8f1336786e46471a2048d6250008ad176ff3b62d047020872659304c7d2db552 - * Contract bundle: io.dander.control.contracts/v1 (695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3) + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/run-status.ts b/src/generated/dander-contracts/types/run-status.ts index a29c55f..82a90a5 100644 --- a/src/generated/dander-contracts/types/run-status.ts +++ b/src/generated/dander-contracts/types/run-status.ts @@ -1,7 +1,8 @@ /** - * Generated from dander-platform==0.9.0rc19 (dander_platform-0.9.0rc19-py3-none-any.whl). - * Wheel SHA256: 8f1336786e46471a2048d6250008ad176ff3b62d047020872659304c7d2db552 - * Contract bundle: io.dander.control.contracts/v1 (695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3) + * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl + * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ @@ -17,7 +18,31 @@ export type FailureSummary = string | null; export type FinishedAt = string | null; export type LogsAvailable = boolean; export type Models = number; +export type DecisionSchema = "io.dander.control.placement-decision/v1"; +export type EligiblePlanCount = number; +export type EstimatedCostMicrousd = number | null; +export type MaxCostMicrousd = number | null; +export type Mode = "automatic" | "manual_override" | "configured_default" | "scheduled" | "replay"; +export type PreferredLocality = string | null; +export type SelectedEnvironment = string; +export type SelectedLocality = string | null; +export type EndDate = string; +export type StartDate = string; +export type ResultSchema = "io.dander.control.execution-result-summary/v1" | null; export type RunId = string; +export type CpuMillis = number; +export type DecisionSchema1 = "io.dander.control.size-class-decision/v2"; +export type EligiblePlanCount1 = number; +export type EphemeralStorageMib = number | null; +export type EstimateObservedAt = string | null; +export type EstimateSource = string | null; +export type EstimatedInputBytes = number | null; +export type MaxInputBytes = number; +export type MemoryMib = number; +export type Mode1 = + "automatic_input" | "manual_override" | "configured_default" | "scheduled" | "replay"; +export type SelectedSizeClass = string; +export type Skipped = boolean; export type Stage = string | null; export type StartedAt = string | null; /** @@ -26,6 +51,19 @@ export type StartedAt = string | null; */ export type RunState = "queued" | "running" | "succeeded" | "failed" | "canceling" | "canceled" | "retrying"; +export type BytesBilled = number; +export type BytesProcessed = number; +export type BytesRead = number; +export type BytesWritten = number; +export type DurationMs = number; +export type ExecutionDurationMs = number; +export type OperationCount = number; +export type QueueDurationMs = number; +export type RetryCount = number; +export type RowsAffected = number; +export type RowsRead = number; +export type RowsWritten = number; +export type SpillBytes = number; export interface RunStatusResponse { affected?: Affected; @@ -40,8 +78,80 @@ export interface RunStatusResponse { finished_at?: FinishedAt; logs_available?: LogsAvailable; models?: Models; + placement?: RunPlacementDecision | null; + repair_window?: GraphRepairWindow | null; + result_schema?: ResultSchema; run_id: RunId; + sizing?: RunSizeClassDecision | null; + skipped?: Skipped; stage?: Stage; started_at?: StartedAt; state: RunState; + telemetry?: RunTelemetrySummary | null; +} +/** + * Fixed-size explanation of the execution-plan selection used by Control. + * + * This interface was referenced by `RunStatusResponse`'s JSON-Schema + * via the `definition` "RunPlacementDecision". + */ +export interface RunPlacementDecision { + decision_schema: DecisionSchema; + eligible_plan_count: EligiblePlanCount; + estimated_cost_microusd?: EstimatedCostMicrousd; + max_cost_microusd?: MaxCostMicrousd; + mode: Mode; + preferred_locality?: PreferredLocality; + selected_environment: SelectedEnvironment; + selected_locality?: SelectedLocality; +} +/** + * UTC calendar dates: start is inclusive and end is exclusive. + * + * This interface was referenced by `RunStatusResponse`'s JSON-Schema + * via the `definition` "GraphRepairWindow". + */ +export interface GraphRepairWindow { + end_date: EndDate; + start_date: StartDate; +} +/** + * Fixed-size explanation of the selected execution resource class. + * + * This interface was referenced by `RunStatusResponse`'s JSON-Schema + * via the `definition` "RunSizeClassDecision". + */ +export interface RunSizeClassDecision { + cpu_millis: CpuMillis; + decision_schema: DecisionSchema1; + eligible_plan_count: EligiblePlanCount1; + ephemeral_storage_mib?: EphemeralStorageMib; + estimate_observed_at?: EstimateObservedAt; + estimate_source?: EstimateSource; + estimated_input_bytes?: EstimatedInputBytes; + max_input_bytes: MaxInputBytes; + memory_mib: MemoryMib; + mode: Mode1; + selected_size_class: SelectedSizeClass; +} +/** + * Fixed-size telemetry totals; provider operation details remain in logs. + * + * This interface was referenced by `RunStatusResponse`'s JSON-Schema + * via the `definition` "RunTelemetrySummary". + */ +export interface RunTelemetrySummary { + bytes_billed: BytesBilled; + bytes_processed: BytesProcessed; + bytes_read: BytesRead; + bytes_written: BytesWritten; + duration_ms: DurationMs; + execution_duration_ms: ExecutionDurationMs; + operation_count: OperationCount; + queue_duration_ms: QueueDurationMs; + retry_count: RetryCount; + rows_affected: RowsAffected; + rows_read: RowsRead; + rows_written: RowsWritten; + spill_bytes: SpillBytes; } diff --git a/src/generated/dander-contracts/validators.d.ts b/src/generated/dander-contracts/validators.d.ts index 112011f..501cbc6 100644 --- a/src/generated/dander-contracts/validators.d.ts +++ b/src/generated/dander-contracts/validators.d.ts @@ -4,8 +4,11 @@ import type { CapabilitiesResponse } from "./types/capabilities"; import type { ConnectorCatalogResponse } from "./types/connector-catalog"; import type { ControlBootstrapDescriptor } from "./types/control-bootstrap"; import type { DeploymentPreviewResponse } from "./types/deployment-preview"; +import type { GraphChangePreviewResponse } from "./types/graph-change-preview"; import type { GraphCreateRequest } from "./types/graph-create"; import type { GraphPageResponse } from "./types/graph-page"; +import type { GraphRepairPreviewResponse } from "./types/graph-repair-preview"; +import type { GraphRepairWindow } from "./types/graph-repair-window"; import type { GraphResourceResponse } from "./types/graph-resource"; import type { GraphValidationResponse } from "./types/graph-validation"; import type { LogPageResponse } from "./types/log-page"; @@ -14,6 +17,7 @@ import type { OperationCatalogResponse } from "./types/operation-catalog"; import type { PipelineGraphDocument } from "./types/pipeline-graph"; import type { PluginCatalogResponse } from "./types/plugin-catalog"; import type { ProjectListResponse } from "./types/project-list"; +import type { RunExplanationResponse } from "./types/run-explanation"; import type { RunPageResponse } from "./types/run-page"; import type { RunRequest } from "./types/run-request"; import type { RunStatusResponse } from "./types/run-status"; @@ -40,8 +44,11 @@ export const validateCapabilities: ValidateFunction; export const validateConnectorCatalog: ValidateFunction; export const validateControlBootstrap: ValidateFunction; export const validateDeploymentPreview: ValidateFunction; +export const validateGraphChangePreview: ValidateFunction; export const validateGraphCreate: ValidateFunction; export const validateGraphPage: ValidateFunction; +export const validateGraphRepairPreview: ValidateFunction; +export const validateGraphRepairWindow: ValidateFunction; export const validateGraphResource: ValidateFunction; export const validateGraphValidation: ValidateFunction; export const validateLogPage: ValidateFunction; @@ -50,6 +57,7 @@ export const validateOperationCatalog: ValidateFunction; export const validatePluginCatalog: ValidateFunction; export const validateProjectList: ValidateFunction; +export const validateRunExplanation: ValidateFunction; export const validateRunPage: ValidateFunction; export const validateRunRequest: ValidateFunction; export const validateRunStatus: ValidateFunction; diff --git a/src/generated/dander-contracts/validators.js b/src/generated/dander-contracts/validators.js index 4d0a548..49dde59 100644 --- a/src/generated/dander-contracts/validators.js +++ b/src/generated/dander-contracts/validators.js @@ -1,5 +1,5 @@ -// Generated from dander-platform==0.9.0rc19; do not edit. -// Contract bundle io.dander.control.contracts/v1 (695791dfda6058d68453d9e146146d5cdda1439d86c40a7ec249cb4e14a12be3). +// Generated from dander-platform==0.9.0rc33; do not edit. +// Contract bundle io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279). "use strict"; export const validateApiError = validate20; const schema31 = { @@ -532,9 +532,13 @@ const schema34 = { "graph.edit", "graph.delete", "graph.validate", + "graph.change-preview", + "graph.repair-preview", "deployment.preview", "run.start", "run.read", + "run.explain", + "run.repair", "run.logs", "run.cancel", "run.replay", @@ -1194,9 +1198,13 @@ function validate23( data13 === "graph.edit" || data13 === "graph.delete" || data13 === "graph.validate" || + data13 === "graph.change-preview" || + data13 === "graph.repair-preview" || data13 === "deployment.preview" || data13 === "run.start" || data13 === "run.read" || + data13 === "run.explain" || + data13 === "run.repair" || data13 === "run.logs" || data13 === "run.cancel" || data13 === "run.replay" @@ -3141,116 +3149,9 @@ function validate30( } validate30.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -export const validateGraphCreate = validate31; +export const validateGraphChangePreview = validate31; const schema48 = { $defs: { - AcceptedValuesFieldTest: { - additionalProperties: false, - properties: { - field: { default: null, title: "Field", type: "null" }, - kind: { const: "accepted_values", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - to: { default: null, title: "To", type: "null" }, - values: { - items: { $ref: "#/$defs/JsonValue" }, - minItems: 1, - title: "Values", - type: "array", - }, - }, - required: ["kind", "values"], - title: "AcceptedValuesFieldTest", - type: "object", - }, - ComparisonOperator: { - description: "Closed comparison grammar for ``filter_rows``.", - enum: ["eq", "ne", "gt", "gte", "lt", "lte", "in", "not_in", "is_null", "is_not_null"], - title: "ComparisonOperator", - type: "string", - }, - ConstantTransformation: { - additionalProperties: false, - properties: { - arguments: { $ref: "#/$defs/EmptyObject" }, - constant: { $ref: "#/$defs/JsonValue" }, - expression: { default: null, title: "Expression", type: "null" }, - function: { default: null, title: "Function", type: "null" }, - inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, - kind: { const: "constant", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - }, - required: ["kind", "constant"], - title: "ConstantTransformation", - type: "object", - }, - CursorStrategyDocument: { - additionalProperties: false, - properties: { - field: { minLength: 1, title: "Field", type: "string" }, - kind: { enum: ["timestamp", "sequence", "opaque_token"], title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - params: { $ref: "#/$defs/JsonObject" }, - }, - required: ["field", "kind"], - title: "CursorStrategyDocument", - type: "object", - }, - CustomCodeTransformation: { - additionalProperties: false, - properties: { - arguments: { $ref: "#/$defs/JsonObject" }, - constant: { default: null, title: "Constant", type: "null" }, - expression: { default: null, title: "Expression", type: "null" }, - function: { - pattern: "^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*$", - title: "Function", - type: "string", - }, - inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, - kind: { const: "custom_code", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - }, - required: ["kind", "function"], - title: "CustomCodeTransformation", - type: "object", - }, - DefaultValueOperation: { - additionalProperties: false, - properties: { - kind: { const: "default_value", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - params: { $ref: "#/$defs/DefaultValueParamsDocument" }, - }, - required: ["kind", "params"], - title: "DefaultValueOperation", - type: "object", - }, - DefaultValueParamsDocument: { - additionalProperties: false, - properties: { - default: { - anyOf: [{ type: "string" }, { type: "integer" }, { type: "number" }, { type: "boolean" }], - title: "Default", - }, - field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" }, - }, - required: ["field", "default"], - title: "DefaultValueParamsDocument", - type: "object", - }, - DependencyTrigger: { - additionalProperties: false, - properties: { - cron: { default: null, title: "Cron", type: "null" }, - depends_on: { items: { type: "string" }, minItems: 1, title: "Depends On", type: "array" }, - event: { default: null, title: "Event", type: "null" }, - kind: { const: "dependency", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - }, - required: ["kind", "depends_on"], - title: "DependencyTrigger", - type: "object", - }, DestinationDocument: { additionalProperties: false, properties: { @@ -3263,311 +3164,80 @@ const schema48 = { title: "DestinationDocument", type: "object", }, - DirectTransformation: { - additionalProperties: false, - properties: { - arguments: { $ref: "#/$defs/EmptyObject" }, - constant: { default: null, title: "Constant", type: "null" }, - expression: { default: null, title: "Expression", type: "null" }, - function: { default: null, title: "Function", type: "null" }, - inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, - kind: { const: "direct", default: "direct", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - }, - title: "DirectTransformation", - type: "object", - }, - EdgeDocument: { - additionalProperties: false, - properties: { - from: { title: "From", type: "string" }, - join: { anyOf: [{ $ref: "#/$defs/JoinDocument" }, { type: "null" }], default: null }, - mappings: { - items: { $ref: "#/$defs/FieldMappingDocument" }, - title: "Mappings", - type: "array", - }, - metadata: { $ref: "#/$defs/JsonObject" }, - to: { title: "To", type: "string" }, - }, - required: ["from", "to"], - title: "EdgeDocument", - type: "object", - }, - EmptyObject: { - additionalProperties: false, - description: "A JSON object that must contain no properties.", - properties: {}, - title: "EmptyObject", - type: "object", - }, - ExecutableJoinKeyDocument: { - additionalProperties: false, - properties: { - left: { minLength: 1, title: "Left", type: "string" }, - right: { minLength: 1, title: "Right", type: "string" }, - }, - required: ["left", "right"], - title: "ExecutableJoinKeyDocument", - type: "object", - }, - ExecutableJoinType: { - description: "BigQuery join kinds supported by an executable transform node.", - enum: ["inner", "left", "right", "full"], - title: "ExecutableJoinType", - type: "string", - }, - ExpressionTransformation: { - additionalProperties: false, - properties: { - arguments: { $ref: "#/$defs/EmptyObject" }, - constant: { default: null, title: "Constant", type: "null" }, - expression: { minLength: 1, title: "Expression", type: "string" }, - function: { default: null, title: "Function", type: "null" }, - inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, - kind: { const: "expression", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - }, - required: ["kind", "expression"], - title: "ExpressionTransformation", - type: "object", - }, - ExtensionNodeDocument: { - additionalProperties: false, - not: { required: ["config", "params"] }, - properties: { - config: { $ref: "#/$defs/JsonObject" }, - cursor: { - anyOf: [{ $ref: "#/$defs/CursorStrategyDocument" }, { type: "null" }], - default: null, - }, - fields: { items: { $ref: "#/$defs/NodeFieldDocument" }, title: "Fields", type: "array" }, - id: { title: "Id", type: "string" }, - name: { title: "Name", type: "string" }, - params: { - anyOf: [{ $ref: "#/$defs/JsonObject" }, { type: "null" }], - default: null, - deprecated: true, - "x-dander-canonical-name": "config", - }, - trigger: { anyOf: [{ $ref: "#/$defs/TriggerDocument" }, { type: "null" }], default: null }, - type: { $ref: "#/$defs/ExtensionNodeType" }, - visual: { - anyOf: [{ $ref: "#/$defs/NodeVisualDocument" }, { type: "null" }], - default: null, - }, - }, - required: ["id", "type", "name"], - title: "ExtensionNodeDocument", - type: "object", - }, - ExtensionNodeType: { not: { enum: ["source", "transform", "target"] }, type: "string" }, - FieldConditionDocument: { + GraphChangeEstimates: { additionalProperties: false, properties: { - field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" }, - op: { $ref: "#/$defs/ComparisonOperator" }, - value: { - anyOf: [ - { type: "string" }, - { type: "integer" }, - { type: "number" }, - { type: "boolean" }, - { - items: { - anyOf: [ - { type: "string" }, - { type: "integer" }, - { type: "number" }, - { type: "boolean" }, - ], - }, - type: "array", - }, - { type: "null" }, - ], - default: null, - title: "Value", + cost_usd: { default: null, title: "Cost Usd", type: "null" }, + explanation: { + default: + "Unknown: this preview reads graph definitions only, not source or warehouse data.", + title: "Explanation", + type: "string", }, + rows_written: { default: null, title: "Rows Written", type: "null" }, }, - required: ["field", "op"], - title: "FieldConditionDocument", + title: "GraphChangeEstimates", type: "object", }, - FieldMappingDocument: { + GraphConnectionChange: { additionalProperties: false, properties: { - metadata: { $ref: "#/$defs/JsonObject" }, - source: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Source" }, + change: { enum: ["added", "removed", "modified"], title: "Change", type: "string" }, + source: { title: "Source", type: "string" }, target: { title: "Target", type: "string" }, - transformation: { - anyOf: [{ $ref: "#/$defs/TransformationDocument" }, { type: "null" }], - default: null, - }, - }, - required: ["target"], - title: "FieldMappingDocument", - type: "object", - }, - FieldTestDocument: { - anyOf: [ - { $ref: "#/$defs/NotNullFieldTest" }, - { $ref: "#/$defs/UniqueFieldTest" }, - { $ref: "#/$defs/AcceptedValuesFieldTest" }, - { $ref: "#/$defs/RelationshipsFieldTest" }, - ], - }, - FilterRowsOperation: { - additionalProperties: false, - properties: { - kind: { const: "filter_rows", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - params: { $ref: "#/$defs/FilterRowsParamsDocument" }, - }, - required: ["kind", "params"], - title: "FilterRowsOperation", - type: "object", - }, - FilterRowsParamsDocument: { - additionalProperties: false, - properties: { - conditions: { - items: { $ref: "#/$defs/FieldConditionDocument" }, - minItems: 1, - title: "Conditions", - type: "array", - }, - logic: { $ref: "#/$defs/MatchLogic", default: "all" }, - }, - required: ["conditions"], - title: "FilterRowsParamsDocument", - type: "object", - }, - GraphNodeDocument: { - anyOf: [ - { $ref: "#/$defs/SourceNodeDocument" }, - { $ref: "#/$defs/TransformNodeDocument" }, - { $ref: "#/$defs/TargetNodeDocument" }, - { $ref: "#/$defs/ExtensionNodeDocument" }, - ], - }, - HttpMethod: { - description: - "The closed set of HTTP methods a `RequestSpec` may declare.\n\nA `StrEnum` (matching the `TransformationKind`/`JoinType` convention in `graph.py`) so callers\nget a named, importable type that still serializes to/from its plain string value stably in\nYAML and JSON. An out-of-set value fails validation with a clear error at the Pydantic\nboundary. `HEAD`/`OPTIONS` are intentionally omitted (no source currently needs them); extend\nby adding a member later without touching callers.\n\nAttributes:\n GET: Retrieve a resource. The default method (a simple GET needs no explicit spec).\n POST: Create a resource / submit a query body.\n PUT: Replace a resource.\n PATCH: Partially update a resource.\n DELETE: Remove a resource.", - enum: ["GET", "POST", "PUT", "PATCH", "DELETE"], - title: "HttpMethod", - type: "string", - }, - JoinDocument: { - additionalProperties: false, - properties: { - keys: { - items: { $ref: "#/$defs/JoinKeyPairDocument" }, - minItems: 1, - title: "Keys", - type: "array", - }, - metadata: { $ref: "#/$defs/JsonObject" }, - type: { enum: ["inner", "left", "right", "full"], title: "Type", type: "string" }, - }, - required: ["type", "keys"], - title: "JoinDocument", - type: "object", - }, - JoinKeyPairDocument: { - additionalProperties: false, - properties: { - left: { title: "Left", type: "string" }, - right: { title: "Right", type: "string" }, - }, - required: ["left", "right"], - title: "JoinKeyPairDocument", - type: "object", - }, - JsonObject: { additionalProperties: { $ref: "#/$defs/JsonValue" }, type: "object" }, - JsonValue: {}, - ManualTrigger: { - additionalProperties: false, - properties: { - cron: { default: null, title: "Cron", type: "null" }, - depends_on: { items: { type: "string" }, maxItems: 0, title: "Depends On", type: "array" }, - event: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Event" }, - kind: { const: "manual", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, }, - required: ["kind"], - title: "ManualTrigger", + required: ["source", "target", "change"], + title: "GraphConnectionChange", type: "object", }, - MatchLogic: { - description: "How a filter's flat condition list combines.", - enum: ["all", "any"], - title: "MatchLogic", - type: "string", - }, - NodeFieldDocument: { + GraphNodeChange: { additionalProperties: false, properties: { - cast_to: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Cast To" }, - description: { - anyOf: [{ type: "string" }, { type: "null" }], - default: null, - title: "Description", + affects_data: { title: "Affects Data", type: "boolean" }, + change: { + enum: ["added", "removed", "modified", "layout_only"], + title: "Change", + type: "string", }, - extensions: { - items: { $ref: "#/$defs/ProviderExtension" }, - title: "Extensions", + changed_properties: { + default: [], + items: { type: "string" }, + title: "Changed Properties", type: "array", }, - metadata: { $ref: "#/$defs/JsonObject" }, name: { title: "Name", type: "string" }, - nullable: { default: true, title: "Nullable", type: "boolean" }, - tests: { items: { $ref: "#/$defs/FieldTestDocument" }, title: "Tests", type: "array" }, - type: { title: "Type", type: "string" }, + node_id: { title: "Node Id", type: "string" }, }, - required: ["name", "type"], - title: "NodeFieldDocument", + required: ["node_id", "name", "change", "affects_data"], + title: "GraphNodeChange", type: "object", }, - NodeVisualDocument: { + GraphOutputImpact: { additionalProperties: false, properties: { - color: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Color" }, - icon: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Icon" }, - position: { - anyOf: [{ $ref: "#/$defs/PositionDocument" }, { type: "null" }], - default: null, - }, + affected: { title: "Affected", type: "boolean" }, + after: { anyOf: [{ $ref: "#/$defs/GraphOutputState" }, { type: "null" }] }, + before: { anyOf: [{ $ref: "#/$defs/GraphOutputState" }, { type: "null" }] }, + effect: { title: "Effect", type: "string" }, + name: { title: "Name", type: "string" }, + node_id: { title: "Node Id", type: "string" }, }, - title: "NodeVisualDocument", + required: ["node_id", "name", "affected", "before", "after", "effect"], + title: "GraphOutputImpact", type: "object", }, - NotNullFieldTest: { + GraphOutputState: { additionalProperties: false, + description: + "Only declared output coordinates and field names, never arbitrary node configuration.", properties: { - field: { default: null, title: "Field", type: "null" }, - kind: { const: "not_null", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - to: { default: null, title: "To", type: "null" }, - values: { - items: { $ref: "#/$defs/JsonValue" }, - maxItems: 0, - title: "Values", - type: "array", - }, + field_names: { items: { type: "string" }, title: "Field Names", type: "array" }, + writer: { anyOf: [{ $ref: "#/$defs/WriterDocument" }, { type: "null" }] }, }, - required: ["kind"], - title: "NotNullFieldTest", + required: ["writer", "field_names"], + title: "GraphOutputState", type: "object", }, - OperationDocument: { - anyOf: [ - { $ref: "#/$defs/TruncateStringOperation" }, - { $ref: "#/$defs/TrimWhitespaceOperation" }, - { $ref: "#/$defs/DefaultValueOperation" }, - { $ref: "#/$defs/FilterRowsOperation" }, - ], - }, PartitioningDocument: { additionalProperties: false, properties: { @@ -3589,428 +3259,265 @@ const schema48 = { title: "PartitioningType", type: "string", }, - PipelineGraphDocument: { - additionalProperties: false, - description: - "Canonical graph transport whose construction reuses Dander semantic validation.", - properties: { - edges: { items: { $ref: "#/$defs/EdgeDocument" }, title: "Edges", type: "array" }, - name: { title: "Name", type: "string" }, - nodes: { items: { $ref: "#/$defs/GraphNodeDocument" }, title: "Nodes", type: "array" }, - trigger: { anyOf: [{ $ref: "#/$defs/TriggerDocument" }, { type: "null" }], default: null }, - }, - required: ["name"], - title: "PipelineGraphDocument", - type: "object", - }, - PositionDocument: { - additionalProperties: false, - properties: { x: { title: "X", type: "number" }, y: { title: "Y", type: "number" } }, - required: ["x", "y"], - title: "PositionDocument", - type: "object", - }, - ProviderExtension: { - additionalProperties: false, - description: "One deterministic provider-specific schema annotation, never a credential.", - properties: { - name: { title: "Name", type: "string" }, - provider: { title: "Provider", type: "string" }, - value: { - anyOf: [{ type: "string" }, { type: "integer" }, { type: "number" }, { type: "boolean" }], - title: "Value", - }, - }, - required: ["provider", "name", "value"], - title: "ProviderExtension", - type: "object", - }, - RelationshipsFieldTest: { - additionalProperties: false, - properties: { - field: { minLength: 1, title: "Field", type: "string" }, - kind: { const: "relationships", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - to: { minLength: 1, title: "To", type: "string" }, - values: { - items: { $ref: "#/$defs/JsonValue" }, - maxItems: 0, - title: "Values", - type: "array", - }, - }, - required: ["kind", "to", "field"], - title: "RelationshipsFieldTest", - type: "object", - }, - RequestSpecDocument: { - additionalProperties: false, - properties: { - body: { - anyOf: [{ $ref: "#/$defs/JsonObject" }, { type: "string" }, { type: "null" }], - default: null, - title: "Body", - }, - headers: { additionalProperties: { type: "string" }, title: "Headers", type: "object" }, - method: { $ref: "#/$defs/HttpMethod", default: "GET" }, - query_params: { - additionalProperties: { type: "string" }, - title: "Query Params", - type: "object", - }, - }, - title: "RequestSpecDocument", - type: "object", - }, - ScheduleTrigger: { - additionalProperties: false, - properties: { - cron: { minLength: 1, title: "Cron", type: "string" }, - depends_on: { items: { type: "string" }, maxItems: 0, title: "Depends On", type: "array" }, - event: { default: null, title: "Event", type: "null" }, - kind: { const: "schedule", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - }, - required: ["kind", "cron"], - title: "ScheduleTrigger", - type: "object", - }, SchemaEvolution: { description: "How a writer handles declared columns absent from an existing target.", enum: ["strict", "additive"], title: "SchemaEvolution", type: "string", }, - SourceNodeConfigDocument: { - additionalProperties: { $ref: "#/$defs/JsonValue" }, + WriteMode: { + description: "Supported load strategies.", + enum: ["scd1", "scd2", "snapshot", "incremental", "replace"], + title: "WriteMode", + type: "string", + }, + WriterDocument: { + additionalProperties: false, properties: { - connector: { + clustering: { items: { type: "string" }, maxItems: 4, title: "Clustering", type: "array" }, + cursor_field: { anyOf: [{ type: "string" }, { type: "null" }], default: null, - title: "Connector", + title: "Cursor Field", }, - endpoint: { - anyOf: [{ type: "string" }, { type: "null" }], - default: null, - title: "Endpoint", + destination: { $ref: "#/$defs/DestinationDocument" }, + max_batch_rows: { + default: 10000, + exclusiveMinimum: 0, + maximum: 100000, + title: "Max Batch Rows", + type: "integer", }, - request: { - anyOf: [{ $ref: "#/$defs/RequestSpecDocument" }, { type: "null" }], + partitioning: { + anyOf: [{ $ref: "#/$defs/PartitioningDocument" }, { type: "null" }], default: null, }, + schema_evolution: { $ref: "#/$defs/SchemaEvolution", default: "strict" }, + transport: { + default: "load_job", + enum: ["load_job", "storage_write", "copy"], + title: "Transport", + type: "string", + }, + write_mode: { $ref: "#/$defs/WriteMode" }, }, - title: "SourceNodeConfigDocument", + required: ["write_mode", "destination"], + title: "WriterDocument", type: "object", }, - SourceNodeDocument: { - additionalProperties: false, - not: { required: ["config", "params"] }, - properties: { - config: { $ref: "#/$defs/SourceNodeConfigDocument" }, - cursor: { - anyOf: [{ $ref: "#/$defs/CursorStrategyDocument" }, { type: "null" }], - default: null, - }, - fields: { items: { $ref: "#/$defs/NodeFieldDocument" }, title: "Fields", type: "array" }, - id: { title: "Id", type: "string" }, - name: { title: "Name", type: "string" }, - params: { - anyOf: [{ $ref: "#/$defs/SourceNodeConfigDocument" }, { type: "null" }], - default: null, - deprecated: true, - "x-dander-canonical-name": "config", - }, - trigger: { anyOf: [{ $ref: "#/$defs/TriggerDocument" }, { type: "null" }], default: null }, - type: { const: "source", title: "Type", type: "string" }, - visual: { - anyOf: [{ $ref: "#/$defs/NodeVisualDocument" }, { type: "null" }], - default: null, - }, - }, - required: ["id", "type", "name"], - title: "SourceNodeDocument", - type: "object", - }, - TargetNodeConfigDocument: { - additionalProperties: { $ref: "#/$defs/JsonValue" }, - properties: { - writer: { anyOf: [{ $ref: "#/$defs/WriterDocument" }, { type: "null" }], default: null }, - }, - title: "TargetNodeConfigDocument", - type: "object", - }, - TargetNodeDocument: { - additionalProperties: false, - not: { required: ["config", "params"] }, - properties: { - config: { $ref: "#/$defs/TargetNodeConfigDocument" }, - cursor: { - anyOf: [{ $ref: "#/$defs/CursorStrategyDocument" }, { type: "null" }], - default: null, - }, - fields: { items: { $ref: "#/$defs/NodeFieldDocument" }, title: "Fields", type: "array" }, - id: { title: "Id", type: "string" }, - name: { title: "Name", type: "string" }, - params: { - anyOf: [{ $ref: "#/$defs/TargetNodeConfigDocument" }, { type: "null" }], - default: null, - deprecated: true, - "x-dander-canonical-name": "config", - }, - trigger: { anyOf: [{ $ref: "#/$defs/TriggerDocument" }, { type: "null" }], default: null }, - type: { const: "target", title: "Type", type: "string" }, - visual: { - anyOf: [{ $ref: "#/$defs/NodeVisualDocument" }, { type: "null" }], - default: null, - }, - }, - required: ["id", "type", "name"], - title: "TargetNodeDocument", - type: "object", - }, - TransformJoinDocument: { - additionalProperties: false, - properties: { - keys: { - items: { $ref: "#/$defs/ExecutableJoinKeyDocument" }, - minItems: 1, - title: "Keys", - type: "array", - }, - left_input: { minLength: 1, title: "Left Input", type: "string" }, - right_input: { minLength: 1, title: "Right Input", type: "string" }, - type: { $ref: "#/$defs/ExecutableJoinType" }, - }, - required: ["left_input", "right_input", "type", "keys"], - title: "TransformJoinDocument", - type: "object", + }, + $id: "urn:dander:control:contracts:v1:graph-change-preview", + $schema: "https://json-schema.org/draft/2020-12/schema", + additionalProperties: false, + description: "Static changes and potential downstream effects; a run still executes all outputs.", + properties: { + affected_outputs: { items: { type: "string" }, title: "Affected Outputs", type: "array" }, + baseline_content_sha256: { + pattern: "^[0-9a-f]{64}$", + title: "Baseline Content Sha256", + type: "string", }, - TransformNodeConfigDocument: { - additionalProperties: { $ref: "#/$defs/JsonValue" }, - properties: { - join: { - anyOf: [{ $ref: "#/$defs/TransformJoinDocument" }, { type: "null" }], - default: null, - }, - operations: { - items: { $ref: "#/$defs/OperationDocument" }, - title: "Operations", - type: "array", - }, - }, - title: "TransformNodeConfigDocument", - type: "object", + candidate_content_sha256: { + pattern: "^[0-9a-f]{64}$", + title: "Candidate Content Sha256", + type: "string", }, - TransformNodeDocument: { - additionalProperties: false, - not: { required: ["config", "params"] }, - properties: { - config: { $ref: "#/$defs/TransformNodeConfigDocument" }, - cursor: { - anyOf: [{ $ref: "#/$defs/CursorStrategyDocument" }, { type: "null" }], - default: null, - }, - fields: { items: { $ref: "#/$defs/NodeFieldDocument" }, title: "Fields", type: "array" }, - id: { title: "Id", type: "string" }, - name: { title: "Name", type: "string" }, - params: { - anyOf: [{ $ref: "#/$defs/TransformNodeConfigDocument" }, { type: "null" }], - default: null, - deprecated: true, - "x-dander-canonical-name": "config", - }, - trigger: { anyOf: [{ $ref: "#/$defs/TriggerDocument" }, { type: "null" }], default: null }, - type: { const: "transform", title: "Type", type: "string" }, - visual: { - anyOf: [{ $ref: "#/$defs/NodeVisualDocument" }, { type: "null" }], - default: null, - }, - }, - required: ["id", "type", "name"], - title: "TransformNodeDocument", - type: "object", + connection_changes: { + items: { $ref: "#/$defs/GraphConnectionChange" }, + title: "Connection Changes", + type: "array", }, - TransformationDocument: { - anyOf: [ - { $ref: "#/$defs/DirectTransformation" }, - { $ref: "#/$defs/ExpressionTransformation" }, - { $ref: "#/$defs/ConstantTransformation" }, - { $ref: "#/$defs/CustomCodeTransformation" }, - ], + estimates: { $ref: "#/$defs/GraphChangeEstimates" }, + graph_properties_changed: { + items: { type: "string" }, + title: "Graph Properties Changed", + type: "array", }, - TriggerDocument: { - anyOf: [ - { $ref: "#/$defs/ScheduleTrigger" }, - { $ref: "#/$defs/DependencyTrigger" }, - { $ref: "#/$defs/ManualTrigger" }, + limitations: { + default: [ + "Static impact within this graph only; external consumers are not inspected.", + "Affected outputs describe changed definitions, not a selection of outputs to execute. A full run writes every configured output, including unchanged outputs.", + "Declared write behavior is not proof that this graph can execute. Runtime validation and provider checks still apply; the current graph runtime supports replace targets.", + "Saving a graph does not write or delete warehouse data.", ], + items: { type: "string" }, + title: "Limitations", + type: "array", }, - TrimWhitespaceOperation: { - additionalProperties: false, - properties: { - kind: { const: "trim_whitespace", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - params: { $ref: "#/$defs/TrimWhitespaceParamsDocument" }, - }, - required: ["kind", "params"], - title: "TrimWhitespaceOperation", - type: "object", - }, - TrimWhitespaceParamsDocument: { - additionalProperties: false, - properties: { - field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" }, - }, - required: ["field"], - title: "TrimWhitespaceParamsDocument", - type: "object", - }, - TruncateStringOperation: { - additionalProperties: false, - properties: { - kind: { const: "truncate_string", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - params: { $ref: "#/$defs/TruncateStringParamsDocument" }, - }, - required: ["kind", "params"], - title: "TruncateStringOperation", - type: "object", - }, - TruncateStringParamsDocument: { - additionalProperties: false, - properties: { - field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" }, - max_length: { minimum: 0, title: "Max Length", type: "integer" }, - }, - required: ["field", "max_length"], - title: "TruncateStringParamsDocument", - type: "object", - }, - UniqueFieldTest: { - additionalProperties: false, - properties: { - field: { default: null, title: "Field", type: "null" }, - kind: { const: "unique", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - to: { default: null, title: "To", type: "null" }, - values: { - items: { $ref: "#/$defs/JsonValue" }, - maxItems: 0, - title: "Values", - type: "array", - }, - }, - required: ["kind"], - title: "UniqueFieldTest", - type: "object", + node_changes: { + items: { $ref: "#/$defs/GraphNodeChange" }, + title: "Node Changes", + type: "array", }, - WriteMode: { - description: "Supported load strategies.", - enum: ["scd1", "scd2", "snapshot", "incremental", "replace"], - title: "WriteMode", + outputs: { items: { $ref: "#/$defs/GraphOutputImpact" }, title: "Outputs", type: "array" }, + run_output_ids: { items: { type: "string" }, title: "Run Output Ids", type: "array" }, + }, + required: [ + "baseline_content_sha256", + "candidate_content_sha256", + "graph_properties_changed", + "node_changes", + "connection_changes", + "affected_outputs", + "outputs", + "run_output_ids", + ], + title: "GraphChangePreviewResponse", + type: "object", +}; +const schema49 = { + additionalProperties: false, + properties: { + change: { enum: ["added", "removed", "modified"], title: "Change", type: "string" }, + source: { title: "Source", type: "string" }, + target: { title: "Target", type: "string" }, + }, + required: ["source", "target", "change"], + title: "GraphConnectionChange", + type: "object", +}; +const schema50 = { + additionalProperties: false, + properties: { + cost_usd: { default: null, title: "Cost Usd", type: "null" }, + explanation: { + default: "Unknown: this preview reads graph definitions only, not source or warehouse data.", + title: "Explanation", type: "string", }, - WriterDocument: { - additionalProperties: false, - properties: { - clustering: { items: { type: "string" }, maxItems: 4, title: "Clustering", type: "array" }, - cursor_field: { - anyOf: [{ type: "string" }, { type: "null" }], - default: null, - title: "Cursor Field", - }, - destination: { $ref: "#/$defs/DestinationDocument" }, - max_batch_rows: { - default: 10000, - exclusiveMinimum: 0, - maximum: 100000, - title: "Max Batch Rows", - type: "integer", - }, - partitioning: { - anyOf: [{ $ref: "#/$defs/PartitioningDocument" }, { type: "null" }], - default: null, - }, - schema_evolution: { $ref: "#/$defs/SchemaEvolution", default: "strict" }, - transport: { - default: "load_job", - enum: ["load_job", "storage_write", "copy"], - title: "Transport", - type: "string", - }, - write_mode: { $ref: "#/$defs/WriteMode" }, - }, - required: ["write_mode", "destination"], - title: "WriterDocument", - type: "object", - }, + rows_written: { default: null, title: "Rows Written", type: "null" }, }, - $id: "urn:dander:control:contracts:v1:graph-create", - $schema: "https://json-schema.org/draft/2020-12/schema", + title: "GraphChangeEstimates", + type: "object", +}; +const schema51 = { additionalProperties: false, - description: "Create one named graph through the hosted project collection route.", properties: { - document: { $ref: "#/$defs/PipelineGraphDocument" }, - graph: { title: "Graph", type: "string" }, + affects_data: { title: "Affects Data", type: "boolean" }, + change: { + enum: ["added", "removed", "modified", "layout_only"], + title: "Change", + type: "string", + }, + changed_properties: { + default: [], + items: { type: "string" }, + title: "Changed Properties", + type: "array", + }, + name: { title: "Name", type: "string" }, + node_id: { title: "Node Id", type: "string" }, }, - required: ["graph", "document"], - title: "GraphCreateRequest", + required: ["node_id", "name", "change", "affects_data"], + title: "GraphNodeChange", type: "object", }; -const schema49 = { +const schema52 = { additionalProperties: false, - description: "Canonical graph transport whose construction reuses Dander semantic validation.", properties: { - edges: { items: { $ref: "#/$defs/EdgeDocument" }, title: "Edges", type: "array" }, + affected: { title: "Affected", type: "boolean" }, + after: { anyOf: [{ $ref: "#/$defs/GraphOutputState" }, { type: "null" }] }, + before: { anyOf: [{ $ref: "#/$defs/GraphOutputState" }, { type: "null" }] }, + effect: { title: "Effect", type: "string" }, name: { title: "Name", type: "string" }, - nodes: { items: { $ref: "#/$defs/GraphNodeDocument" }, title: "Nodes", type: "array" }, - trigger: { anyOf: [{ $ref: "#/$defs/TriggerDocument" }, { type: "null" }], default: null }, + node_id: { title: "Node Id", type: "string" }, }, - required: ["name"], - title: "PipelineGraphDocument", + required: ["node_id", "name", "affected", "before", "after", "effect"], + title: "GraphOutputImpact", type: "object", }; -const schema50 = { +const schema53 = { additionalProperties: false, + description: + "Only declared output coordinates and field names, never arbitrary node configuration.", properties: { - from: { title: "From", type: "string" }, - join: { anyOf: [{ $ref: "#/$defs/JoinDocument" }, { type: "null" }], default: null }, - mappings: { items: { $ref: "#/$defs/FieldMappingDocument" }, title: "Mappings", type: "array" }, - metadata: { $ref: "#/$defs/JsonObject" }, - to: { title: "To", type: "string" }, + field_names: { items: { type: "string" }, title: "Field Names", type: "array" }, + writer: { anyOf: [{ $ref: "#/$defs/WriterDocument" }, { type: "null" }] }, }, - required: ["from", "to"], - title: "EdgeDocument", + required: ["writer", "field_names"], + title: "GraphOutputState", type: "object", }; -const schema51 = { +const schema54 = { additionalProperties: false, properties: { - keys: { - items: { $ref: "#/$defs/JoinKeyPairDocument" }, - minItems: 1, - title: "Keys", - type: "array", + clustering: { items: { type: "string" }, maxItems: 4, title: "Clustering", type: "array" }, + cursor_field: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Cursor Field", }, - metadata: { $ref: "#/$defs/JsonObject" }, - type: { enum: ["inner", "left", "right", "full"], title: "Type", type: "string" }, + destination: { $ref: "#/$defs/DestinationDocument" }, + max_batch_rows: { + default: 10000, + exclusiveMinimum: 0, + maximum: 100000, + title: "Max Batch Rows", + type: "integer", + }, + partitioning: { + anyOf: [{ $ref: "#/$defs/PartitioningDocument" }, { type: "null" }], + default: null, + }, + schema_evolution: { $ref: "#/$defs/SchemaEvolution", default: "strict" }, + transport: { + default: "load_job", + enum: ["load_job", "storage_write", "copy"], + title: "Transport", + type: "string", + }, + write_mode: { $ref: "#/$defs/WriteMode" }, }, - required: ["type", "keys"], - title: "JoinDocument", + required: ["write_mode", "destination"], + title: "WriterDocument", type: "object", }; -const schema52 = { +const schema55 = { additionalProperties: false, properties: { - left: { title: "Left", type: "string" }, - right: { title: "Right", type: "string" }, + business_key: { items: { type: "string" }, title: "Business Key", type: "array" }, + dataset: { minLength: 1, title: "Dataset", type: "string" }, + project: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Project" }, + table: { minLength: 1, title: "Table", type: "string" }, }, - required: ["left", "right"], - title: "JoinKeyPairDocument", + required: ["dataset", "table"], + title: "DestinationDocument", + type: "object", +}; +const schema58 = { + description: "How a writer handles declared columns absent from an existing target.", + enum: ["strict", "additive"], + title: "SchemaEvolution", + type: "string", +}; +const schema59 = { + description: "Supported load strategies.", + enum: ["scd1", "scd2", "snapshot", "incremental", "replace"], + title: "WriteMode", + type: "string", +}; +const func3 = require("ajv/dist/runtime/ucs2length").default; +const schema56 = { + additionalProperties: false, + properties: { + field: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Field" }, + granularity: { $ref: "#/$defs/PartitioningType", default: "day" }, + require_partition_filter: { + default: false, + title: "Require Partition Filter", + type: "boolean", + }, + }, + title: "PartitioningDocument", type: "object", }; -const schema53 = { additionalProperties: { $ref: "#/$defs/JsonValue" }, type: "object" }; -const schema54 = {}; +const schema57 = { + description: + "The closed set of time-unit partitioning granularities a `PartitioningSpec` may declare.\n\nA `StrEnum` (matching the `WriteMode`/`TransformationKind`/`JoinType` convention elsewhere in\n`dander.pipeline`), so it serializes to/from its plain string value stably in YAML and JSON;\nan out-of-set value fails validation with a clear `ValidationError`. Scope is deliberately\nlimited to BigQuery time-unit partitioning — integer-range partitioning is a deferred future\nmember (see `steering/02-engineering.md` on avoiding speculative generality).\n\nAttributes:\n HOUR: Hourly partitions.\n DAY: Daily partitions — the common case and BigQuery's default granularity.\n MONTH: Monthly partitions.\n YEAR: Yearly partitions.", + enum: ["hour", "day", "month", "year"], + title: "PartitioningType", + type: "string", +}; function validate35( data, @@ -4026,8 +3533,140 @@ function validate35( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { + for (const key0 in data) { + if (!(key0 === "field" || key0 === "granularity" || key0 === "require_partition_filter")) { + const err0 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + } + if (data.field !== undefined) { + let data0 = data.field; + const _errs3 = errors; + let valid1 = false; + const _errs4 = errors; + if (typeof data0 !== "string") { + const err1 = { + instancePath: instancePath + "/field", + schemaPath: "#/properties/field/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + var _valid0 = _errs4 === errors; + valid1 = valid1 || _valid0; + const _errs6 = errors; + if (data0 !== null) { + const err2 = { + instancePath: instancePath + "/field", + schemaPath: "#/properties/field/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + var _valid0 = _errs6 === errors; + valid1 = valid1 || _valid0; + if (!valid1) { + const err3 = { + instancePath: instancePath + "/field", + schemaPath: "#/properties/field/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } else { + errors = _errs3; + if (vErrors !== null) { + if (_errs3) { + vErrors.length = _errs3; + } else { + vErrors = null; + } + } + } + } + if (data.granularity !== undefined) { + let data1 = data.granularity; + if (typeof data1 !== "string") { + const err4 = { + instancePath: instancePath + "/granularity", + schemaPath: "#/$defs/PartitioningType/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + if (!(data1 === "hour" || data1 === "day" || data1 === "month" || data1 === "year")) { + const err5 = { + instancePath: instancePath + "/granularity", + schemaPath: "#/$defs/PartitioningType/enum", + keyword: "enum", + params: { allowedValues: schema57.enum }, + message: "must be equal to one of the allowed values", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + } + if (data.require_partition_filter !== undefined) { + if (typeof data.require_partition_filter !== "boolean") { + const err6 = { + instancePath: instancePath + "/require_partition_filter", + schemaPath: "#/properties/require_partition_filter/type", + keyword: "type", + params: { type: "boolean" }, + message: "must be boolean", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + } } else { - const err0 = { + const err7 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -4035,9 +3674,9 @@ function validate35( message: "must be object", }; if (vErrors === null) { - vErrors = [err0]; + vErrors = [err7]; } else { - vErrors.push(err0); + vErrors.push(err7); } errors++; } @@ -4060,13 +3699,13 @@ function validate34( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.type === undefined) { + if (data.write_mode === undefined) { const err0 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "type" }, - message: "must have required property '" + "type" + "'", + params: { missingProperty: "write_mode" }, + message: "must have required property '" + "write_mode" + "'", }; if (vErrors === null) { vErrors = [err0]; @@ -4075,13 +3714,13 @@ function validate34( } errors++; } - if (data.keys === undefined) { + if (data.destination === undefined) { const err1 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "keys" }, - message: "must have required property '" + "keys" + "'", + params: { missingProperty: "destination" }, + message: "must have required property '" + "destination" + "'", }; if (vErrors === null) { vErrors = [err1]; @@ -4091,7 +3730,16 @@ function validate34( errors++; } for (const key0 in data) { - if (!(key0 === "keys" || key0 === "metadata" || key0 === "type")) { + if (!( + key0 === "clustering" || + key0 === "cursor_field" || + key0 === "destination" || + key0 === "max_batch_rows" || + key0 === "partitioning" || + key0 === "schema_evolution" || + key0 === "transport" || + key0 === "write_mode" + )) { const err2 = { instancePath, schemaPath: "#/additionalProperties", @@ -4107,16 +3755,16 @@ function validate34( errors++; } } - if (data.keys !== undefined) { - let data0 = data.keys; + if (data.clustering !== undefined) { + let data0 = data.clustering; if (Array.isArray(data0)) { - if (data0.length < 1) { + if (data0.length > 4) { const err3 = { - instancePath: instancePath + "/keys", - schemaPath: "#/properties/keys/minItems", - keyword: "minItems", - params: { limit: 1 }, - message: "must NOT have fewer than 1 items", + instancePath: instancePath + "/clustering", + schemaPath: "#/properties/clustering/maxItems", + keyword: "maxItems", + params: { limit: 4 }, + message: "must NOT have more than 4 items", }; if (vErrors === null) { vErrors = [err3]; @@ -4127,433 +3775,404 @@ function validate34( } const len0 = data0.length; for (let i0 = 0; i0 < len0; i0++) { - let data1 = data0[i0]; - if (data1 && typeof data1 == "object" && !Array.isArray(data1)) { - if (data1.left === undefined) { - const err4 = { - instancePath: instancePath + "/keys/" + i0, - schemaPath: "#/$defs/JoinKeyPairDocument/required", - keyword: "required", - params: { missingProperty: "left" }, - message: "must have required property '" + "left" + "'", - }; - if (vErrors === null) { - vErrors = [err4]; - } else { - vErrors.push(err4); - } - errors++; - } - if (data1.right === undefined) { - const err5 = { - instancePath: instancePath + "/keys/" + i0, - schemaPath: "#/$defs/JoinKeyPairDocument/required", - keyword: "required", - params: { missingProperty: "right" }, - message: "must have required property '" + "right" + "'", - }; - if (vErrors === null) { - vErrors = [err5]; - } else { - vErrors.push(err5); - } - errors++; - } - for (const key1 in data1) { - if (!(key1 === "left" || key1 === "right")) { - const err6 = { - instancePath: instancePath + "/keys/" + i0, - schemaPath: "#/$defs/JoinKeyPairDocument/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key1 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err6]; - } else { - vErrors.push(err6); - } - errors++; - } - } - if (data1.left !== undefined) { - if (typeof data1.left !== "string") { - const err7 = { - instancePath: instancePath + "/keys/" + i0 + "/left", - schemaPath: "#/$defs/JoinKeyPairDocument/properties/left/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; - } - } - if (data1.right !== undefined) { - if (typeof data1.right !== "string") { - const err8 = { - instancePath: instancePath + "/keys/" + i0 + "/right", - schemaPath: "#/$defs/JoinKeyPairDocument/properties/right/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err8]; - } else { - vErrors.push(err8); - } - errors++; - } - } - } else { - const err9 = { - instancePath: instancePath + "/keys/" + i0, - schemaPath: "#/$defs/JoinKeyPairDocument/type", + if (typeof data0[i0] !== "string") { + const err4 = { + instancePath: instancePath + "/clustering/" + i0, + schemaPath: "#/properties/clustering/items/type", keyword: "type", - params: { type: "object" }, - message: "must be object", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err9]; + vErrors = [err4]; } else { - vErrors.push(err9); + vErrors.push(err4); } errors++; } } } else { - const err10 = { - instancePath: instancePath + "/keys", - schemaPath: "#/properties/keys/type", + const err5 = { + instancePath: instancePath + "/clustering", + schemaPath: "#/properties/clustering/type", keyword: "type", params: { type: "array" }, message: "must be array", }; if (vErrors === null) { - vErrors = [err10]; + vErrors = [err5]; } else { - vErrors.push(err10); + vErrors.push(err5); } errors++; } } - if (data.metadata !== undefined) { - if ( - !validate35(data.metadata, { - instancePath: instancePath + "/metadata", - parentData: data, - parentDataProperty: "metadata", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); - errors = vErrors.length; - } - } - if (data.type !== undefined) { - let data5 = data.type; - if (typeof data5 !== "string") { - const err11 = { - instancePath: instancePath + "/type", - schemaPath: "#/properties/type/type", + if (data.cursor_field !== undefined) { + let data2 = data.cursor_field; + const _errs7 = errors; + let valid3 = false; + const _errs8 = errors; + if (typeof data2 !== "string") { + const err6 = { + instancePath: instancePath + "/cursor_field", + schemaPath: "#/properties/cursor_field/anyOf/0/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err11]; + vErrors = [err6]; } else { - vErrors.push(err11); + vErrors.push(err6); } errors++; } - if (!(data5 === "inner" || data5 === "left" || data5 === "right" || data5 === "full")) { - const err12 = { - instancePath: instancePath + "/type", - schemaPath: "#/properties/type/enum", - keyword: "enum", - params: { allowedValues: schema51.properties.type.enum }, - message: "must be equal to one of the allowed values", + var _valid0 = _errs8 === errors; + valid3 = valid3 || _valid0; + const _errs10 = errors; + if (data2 !== null) { + const err7 = { + instancePath: instancePath + "/cursor_field", + schemaPath: "#/properties/cursor_field/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", }; if (vErrors === null) { - vErrors = [err12]; + vErrors = [err7]; } else { - vErrors.push(err12); + vErrors.push(err7); } errors++; } - } - } else { - const err13 = { - instancePath, - schemaPath: "#/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", - }; - if (vErrors === null) { - vErrors = [err13]; - } else { - vErrors.push(err13); - } - errors++; - } - validate34.errors = vErrors; - return errors === 0; -} -validate34.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -const schema55 = { - additionalProperties: false, - properties: { - metadata: { $ref: "#/$defs/JsonObject" }, - source: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Source" }, - target: { title: "Target", type: "string" }, - transformation: { - anyOf: [{ $ref: "#/$defs/TransformationDocument" }, { type: "null" }], - default: null, - }, - }, - required: ["target"], - title: "FieldMappingDocument", - type: "object", -}; -const schema56 = { - anyOf: [ - { $ref: "#/$defs/DirectTransformation" }, - { $ref: "#/$defs/ExpressionTransformation" }, - { $ref: "#/$defs/ConstantTransformation" }, - { $ref: "#/$defs/CustomCodeTransformation" }, - ], -}; -const schema57 = { - additionalProperties: false, - properties: { - arguments: { $ref: "#/$defs/EmptyObject" }, - constant: { default: null, title: "Constant", type: "null" }, - expression: { default: null, title: "Expression", type: "null" }, - function: { default: null, title: "Function", type: "null" }, - inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, - kind: { const: "direct", default: "direct", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - }, - title: "DirectTransformation", - type: "object", -}; -const schema58 = { - additionalProperties: false, - description: "A JSON object that must contain no properties.", - properties: {}, - title: "EmptyObject", - type: "object", -}; - -function validate41( - data, - { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, -) { - let vErrors = null; - let errors = 0; - const evaluated0 = validate41.evaluated; - if (evaluated0.dynamicProps) { - evaluated0.props = undefined; - } - if (evaluated0.dynamicItems) { - evaluated0.items = undefined; - } - if (data && typeof data == "object" && !Array.isArray(data)) { - for (const key0 in data) { - if (!( - key0 === "arguments" || - key0 === "constant" || - key0 === "expression" || - key0 === "function" || - key0 === "inputs" || - key0 === "kind" || - key0 === "metadata" - )) { - const err0 = { - instancePath, - schemaPath: "#/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key0 }, - message: "must NOT have additional properties", + var _valid0 = _errs10 === errors; + valid3 = valid3 || _valid0; + if (!valid3) { + const err8 = { + instancePath: instancePath + "/cursor_field", + schemaPath: "#/properties/cursor_field/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", }; if (vErrors === null) { - vErrors = [err0]; + vErrors = [err8]; } else { - vErrors.push(err0); + vErrors.push(err8); } errors++; + } else { + errors = _errs7; + if (vErrors !== null) { + if (_errs7) { + vErrors.length = _errs7; + } else { + vErrors = null; + } + } } } - if (data.arguments !== undefined) { - let data0 = data.arguments; - if (data0 && typeof data0 == "object" && !Array.isArray(data0)) { - for (const key1 in data0) { - const err1 = { - instancePath: instancePath + "/arguments", - schemaPath: "#/$defs/EmptyObject/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key1 }, - message: "must NOT have additional properties", + if (data.destination !== undefined) { + let data3 = data.destination; + if (data3 && typeof data3 == "object" && !Array.isArray(data3)) { + if (data3.dataset === undefined) { + const err9 = { + instancePath: instancePath + "/destination", + schemaPath: "#/$defs/DestinationDocument/required", + keyword: "required", + params: { missingProperty: "dataset" }, + message: "must have required property '" + "dataset" + "'", }; if (vErrors === null) { - vErrors = [err1]; + vErrors = [err9]; } else { - vErrors.push(err1); + vErrors.push(err9); } errors++; } - } else { - const err2 = { - instancePath: instancePath + "/arguments", - schemaPath: "#/$defs/EmptyObject/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", - }; - if (vErrors === null) { - vErrors = [err2]; - } else { - vErrors.push(err2); - } - errors++; - } - } - if (data.constant !== undefined) { - if (data.constant !== null) { - const err3 = { - instancePath: instancePath + "/constant", - schemaPath: "#/properties/constant/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err3]; - } else { - vErrors.push(err3); + if (data3.table === undefined) { + const err10 = { + instancePath: instancePath + "/destination", + schemaPath: "#/$defs/DestinationDocument/required", + keyword: "required", + params: { missingProperty: "table" }, + message: "must have required property '" + "table" + "'", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; } - errors++; - } - } - if (data.expression !== undefined) { - if (data.expression !== null) { - const err4 = { - instancePath: instancePath + "/expression", - schemaPath: "#/properties/expression/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err4]; - } else { - vErrors.push(err4); + for (const key1 in data3) { + if (!( + key1 === "business_key" || + key1 === "dataset" || + key1 === "project" || + key1 === "table" + )) { + const err11 = { + instancePath: instancePath + "/destination", + schemaPath: "#/$defs/DestinationDocument/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } } - errors++; - } - } - if (data.function !== undefined) { - if (data.function !== null) { - const err5 = { - instancePath: instancePath + "/function", - schemaPath: "#/properties/function/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err5]; - } else { - vErrors.push(err5); + if (data3.business_key !== undefined) { + let data4 = data3.business_key; + if (Array.isArray(data4)) { + const len1 = data4.length; + for (let i1 = 0; i1 < len1; i1++) { + if (typeof data4[i1] !== "string") { + const err12 = { + instancePath: instancePath + "/destination/business_key/" + i1, + schemaPath: "#/$defs/DestinationDocument/properties/business_key/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err12]; + } else { + vErrors.push(err12); + } + errors++; + } + } + } else { + const err13 = { + instancePath: instancePath + "/destination/business_key", + schemaPath: "#/$defs/DestinationDocument/properties/business_key/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err13]; + } else { + vErrors.push(err13); + } + errors++; + } } - errors++; - } - } - if (data.inputs !== undefined) { - let data4 = data.inputs; - if (Array.isArray(data4)) { - const len0 = data4.length; - for (let i0 = 0; i0 < len0; i0++) { - if (typeof data4[i0] !== "string") { - const err6 = { - instancePath: instancePath + "/inputs/" + i0, - schemaPath: "#/properties/inputs/items/type", + if (data3.dataset !== undefined) { + let data6 = data3.dataset; + if (typeof data6 === "string") { + if (func3(data6) < 1) { + const err14 = { + instancePath: instancePath + "/destination/dataset", + schemaPath: "#/$defs/DestinationDocument/properties/dataset/minLength", + keyword: "minLength", + params: { limit: 1 }, + message: "must NOT have fewer than 1 characters", + }; + if (vErrors === null) { + vErrors = [err14]; + } else { + vErrors.push(err14); + } + errors++; + } + } else { + const err15 = { + instancePath: instancePath + "/destination/dataset", + schemaPath: "#/$defs/DestinationDocument/properties/dataset/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err6]; + vErrors = [err15]; } else { - vErrors.push(err6); + vErrors.push(err15); } errors++; } } - } else { - const err7 = { - instancePath: instancePath + "/inputs", - schemaPath: "#/properties/inputs/type", + if (data3.project !== undefined) { + let data7 = data3.project; + const _errs23 = errors; + let valid8 = false; + const _errs24 = errors; + if (typeof data7 !== "string") { + const err16 = { + instancePath: instancePath + "/destination/project", + schemaPath: "#/$defs/DestinationDocument/properties/project/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err16]; + } else { + vErrors.push(err16); + } + errors++; + } + var _valid1 = _errs24 === errors; + valid8 = valid8 || _valid1; + const _errs26 = errors; + if (data7 !== null) { + const err17 = { + instancePath: instancePath + "/destination/project", + schemaPath: "#/$defs/DestinationDocument/properties/project/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err17]; + } else { + vErrors.push(err17); + } + errors++; + } + var _valid1 = _errs26 === errors; + valid8 = valid8 || _valid1; + if (!valid8) { + const err18 = { + instancePath: instancePath + "/destination/project", + schemaPath: "#/$defs/DestinationDocument/properties/project/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err18]; + } else { + vErrors.push(err18); + } + errors++; + } else { + errors = _errs23; + if (vErrors !== null) { + if (_errs23) { + vErrors.length = _errs23; + } else { + vErrors = null; + } + } + } + } + if (data3.table !== undefined) { + let data8 = data3.table; + if (typeof data8 === "string") { + if (func3(data8) < 1) { + const err19 = { + instancePath: instancePath + "/destination/table", + schemaPath: "#/$defs/DestinationDocument/properties/table/minLength", + keyword: "minLength", + params: { limit: 1 }, + message: "must NOT have fewer than 1 characters", + }; + if (vErrors === null) { + vErrors = [err19]; + } else { + vErrors.push(err19); + } + errors++; + } + } else { + const err20 = { + instancePath: instancePath + "/destination/table", + schemaPath: "#/$defs/DestinationDocument/properties/table/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err20]; + } else { + vErrors.push(err20); + } + errors++; + } + } + } else { + const err21 = { + instancePath: instancePath + "/destination", + schemaPath: "#/$defs/DestinationDocument/type", keyword: "type", - params: { type: "array" }, - message: "must be array", + params: { type: "object" }, + message: "must be object", }; if (vErrors === null) { - vErrors = [err7]; + vErrors = [err21]; } else { - vErrors.push(err7); + vErrors.push(err21); } errors++; } } - if (data.kind !== undefined) { - let data6 = data.kind; - if (typeof data6 !== "string") { - const err8 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/type", + if (data.max_batch_rows !== undefined) { + let data9 = data.max_batch_rows; + if (!(typeof data9 == "number" && !(data9 % 1) && !isNaN(data9) && isFinite(data9))) { + const err22 = { + instancePath: instancePath + "/max_batch_rows", + schemaPath: "#/properties/max_batch_rows/type", keyword: "type", - params: { type: "string" }, - message: "must be string", + params: { type: "integer" }, + message: "must be integer", }; if (vErrors === null) { - vErrors = [err8]; + vErrors = [err22]; } else { - vErrors.push(err8); + vErrors.push(err22); } errors++; } - if ("direct" !== data6) { - const err9 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/const", - keyword: "const", - params: { allowedValue: "direct" }, - message: "must be equal to constant", - }; - if (vErrors === null) { - vErrors = [err9]; - } else { - vErrors.push(err9); + if (typeof data9 == "number" && isFinite(data9)) { + if (data9 > 100000 || isNaN(data9)) { + const err23 = { + instancePath: instancePath + "/max_batch_rows", + schemaPath: "#/properties/max_batch_rows/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 100000 }, + message: "must be <= 100000", + }; + if (vErrors === null) { + vErrors = [err23]; + } else { + vErrors.push(err23); + } + errors++; + } + if (data9 <= 0 || isNaN(data9)) { + const err24 = { + instancePath: instancePath + "/max_batch_rows", + schemaPath: "#/properties/max_batch_rows/exclusiveMinimum", + keyword: "exclusiveMinimum", + params: { comparison: ">", limit: 0 }, + message: "must be > 0", + }; + if (vErrors === null) { + vErrors = [err24]; + } else { + vErrors.push(err24); + } + errors++; } - errors++; } } - if (data.metadata !== undefined) { + if (data.partitioning !== undefined) { + let data10 = data.partitioning; + const _errs33 = errors; + let valid9 = false; + const _errs34 = errors; if ( - !validate35(data.metadata, { - instancePath: instancePath + "/metadata", + !validate35(data10, { + instancePath: instancePath + "/partitioning", parentData: data, - parentDataProperty: "metadata", + parentDataProperty: "partitioning", rootData, dynamicAnchors, }) @@ -4561,9 +4180,158 @@ function validate41( vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); errors = vErrors.length; } + var _valid2 = _errs34 === errors; + valid9 = valid9 || _valid2; + const _errs35 = errors; + if (data10 !== null) { + const err25 = { + instancePath: instancePath + "/partitioning", + schemaPath: "#/properties/partitioning/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err25]; + } else { + vErrors.push(err25); + } + errors++; + } + var _valid2 = _errs35 === errors; + valid9 = valid9 || _valid2; + if (!valid9) { + const err26 = { + instancePath: instancePath + "/partitioning", + schemaPath: "#/properties/partitioning/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err26]; + } else { + vErrors.push(err26); + } + errors++; + } else { + errors = _errs33; + if (vErrors !== null) { + if (_errs33) { + vErrors.length = _errs33; + } else { + vErrors = null; + } + } + } + } + if (data.schema_evolution !== undefined) { + let data11 = data.schema_evolution; + if (typeof data11 !== "string") { + const err27 = { + instancePath: instancePath + "/schema_evolution", + schemaPath: "#/$defs/SchemaEvolution/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err27]; + } else { + vErrors.push(err27); + } + errors++; + } + if (!(data11 === "strict" || data11 === "additive")) { + const err28 = { + instancePath: instancePath + "/schema_evolution", + schemaPath: "#/$defs/SchemaEvolution/enum", + keyword: "enum", + params: { allowedValues: schema58.enum }, + message: "must be equal to one of the allowed values", + }; + if (vErrors === null) { + vErrors = [err28]; + } else { + vErrors.push(err28); + } + errors++; + } + } + if (data.transport !== undefined) { + let data12 = data.transport; + if (typeof data12 !== "string") { + const err29 = { + instancePath: instancePath + "/transport", + schemaPath: "#/properties/transport/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err29]; + } else { + vErrors.push(err29); + } + errors++; + } + if (!(data12 === "load_job" || data12 === "storage_write" || data12 === "copy")) { + const err30 = { + instancePath: instancePath + "/transport", + schemaPath: "#/properties/transport/enum", + keyword: "enum", + params: { allowedValues: schema54.properties.transport.enum }, + message: "must be equal to one of the allowed values", + }; + if (vErrors === null) { + vErrors = [err30]; + } else { + vErrors.push(err30); + } + errors++; + } + } + if (data.write_mode !== undefined) { + let data13 = data.write_mode; + if (typeof data13 !== "string") { + const err31 = { + instancePath: instancePath + "/write_mode", + schemaPath: "#/$defs/WriteMode/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err31]; + } else { + vErrors.push(err31); + } + errors++; + } + if (!( + data13 === "scd1" || + data13 === "scd2" || + data13 === "snapshot" || + data13 === "incremental" || + data13 === "replace" + )) { + const err32 = { + instancePath: instancePath + "/write_mode", + schemaPath: "#/$defs/WriteMode/enum", + keyword: "enum", + params: { allowedValues: schema59.enum }, + message: "must be equal to one of the allowed values", + }; + if (vErrors === null) { + vErrors = [err32]; + } else { + vErrors.push(err32); + } + errors++; + } } } else { - const err10 = { + const err33 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -4571,41 +4339,24 @@ function validate41( message: "must be object", }; if (vErrors === null) { - vErrors = [err10]; + vErrors = [err33]; } else { - vErrors.push(err10); + vErrors.push(err33); } errors++; } - validate41.errors = vErrors; + validate34.errors = vErrors; return errors === 0; } -validate41.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -const schema59 = { - additionalProperties: false, - properties: { - arguments: { $ref: "#/$defs/EmptyObject" }, - constant: { default: null, title: "Constant", type: "null" }, - expression: { minLength: 1, title: "Expression", type: "string" }, - function: { default: null, title: "Function", type: "null" }, - inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, - kind: { const: "expression", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - }, - required: ["kind", "expression"], - title: "ExpressionTransformation", - type: "object", -}; -const func2 = require("ajv/dist/runtime/ucs2length").default; +validate34.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate44( +function validate33( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate44.evaluated; + const evaluated0 = validate33.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -4613,13 +4364,13 @@ function validate44( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.kind === undefined) { + if (data.writer === undefined) { const err0 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "kind" }, - message: "must have required property '" + "kind" + "'", + params: { missingProperty: "writer" }, + message: "must have required property '" + "writer" + "'", }; if (vErrors === null) { vErrors = [err0]; @@ -4628,13 +4379,13 @@ function validate44( } errors++; } - if (data.expression === undefined) { + if (data.field_names === undefined) { const err1 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "expression" }, - message: "must have required property '" + "expression" + "'", + params: { missingProperty: "field_names" }, + message: "must have required property '" + "field_names" + "'", }; if (vErrors === null) { vErrors = [err1]; @@ -4644,15 +4395,7 @@ function validate44( errors++; } for (const key0 in data) { - if (!( - key0 === "arguments" || - key0 === "constant" || - key0 === "expression" || - key0 === "function" || - key0 === "inputs" || - key0 === "kind" || - key0 === "metadata" - )) { + if (!(key0 === "field_names" || key0 === "writer")) { const err2 = { instancePath, schemaPath: "#/additionalProperties", @@ -4668,31 +4411,34 @@ function validate44( errors++; } } - if (data.arguments !== undefined) { - let data0 = data.arguments; - if (data0 && typeof data0 == "object" && !Array.isArray(data0)) { - for (const key1 in data0) { - const err3 = { - instancePath: instancePath + "/arguments", - schemaPath: "#/$defs/EmptyObject/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key1 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err3]; - } else { - vErrors.push(err3); + if (data.field_names !== undefined) { + let data0 = data.field_names; + if (Array.isArray(data0)) { + const len0 = data0.length; + for (let i0 = 0; i0 < len0; i0++) { + if (typeof data0[i0] !== "string") { + const err3 = { + instancePath: instancePath + "/field_names/" + i0, + schemaPath: "#/properties/field_names/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; } - errors++; } } else { const err4 = { - instancePath: instancePath + "/arguments", - schemaPath: "#/$defs/EmptyObject/type", + instancePath: instancePath + "/field_names", + schemaPath: "#/properties/field_names/type", keyword: "type", - params: { type: "object" }, - message: "must be object", + params: { type: "array" }, + message: "must be array", }; if (vErrors === null) { vErrors = [err4]; @@ -4702,11 +4448,30 @@ function validate44( errors++; } } - if (data.constant !== undefined) { - if (data.constant !== null) { + if (data.writer !== undefined) { + let data2 = data.writer; + const _errs7 = errors; + let valid3 = false; + const _errs8 = errors; + if ( + !validate34(data2, { + instancePath: instancePath + "/writer", + parentData: data, + parentDataProperty: "writer", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate34.errors : vErrors.concat(validate34.errors); + errors = vErrors.length; + } + var _valid0 = _errs8 === errors; + valid3 = valid3 || _valid0; + const _errs9 = errors; + if (data2 !== null) { const err5 = { - instancePath: instancePath + "/constant", - schemaPath: "#/properties/constant/type", + instancePath: instancePath + "/writer", + schemaPath: "#/properties/writer/anyOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null", @@ -4718,144 +4483,35 @@ function validate44( } errors++; } - } - if (data.expression !== undefined) { - let data2 = data.expression; - if (typeof data2 === "string") { - if (func2(data2) < 1) { - const err6 = { - instancePath: instancePath + "/expression", - schemaPath: "#/properties/expression/minLength", - keyword: "minLength", - params: { limit: 1 }, - message: "must NOT have fewer than 1 characters", - }; - if (vErrors === null) { - vErrors = [err6]; - } else { - vErrors.push(err6); - } - errors++; - } - } else { - const err7 = { - instancePath: instancePath + "/expression", - schemaPath: "#/properties/expression/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", + var _valid0 = _errs9 === errors; + valid3 = valid3 || _valid0; + if (!valid3) { + const err6 = { + instancePath: instancePath + "/writer", + schemaPath: "#/properties/writer/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", }; if (vErrors === null) { - vErrors = [err7]; + vErrors = [err6]; } else { - vErrors.push(err7); + vErrors.push(err6); } errors++; - } - } - if (data.function !== undefined) { - if (data.function !== null) { - const err8 = { - instancePath: instancePath + "/function", - schemaPath: "#/properties/function/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err8]; - } else { - vErrors.push(err8); + } else { + errors = _errs7; + if (vErrors !== null) { + if (_errs7) { + vErrors.length = _errs7; + } else { + vErrors = null; + } } - errors++; - } - } - if (data.inputs !== undefined) { - let data4 = data.inputs; - if (Array.isArray(data4)) { - const len0 = data4.length; - for (let i0 = 0; i0 < len0; i0++) { - if (typeof data4[i0] !== "string") { - const err9 = { - instancePath: instancePath + "/inputs/" + i0, - schemaPath: "#/properties/inputs/items/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err9]; - } else { - vErrors.push(err9); - } - errors++; - } - } - } else { - const err10 = { - instancePath: instancePath + "/inputs", - schemaPath: "#/properties/inputs/type", - keyword: "type", - params: { type: "array" }, - message: "must be array", - }; - if (vErrors === null) { - vErrors = [err10]; - } else { - vErrors.push(err10); - } - errors++; - } - } - if (data.kind !== undefined) { - let data6 = data.kind; - if (typeof data6 !== "string") { - const err11 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err11]; - } else { - vErrors.push(err11); - } - errors++; - } - if ("expression" !== data6) { - const err12 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/const", - keyword: "const", - params: { allowedValue: "expression" }, - message: "must be equal to constant", - }; - if (vErrors === null) { - vErrors = [err12]; - } else { - vErrors.push(err12); - } - errors++; - } - } - if (data.metadata !== undefined) { - if ( - !validate35(data.metadata, { - instancePath: instancePath + "/metadata", - parentData: data, - parentDataProperty: "metadata", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); - errors = vErrors.length; } } } else { - const err13 = { + const err7 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -4863,40 +4519,24 @@ function validate44( message: "must be object", }; if (vErrors === null) { - vErrors = [err13]; + vErrors = [err7]; } else { - vErrors.push(err13); + vErrors.push(err7); } errors++; } - validate44.errors = vErrors; + validate33.errors = vErrors; return errors === 0; } -validate44.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -const schema61 = { - additionalProperties: false, - properties: { - arguments: { $ref: "#/$defs/EmptyObject" }, - constant: { $ref: "#/$defs/JsonValue" }, - expression: { default: null, title: "Expression", type: "null" }, - function: { default: null, title: "Function", type: "null" }, - inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, - kind: { const: "constant", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - }, - required: ["kind", "constant"], - title: "ConstantTransformation", - type: "object", -}; +validate33.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate47( +function validate32( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate47.evaluated; + const evaluated0 = validate32.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -4904,13 +4544,13 @@ function validate47( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.kind === undefined) { + if (data.node_id === undefined) { const err0 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "kind" }, - message: "must have required property '" + "kind" + "'", + params: { missingProperty: "node_id" }, + message: "must have required property '" + "node_id" + "'", }; if (vErrors === null) { vErrors = [err0]; @@ -4919,13 +4559,13 @@ function validate47( } errors++; } - if (data.constant === undefined) { + if (data.name === undefined) { const err1 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "constant" }, - message: "must have required property '" + "constant" + "'", + params: { missingProperty: "name" }, + message: "must have required property '" + "name" + "'", }; if (vErrors === null) { vErrors = [err1]; @@ -4934,17 +4574,76 @@ function validate47( } errors++; } + if (data.affected === undefined) { + const err2 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "affected" }, + message: "must have required property '" + "affected" + "'", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + if (data.before === undefined) { + const err3 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "before" }, + message: "must have required property '" + "before" + "'", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + if (data.after === undefined) { + const err4 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "after" }, + message: "must have required property '" + "after" + "'", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + if (data.effect === undefined) { + const err5 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "effect" }, + message: "must have required property '" + "effect" + "'", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } for (const key0 in data) { if (!( - key0 === "arguments" || - key0 === "constant" || - key0 === "expression" || - key0 === "function" || - key0 === "inputs" || - key0 === "kind" || - key0 === "metadata" + key0 === "affected" || + key0 === "after" || + key0 === "before" || + key0 === "effect" || + key0 === "name" || + key0 === "node_id" )) { - const err2 = { + const err6 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", @@ -4952,167 +4651,207 @@ function validate47( message: "must NOT have additional properties", }; if (vErrors === null) { - vErrors = [err2]; + vErrors = [err6]; } else { - vErrors.push(err2); + vErrors.push(err6); } errors++; } } - if (data.arguments !== undefined) { - let data0 = data.arguments; - if (data0 && typeof data0 == "object" && !Array.isArray(data0)) { - for (const key1 in data0) { - const err3 = { - instancePath: instancePath + "/arguments", - schemaPath: "#/$defs/EmptyObject/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key1 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err3]; - } else { - vErrors.push(err3); - } - errors++; - } - } else { - const err4 = { - instancePath: instancePath + "/arguments", - schemaPath: "#/$defs/EmptyObject/type", + if (data.affected !== undefined) { + if (typeof data.affected !== "boolean") { + const err7 = { + instancePath: instancePath + "/affected", + schemaPath: "#/properties/affected/type", keyword: "type", - params: { type: "object" }, - message: "must be object", + params: { type: "boolean" }, + message: "must be boolean", }; if (vErrors === null) { - vErrors = [err4]; + vErrors = [err7]; } else { - vErrors.push(err4); + vErrors.push(err7); } errors++; } } - if (data.expression !== undefined) { - if (data.expression !== null) { - const err5 = { - instancePath: instancePath + "/expression", - schemaPath: "#/properties/expression/type", + if (data.after !== undefined) { + let data1 = data.after; + const _errs5 = errors; + let valid1 = false; + const _errs6 = errors; + if ( + !validate33(data1, { + instancePath: instancePath + "/after", + parentData: data, + parentDataProperty: "after", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate33.errors : vErrors.concat(validate33.errors); + errors = vErrors.length; + } + var _valid0 = _errs6 === errors; + valid1 = valid1 || _valid0; + const _errs7 = errors; + if (data1 !== null) { + const err8 = { + instancePath: instancePath + "/after", + schemaPath: "#/properties/after/anyOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null", }; if (vErrors === null) { - vErrors = [err5]; + vErrors = [err8]; } else { - vErrors.push(err5); + vErrors.push(err8); + } + errors++; + } + var _valid0 = _errs7 === errors; + valid1 = valid1 || _valid0; + if (!valid1) { + const err9 = { + instancePath: instancePath + "/after", + schemaPath: "#/properties/after/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); } errors++; + } else { + errors = _errs5; + if (vErrors !== null) { + if (_errs5) { + vErrors.length = _errs5; + } else { + vErrors = null; + } + } } } - if (data.function !== undefined) { - if (data.function !== null) { - const err6 = { - instancePath: instancePath + "/function", - schemaPath: "#/properties/function/type", + if (data.before !== undefined) { + let data2 = data.before; + const _errs10 = errors; + let valid2 = false; + const _errs11 = errors; + if ( + !validate33(data2, { + instancePath: instancePath + "/before", + parentData: data, + parentDataProperty: "before", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate33.errors : vErrors.concat(validate33.errors); + errors = vErrors.length; + } + var _valid1 = _errs11 === errors; + valid2 = valid2 || _valid1; + const _errs12 = errors; + if (data2 !== null) { + const err10 = { + instancePath: instancePath + "/before", + schemaPath: "#/properties/before/anyOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null", }; if (vErrors === null) { - vErrors = [err6]; + vErrors = [err10]; } else { - vErrors.push(err6); + vErrors.push(err10); } errors++; } - } - if (data.inputs !== undefined) { - let data4 = data.inputs; - if (Array.isArray(data4)) { - const len0 = data4.length; - for (let i0 = 0; i0 < len0; i0++) { - if (typeof data4[i0] !== "string") { - const err7 = { - instancePath: instancePath + "/inputs/" + i0, - schemaPath: "#/properties/inputs/items/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; - } + var _valid1 = _errs12 === errors; + valid2 = valid2 || _valid1; + if (!valid2) { + const err11 = { + instancePath: instancePath + "/before", + schemaPath: "#/properties/before/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); } + errors++; } else { - const err8 = { - instancePath: instancePath + "/inputs", - schemaPath: "#/properties/inputs/type", + errors = _errs10; + if (vErrors !== null) { + if (_errs10) { + vErrors.length = _errs10; + } else { + vErrors = null; + } + } + } + } + if (data.effect !== undefined) { + if (typeof data.effect !== "string") { + const err12 = { + instancePath: instancePath + "/effect", + schemaPath: "#/properties/effect/type", keyword: "type", - params: { type: "array" }, - message: "must be array", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err8]; + vErrors = [err12]; } else { - vErrors.push(err8); + vErrors.push(err12); } errors++; } } - if (data.kind !== undefined) { - let data6 = data.kind; - if (typeof data6 !== "string") { - const err9 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/type", + if (data.name !== undefined) { + if (typeof data.name !== "string") { + const err13 = { + instancePath: instancePath + "/name", + schemaPath: "#/properties/name/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err9]; + vErrors = [err13]; } else { - vErrors.push(err9); + vErrors.push(err13); } errors++; } - if ("constant" !== data6) { - const err10 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/const", - keyword: "const", - params: { allowedValue: "constant" }, - message: "must be equal to constant", + } + if (data.node_id !== undefined) { + if (typeof data.node_id !== "string") { + const err14 = { + instancePath: instancePath + "/node_id", + schemaPath: "#/properties/node_id/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err10]; + vErrors = [err14]; } else { - vErrors.push(err10); + vErrors.push(err14); } errors++; } } - if (data.metadata !== undefined) { - if ( - !validate35(data.metadata, { - instancePath: instancePath + "/metadata", - parentData: data, - parentDataProperty: "metadata", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); - errors = vErrors.length; - } - } } else { - const err11 = { + const err15 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -5120,45 +4859,24 @@ function validate47( message: "must be object", }; if (vErrors === null) { - vErrors = [err11]; + vErrors = [err15]; } else { - vErrors.push(err11); + vErrors.push(err15); } errors++; } - validate47.errors = vErrors; + validate32.errors = vErrors; return errors === 0; } -validate47.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -const schema64 = { - additionalProperties: false, - properties: { - arguments: { $ref: "#/$defs/JsonObject" }, - constant: { default: null, title: "Constant", type: "null" }, - expression: { default: null, title: "Expression", type: "null" }, - function: { - pattern: "^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*$", - title: "Function", - type: "string", - }, - inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, - kind: { const: "custom_code", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - }, - required: ["kind", "function"], - title: "CustomCodeTransformation", - type: "object", -}; -const pattern7 = new RegExp("^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*$", "u"); +validate32.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate50( +function validate31( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { - let vErrors = null; + /*# sourceURL="urn:dander:control:contracts:v1:graph-change-preview" */ let vErrors = null; let errors = 0; - const evaluated0 = validate50.evaluated; + const evaluated0 = validate31.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -5166,13 +4884,13 @@ function validate50( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.kind === undefined) { + if (data.baseline_content_sha256 === undefined) { const err0 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "kind" }, - message: "must have required property '" + "kind" + "'", + params: { missingProperty: "baseline_content_sha256" }, + message: "must have required property '" + "baseline_content_sha256" + "'", }; if (vErrors === null) { vErrors = [err0]; @@ -5181,13 +4899,13 @@ function validate50( } errors++; } - if (data.function === undefined) { + if (data.candidate_content_sha256 === undefined) { const err1 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "function" }, - message: "must have required property '" + "function" + "'", + params: { missingProperty: "candidate_content_sha256" }, + message: "must have required property '" + "candidate_content_sha256" + "'", }; if (vErrors === null) { vErrors = [err1]; @@ -5196,17 +4914,99 @@ function validate50( } errors++; } + if (data.graph_properties_changed === undefined) { + const err2 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "graph_properties_changed" }, + message: "must have required property '" + "graph_properties_changed" + "'", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + if (data.node_changes === undefined) { + const err3 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "node_changes" }, + message: "must have required property '" + "node_changes" + "'", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + if (data.connection_changes === undefined) { + const err4 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "connection_changes" }, + message: "must have required property '" + "connection_changes" + "'", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + if (data.affected_outputs === undefined) { + const err5 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "affected_outputs" }, + message: "must have required property '" + "affected_outputs" + "'", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + if (data.outputs === undefined) { + const err6 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "outputs" }, + message: "must have required property '" + "outputs" + "'", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + if (data.run_output_ids === undefined) { + const err7 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "run_output_ids" }, + message: "must have required property '" + "run_output_ids" + "'", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } for (const key0 in data) { - if (!( - key0 === "arguments" || - key0 === "constant" || - key0 === "expression" || - key0 === "function" || - key0 === "inputs" || - key0 === "kind" || - key0 === "metadata" - )) { - const err2 = { + if (!func1.call(schema48.properties, key0)) { + const err8 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", @@ -5214,182 +5014,770 @@ function validate50( message: "must NOT have additional properties", }; if (vErrors === null) { - vErrors = [err2]; + vErrors = [err8]; } else { - vErrors.push(err2); + vErrors.push(err8); } errors++; } } - if (data.arguments !== undefined) { - if ( - !validate35(data.arguments, { - instancePath: instancePath + "/arguments", - parentData: data, - parentDataProperty: "arguments", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); - errors = vErrors.length; - } - } - if (data.constant !== undefined) { - if (data.constant !== null) { - const err3 = { - instancePath: instancePath + "/constant", - schemaPath: "#/properties/constant/type", + if (data.affected_outputs !== undefined) { + let data0 = data.affected_outputs; + if (Array.isArray(data0)) { + const len0 = data0.length; + for (let i0 = 0; i0 < len0; i0++) { + if (typeof data0[i0] !== "string") { + const err9 = { + instancePath: instancePath + "/affected_outputs/" + i0, + schemaPath: "#/properties/affected_outputs/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + } + } else { + const err10 = { + instancePath: instancePath + "/affected_outputs", + schemaPath: "#/properties/affected_outputs/type", keyword: "type", - params: { type: "null" }, - message: "must be null", + params: { type: "array" }, + message: "must be array", }; if (vErrors === null) { - vErrors = [err3]; + vErrors = [err10]; } else { - vErrors.push(err3); + vErrors.push(err10); } errors++; } } - if (data.expression !== undefined) { - if (data.expression !== null) { - const err4 = { - instancePath: instancePath + "/expression", - schemaPath: "#/properties/expression/type", + if (data.baseline_content_sha256 !== undefined) { + let data2 = data.baseline_content_sha256; + if (typeof data2 === "string") { + if (!pattern4.test(data2)) { + const err11 = { + instancePath: instancePath + "/baseline_content_sha256", + schemaPath: "#/properties/baseline_content_sha256/pattern", + keyword: "pattern", + params: { pattern: "^[0-9a-f]{64}$" }, + message: 'must match pattern "' + "^[0-9a-f]{64}$" + '"', + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } + } else { + const err12 = { + instancePath: instancePath + "/baseline_content_sha256", + schemaPath: "#/properties/baseline_content_sha256/type", keyword: "type", - params: { type: "null" }, - message: "must be null", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err4]; + vErrors = [err12]; } else { - vErrors.push(err4); + vErrors.push(err12); } errors++; } } - if (data.function !== undefined) { - let data3 = data.function; + if (data.candidate_content_sha256 !== undefined) { + let data3 = data.candidate_content_sha256; if (typeof data3 === "string") { - if (!pattern7.test(data3)) { - const err5 = { - instancePath: instancePath + "/function", - schemaPath: "#/properties/function/pattern", + if (!pattern4.test(data3)) { + const err13 = { + instancePath: instancePath + "/candidate_content_sha256", + schemaPath: "#/properties/candidate_content_sha256/pattern", keyword: "pattern", - params: { pattern: "^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*$" }, - message: - 'must match pattern "' + "^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*$" + '"', + params: { pattern: "^[0-9a-f]{64}$" }, + message: 'must match pattern "' + "^[0-9a-f]{64}$" + '"', }; if (vErrors === null) { - vErrors = [err5]; + vErrors = [err13]; } else { - vErrors.push(err5); + vErrors.push(err13); } errors++; } } else { - const err6 = { - instancePath: instancePath + "/function", - schemaPath: "#/properties/function/type", + const err14 = { + instancePath: instancePath + "/candidate_content_sha256", + schemaPath: "#/properties/candidate_content_sha256/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err6]; + vErrors = [err14]; } else { - vErrors.push(err6); + vErrors.push(err14); } errors++; } } - if (data.inputs !== undefined) { - let data4 = data.inputs; + if (data.connection_changes !== undefined) { + let data4 = data.connection_changes; if (Array.isArray(data4)) { - const len0 = data4.length; - for (let i0 = 0; i0 < len0; i0++) { - if (typeof data4[i0] !== "string") { - const err7 = { - instancePath: instancePath + "/inputs/" + i0, - schemaPath: "#/properties/inputs/items/type", + const len1 = data4.length; + for (let i1 = 0; i1 < len1; i1++) { + let data5 = data4[i1]; + if (data5 && typeof data5 == "object" && !Array.isArray(data5)) { + if (data5.source === undefined) { + const err15 = { + instancePath: instancePath + "/connection_changes/" + i1, + schemaPath: "#/$defs/GraphConnectionChange/required", + keyword: "required", + params: { missingProperty: "source" }, + message: "must have required property '" + "source" + "'", + }; + if (vErrors === null) { + vErrors = [err15]; + } else { + vErrors.push(err15); + } + errors++; + } + if (data5.target === undefined) { + const err16 = { + instancePath: instancePath + "/connection_changes/" + i1, + schemaPath: "#/$defs/GraphConnectionChange/required", + keyword: "required", + params: { missingProperty: "target" }, + message: "must have required property '" + "target" + "'", + }; + if (vErrors === null) { + vErrors = [err16]; + } else { + vErrors.push(err16); + } + errors++; + } + if (data5.change === undefined) { + const err17 = { + instancePath: instancePath + "/connection_changes/" + i1, + schemaPath: "#/$defs/GraphConnectionChange/required", + keyword: "required", + params: { missingProperty: "change" }, + message: "must have required property '" + "change" + "'", + }; + if (vErrors === null) { + vErrors = [err17]; + } else { + vErrors.push(err17); + } + errors++; + } + for (const key1 in data5) { + if (!(key1 === "change" || key1 === "source" || key1 === "target")) { + const err18 = { + instancePath: instancePath + "/connection_changes/" + i1, + schemaPath: "#/$defs/GraphConnectionChange/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err18]; + } else { + vErrors.push(err18); + } + errors++; + } + } + if (data5.change !== undefined) { + let data6 = data5.change; + if (typeof data6 !== "string") { + const err19 = { + instancePath: instancePath + "/connection_changes/" + i1 + "/change", + schemaPath: "#/$defs/GraphConnectionChange/properties/change/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err19]; + } else { + vErrors.push(err19); + } + errors++; + } + if (!(data6 === "added" || data6 === "removed" || data6 === "modified")) { + const err20 = { + instancePath: instancePath + "/connection_changes/" + i1 + "/change", + schemaPath: "#/$defs/GraphConnectionChange/properties/change/enum", + keyword: "enum", + params: { allowedValues: schema49.properties.change.enum }, + message: "must be equal to one of the allowed values", + }; + if (vErrors === null) { + vErrors = [err20]; + } else { + vErrors.push(err20); + } + errors++; + } + } + if (data5.source !== undefined) { + if (typeof data5.source !== "string") { + const err21 = { + instancePath: instancePath + "/connection_changes/" + i1 + "/source", + schemaPath: "#/$defs/GraphConnectionChange/properties/source/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err21]; + } else { + vErrors.push(err21); + } + errors++; + } + } + if (data5.target !== undefined) { + if (typeof data5.target !== "string") { + const err22 = { + instancePath: instancePath + "/connection_changes/" + i1 + "/target", + schemaPath: "#/$defs/GraphConnectionChange/properties/target/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err22]; + } else { + vErrors.push(err22); + } + errors++; + } + } + } else { + const err23 = { + instancePath: instancePath + "/connection_changes/" + i1, + schemaPath: "#/$defs/GraphConnectionChange/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err23]; + } else { + vErrors.push(err23); + } + errors++; + } + } + } else { + const err24 = { + instancePath: instancePath + "/connection_changes", + schemaPath: "#/properties/connection_changes/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err24]; + } else { + vErrors.push(err24); + } + errors++; + } + } + if (data.estimates !== undefined) { + let data9 = data.estimates; + if (data9 && typeof data9 == "object" && !Array.isArray(data9)) { + for (const key2 in data9) { + if (!(key2 === "cost_usd" || key2 === "explanation" || key2 === "rows_written")) { + const err25 = { + instancePath: instancePath + "/estimates", + schemaPath: "#/$defs/GraphChangeEstimates/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key2 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err25]; + } else { + vErrors.push(err25); + } + errors++; + } + } + if (data9.cost_usd !== undefined) { + if (data9.cost_usd !== null) { + const err26 = { + instancePath: instancePath + "/estimates/cost_usd", + schemaPath: "#/$defs/GraphChangeEstimates/properties/cost_usd/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err26]; + } else { + vErrors.push(err26); + } + errors++; + } + } + if (data9.explanation !== undefined) { + if (typeof data9.explanation !== "string") { + const err27 = { + instancePath: instancePath + "/estimates/explanation", + schemaPath: "#/$defs/GraphChangeEstimates/properties/explanation/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err7]; + vErrors = [err27]; } else { - vErrors.push(err7); + vErrors.push(err27); + } + errors++; + } + } + if (data9.rows_written !== undefined) { + if (data9.rows_written !== null) { + const err28 = { + instancePath: instancePath + "/estimates/rows_written", + schemaPath: "#/$defs/GraphChangeEstimates/properties/rows_written/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err28]; + } else { + vErrors.push(err28); } errors++; } } } else { - const err8 = { - instancePath: instancePath + "/inputs", - schemaPath: "#/properties/inputs/type", + const err29 = { + instancePath: instancePath + "/estimates", + schemaPath: "#/$defs/GraphChangeEstimates/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err29]; + } else { + vErrors.push(err29); + } + errors++; + } + } + if (data.graph_properties_changed !== undefined) { + let data13 = data.graph_properties_changed; + if (Array.isArray(data13)) { + const len2 = data13.length; + for (let i2 = 0; i2 < len2; i2++) { + if (typeof data13[i2] !== "string") { + const err30 = { + instancePath: instancePath + "/graph_properties_changed/" + i2, + schemaPath: "#/properties/graph_properties_changed/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err30]; + } else { + vErrors.push(err30); + } + errors++; + } + } + } else { + const err31 = { + instancePath: instancePath + "/graph_properties_changed", + schemaPath: "#/properties/graph_properties_changed/type", keyword: "type", params: { type: "array" }, message: "must be array", }; if (vErrors === null) { - vErrors = [err8]; + vErrors = [err31]; } else { - vErrors.push(err8); + vErrors.push(err31); } errors++; } } - if (data.kind !== undefined) { - let data6 = data.kind; - if (typeof data6 !== "string") { - const err9 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/type", + if (data.limitations !== undefined) { + let data15 = data.limitations; + if (Array.isArray(data15)) { + const len3 = data15.length; + for (let i3 = 0; i3 < len3; i3++) { + if (typeof data15[i3] !== "string") { + const err32 = { + instancePath: instancePath + "/limitations/" + i3, + schemaPath: "#/properties/limitations/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err32]; + } else { + vErrors.push(err32); + } + errors++; + } + } + } else { + const err33 = { + instancePath: instancePath + "/limitations", + schemaPath: "#/properties/limitations/type", keyword: "type", - params: { type: "string" }, - message: "must be string", + params: { type: "array" }, + message: "must be array", }; if (vErrors === null) { - vErrors = [err9]; + vErrors = [err33]; } else { - vErrors.push(err9); + vErrors.push(err33); } errors++; } - if ("custom_code" !== data6) { - const err10 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/const", - keyword: "const", - params: { allowedValue: "custom_code" }, - message: "must be equal to constant", + } + if (data.node_changes !== undefined) { + let data17 = data.node_changes; + if (Array.isArray(data17)) { + const len4 = data17.length; + for (let i4 = 0; i4 < len4; i4++) { + let data18 = data17[i4]; + if (data18 && typeof data18 == "object" && !Array.isArray(data18)) { + if (data18.node_id === undefined) { + const err34 = { + instancePath: instancePath + "/node_changes/" + i4, + schemaPath: "#/$defs/GraphNodeChange/required", + keyword: "required", + params: { missingProperty: "node_id" }, + message: "must have required property '" + "node_id" + "'", + }; + if (vErrors === null) { + vErrors = [err34]; + } else { + vErrors.push(err34); + } + errors++; + } + if (data18.name === undefined) { + const err35 = { + instancePath: instancePath + "/node_changes/" + i4, + schemaPath: "#/$defs/GraphNodeChange/required", + keyword: "required", + params: { missingProperty: "name" }, + message: "must have required property '" + "name" + "'", + }; + if (vErrors === null) { + vErrors = [err35]; + } else { + vErrors.push(err35); + } + errors++; + } + if (data18.change === undefined) { + const err36 = { + instancePath: instancePath + "/node_changes/" + i4, + schemaPath: "#/$defs/GraphNodeChange/required", + keyword: "required", + params: { missingProperty: "change" }, + message: "must have required property '" + "change" + "'", + }; + if (vErrors === null) { + vErrors = [err36]; + } else { + vErrors.push(err36); + } + errors++; + } + if (data18.affects_data === undefined) { + const err37 = { + instancePath: instancePath + "/node_changes/" + i4, + schemaPath: "#/$defs/GraphNodeChange/required", + keyword: "required", + params: { missingProperty: "affects_data" }, + message: "must have required property '" + "affects_data" + "'", + }; + if (vErrors === null) { + vErrors = [err37]; + } else { + vErrors.push(err37); + } + errors++; + } + for (const key3 in data18) { + if (!( + key3 === "affects_data" || + key3 === "change" || + key3 === "changed_properties" || + key3 === "name" || + key3 === "node_id" + )) { + const err38 = { + instancePath: instancePath + "/node_changes/" + i4, + schemaPath: "#/$defs/GraphNodeChange/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key3 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err38]; + } else { + vErrors.push(err38); + } + errors++; + } + } + if (data18.affects_data !== undefined) { + if (typeof data18.affects_data !== "boolean") { + const err39 = { + instancePath: instancePath + "/node_changes/" + i4 + "/affects_data", + schemaPath: "#/$defs/GraphNodeChange/properties/affects_data/type", + keyword: "type", + params: { type: "boolean" }, + message: "must be boolean", + }; + if (vErrors === null) { + vErrors = [err39]; + } else { + vErrors.push(err39); + } + errors++; + } + } + if (data18.change !== undefined) { + let data20 = data18.change; + if (typeof data20 !== "string") { + const err40 = { + instancePath: instancePath + "/node_changes/" + i4 + "/change", + schemaPath: "#/$defs/GraphNodeChange/properties/change/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err40]; + } else { + vErrors.push(err40); + } + errors++; + } + if (!( + data20 === "added" || + data20 === "removed" || + data20 === "modified" || + data20 === "layout_only" + )) { + const err41 = { + instancePath: instancePath + "/node_changes/" + i4 + "/change", + schemaPath: "#/$defs/GraphNodeChange/properties/change/enum", + keyword: "enum", + params: { allowedValues: schema51.properties.change.enum }, + message: "must be equal to one of the allowed values", + }; + if (vErrors === null) { + vErrors = [err41]; + } else { + vErrors.push(err41); + } + errors++; + } + } + if (data18.changed_properties !== undefined) { + let data21 = data18.changed_properties; + if (Array.isArray(data21)) { + const len5 = data21.length; + for (let i5 = 0; i5 < len5; i5++) { + if (typeof data21[i5] !== "string") { + const err42 = { + instancePath: + instancePath + "/node_changes/" + i4 + "/changed_properties/" + i5, + schemaPath: + "#/$defs/GraphNodeChange/properties/changed_properties/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err42]; + } else { + vErrors.push(err42); + } + errors++; + } + } + } else { + const err43 = { + instancePath: instancePath + "/node_changes/" + i4 + "/changed_properties", + schemaPath: "#/$defs/GraphNodeChange/properties/changed_properties/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err43]; + } else { + vErrors.push(err43); + } + errors++; + } + } + if (data18.name !== undefined) { + if (typeof data18.name !== "string") { + const err44 = { + instancePath: instancePath + "/node_changes/" + i4 + "/name", + schemaPath: "#/$defs/GraphNodeChange/properties/name/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err44]; + } else { + vErrors.push(err44); + } + errors++; + } + } + if (data18.node_id !== undefined) { + if (typeof data18.node_id !== "string") { + const err45 = { + instancePath: instancePath + "/node_changes/" + i4 + "/node_id", + schemaPath: "#/$defs/GraphNodeChange/properties/node_id/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err45]; + } else { + vErrors.push(err45); + } + errors++; + } + } + } else { + const err46 = { + instancePath: instancePath + "/node_changes/" + i4, + schemaPath: "#/$defs/GraphNodeChange/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err46]; + } else { + vErrors.push(err46); + } + errors++; + } + } + } else { + const err47 = { + instancePath: instancePath + "/node_changes", + schemaPath: "#/properties/node_changes/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", }; if (vErrors === null) { - vErrors = [err10]; + vErrors = [err47]; } else { - vErrors.push(err10); + vErrors.push(err47); } errors++; } } - if (data.metadata !== undefined) { - if ( - !validate35(data.metadata, { - instancePath: instancePath + "/metadata", - parentData: data, - parentDataProperty: "metadata", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); - errors = vErrors.length; + if (data.outputs !== undefined) { + let data25 = data.outputs; + if (Array.isArray(data25)) { + const len6 = data25.length; + for (let i6 = 0; i6 < len6; i6++) { + if ( + !validate32(data25[i6], { + instancePath: instancePath + "/outputs/" + i6, + parentData: data25, + parentDataProperty: i6, + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate32.errors : vErrors.concat(validate32.errors); + errors = vErrors.length; + } + } + } else { + const err48 = { + instancePath: instancePath + "/outputs", + schemaPath: "#/properties/outputs/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err48]; + } else { + vErrors.push(err48); + } + errors++; + } + } + if (data.run_output_ids !== undefined) { + let data27 = data.run_output_ids; + if (Array.isArray(data27)) { + const len7 = data27.length; + for (let i7 = 0; i7 < len7; i7++) { + if (typeof data27[i7] !== "string") { + const err49 = { + instancePath: instancePath + "/run_output_ids/" + i7, + schemaPath: "#/properties/run_output_ids/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err49]; + } else { + vErrors.push(err49); + } + errors++; + } + } + } else { + const err50 = { + instancePath: instancePath + "/run_output_ids", + schemaPath: "#/properties/run_output_ids/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err50]; + } else { + vErrors.push(err50); + } + errors++; } } } else { - const err11 = { + const err51 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -5397,52 +5785,2318 @@ function validate50( message: "must be object", }; if (vErrors === null) { - vErrors = [err11]; + vErrors = [err51]; } else { - vErrors.push(err11); + vErrors.push(err51); } errors++; } - validate50.errors = vErrors; + validate31.errors = vErrors; return errors === 0; } -validate50.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate31.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate40( - data, - { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, -) { - let vErrors = null; - let errors = 0; - const evaluated0 = validate40.evaluated; - if (evaluated0.dynamicProps) { - evaluated0.props = undefined; - } - if (evaluated0.dynamicItems) { - evaluated0.items = undefined; - } - const _errs0 = errors; - let valid0 = false; - const _errs1 = errors; - if ( - !validate41(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) - ) { - vErrors = vErrors === null ? validate41.errors : vErrors.concat(validate41.errors); - errors = vErrors.length; - } - var _valid0 = _errs1 === errors; - valid0 = valid0 || _valid0; - if (_valid0) { - var props0 = true; - } - const _errs2 = errors; - if ( - !validate44(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) - ) { - vErrors = vErrors === null ? validate44.errors : vErrors.concat(validate44.errors); - errors = vErrors.length; - } - var _valid0 = _errs2 === errors; +export const validateGraphCreate = validate41; +const schema60 = { + $defs: { + AcceptedValuesFieldTest: { + additionalProperties: false, + properties: { + field: { default: null, title: "Field", type: "null" }, + kind: { const: "accepted_values", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + to: { default: null, title: "To", type: "null" }, + values: { + items: { $ref: "#/$defs/JsonValue" }, + minItems: 1, + title: "Values", + type: "array", + }, + }, + required: ["kind", "values"], + title: "AcceptedValuesFieldTest", + type: "object", + }, + ComparisonOperator: { + description: "Closed comparison grammar for ``filter_rows``.", + enum: ["eq", "ne", "gt", "gte", "lt", "lte", "in", "not_in", "is_null", "is_not_null"], + title: "ComparisonOperator", + type: "string", + }, + ConstantTransformation: { + additionalProperties: false, + properties: { + arguments: { $ref: "#/$defs/EmptyObject" }, + constant: { $ref: "#/$defs/JsonValue" }, + expression: { default: null, title: "Expression", type: "null" }, + function: { default: null, title: "Function", type: "null" }, + inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, + kind: { const: "constant", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + }, + required: ["kind", "constant"], + title: "ConstantTransformation", + type: "object", + }, + CursorStrategyDocument: { + additionalProperties: false, + properties: { + field: { minLength: 1, title: "Field", type: "string" }, + kind: { enum: ["timestamp", "sequence", "opaque_token"], title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + params: { $ref: "#/$defs/JsonObject" }, + }, + required: ["field", "kind"], + title: "CursorStrategyDocument", + type: "object", + }, + CustomCodeTransformation: { + additionalProperties: false, + properties: { + arguments: { $ref: "#/$defs/JsonObject" }, + constant: { default: null, title: "Constant", type: "null" }, + expression: { default: null, title: "Expression", type: "null" }, + function: { + pattern: "^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*$", + title: "Function", + type: "string", + }, + inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, + kind: { const: "custom_code", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + }, + required: ["kind", "function"], + title: "CustomCodeTransformation", + type: "object", + }, + DefaultValueOperation: { + additionalProperties: false, + properties: { + kind: { const: "default_value", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + params: { $ref: "#/$defs/DefaultValueParamsDocument" }, + }, + required: ["kind", "params"], + title: "DefaultValueOperation", + type: "object", + }, + DefaultValueParamsDocument: { + additionalProperties: false, + properties: { + default: { + anyOf: [{ type: "string" }, { type: "integer" }, { type: "number" }, { type: "boolean" }], + title: "Default", + }, + field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" }, + }, + required: ["field", "default"], + title: "DefaultValueParamsDocument", + type: "object", + }, + DependencyTrigger: { + additionalProperties: false, + properties: { + cron: { default: null, title: "Cron", type: "null" }, + depends_on: { items: { type: "string" }, minItems: 1, title: "Depends On", type: "array" }, + event: { default: null, title: "Event", type: "null" }, + kind: { const: "dependency", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + }, + required: ["kind", "depends_on"], + title: "DependencyTrigger", + type: "object", + }, + DestinationDocument: { + additionalProperties: false, + properties: { + business_key: { items: { type: "string" }, title: "Business Key", type: "array" }, + dataset: { minLength: 1, title: "Dataset", type: "string" }, + project: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Project" }, + table: { minLength: 1, title: "Table", type: "string" }, + }, + required: ["dataset", "table"], + title: "DestinationDocument", + type: "object", + }, + DirectTransformation: { + additionalProperties: false, + properties: { + arguments: { $ref: "#/$defs/EmptyObject" }, + constant: { default: null, title: "Constant", type: "null" }, + expression: { default: null, title: "Expression", type: "null" }, + function: { default: null, title: "Function", type: "null" }, + inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, + kind: { const: "direct", default: "direct", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + }, + title: "DirectTransformation", + type: "object", + }, + EdgeDocument: { + additionalProperties: false, + properties: { + from: { title: "From", type: "string" }, + join: { anyOf: [{ $ref: "#/$defs/JoinDocument" }, { type: "null" }], default: null }, + mappings: { + items: { $ref: "#/$defs/FieldMappingDocument" }, + title: "Mappings", + type: "array", + }, + metadata: { $ref: "#/$defs/JsonObject" }, + to: { title: "To", type: "string" }, + }, + required: ["from", "to"], + title: "EdgeDocument", + type: "object", + }, + EmptyObject: { + additionalProperties: false, + description: "A JSON object that must contain no properties.", + properties: {}, + title: "EmptyObject", + type: "object", + }, + ExecutableJoinKeyDocument: { + additionalProperties: false, + properties: { + left: { minLength: 1, title: "Left", type: "string" }, + right: { minLength: 1, title: "Right", type: "string" }, + }, + required: ["left", "right"], + title: "ExecutableJoinKeyDocument", + type: "object", + }, + ExecutableJoinType: { + description: "BigQuery join kinds supported by an executable transform node.", + enum: ["inner", "left", "right", "full"], + title: "ExecutableJoinType", + type: "string", + }, + ExpressionTransformation: { + additionalProperties: false, + properties: { + arguments: { $ref: "#/$defs/EmptyObject" }, + constant: { default: null, title: "Constant", type: "null" }, + expression: { minLength: 1, title: "Expression", type: "string" }, + function: { default: null, title: "Function", type: "null" }, + inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, + kind: { const: "expression", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + }, + required: ["kind", "expression"], + title: "ExpressionTransformation", + type: "object", + }, + ExtensionNodeDocument: { + additionalProperties: false, + not: { required: ["config", "params"] }, + properties: { + config: { $ref: "#/$defs/JsonObject" }, + cursor: { + anyOf: [{ $ref: "#/$defs/CursorStrategyDocument" }, { type: "null" }], + default: null, + }, + fields: { items: { $ref: "#/$defs/NodeFieldDocument" }, title: "Fields", type: "array" }, + id: { title: "Id", type: "string" }, + name: { title: "Name", type: "string" }, + params: { + anyOf: [{ $ref: "#/$defs/JsonObject" }, { type: "null" }], + default: null, + deprecated: true, + "x-dander-canonical-name": "config", + }, + trigger: { anyOf: [{ $ref: "#/$defs/TriggerDocument" }, { type: "null" }], default: null }, + type: { $ref: "#/$defs/ExtensionNodeType" }, + visual: { + anyOf: [{ $ref: "#/$defs/NodeVisualDocument" }, { type: "null" }], + default: null, + }, + }, + required: ["id", "type", "name"], + title: "ExtensionNodeDocument", + type: "object", + }, + ExtensionNodeType: { not: { enum: ["source", "transform", "target"] }, type: "string" }, + FieldConditionDocument: { + additionalProperties: false, + properties: { + field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" }, + op: { $ref: "#/$defs/ComparisonOperator" }, + value: { + anyOf: [ + { type: "string" }, + { type: "integer" }, + { type: "number" }, + { type: "boolean" }, + { + items: { + anyOf: [ + { type: "string" }, + { type: "integer" }, + { type: "number" }, + { type: "boolean" }, + ], + }, + type: "array", + }, + { type: "null" }, + ], + default: null, + title: "Value", + }, + }, + required: ["field", "op"], + title: "FieldConditionDocument", + type: "object", + }, + FieldMappingDocument: { + additionalProperties: false, + properties: { + metadata: { $ref: "#/$defs/JsonObject" }, + source: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Source" }, + target: { title: "Target", type: "string" }, + transformation: { + anyOf: [{ $ref: "#/$defs/TransformationDocument" }, { type: "null" }], + default: null, + }, + }, + required: ["target"], + title: "FieldMappingDocument", + type: "object", + }, + FieldTestDocument: { + anyOf: [ + { $ref: "#/$defs/NotNullFieldTest" }, + { $ref: "#/$defs/UniqueFieldTest" }, + { $ref: "#/$defs/AcceptedValuesFieldTest" }, + { $ref: "#/$defs/RelationshipsFieldTest" }, + ], + }, + FilterRowsOperation: { + additionalProperties: false, + properties: { + kind: { const: "filter_rows", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + params: { $ref: "#/$defs/FilterRowsParamsDocument" }, + }, + required: ["kind", "params"], + title: "FilterRowsOperation", + type: "object", + }, + FilterRowsParamsDocument: { + additionalProperties: false, + properties: { + conditions: { + items: { $ref: "#/$defs/FieldConditionDocument" }, + minItems: 1, + title: "Conditions", + type: "array", + }, + logic: { $ref: "#/$defs/MatchLogic", default: "all" }, + }, + required: ["conditions"], + title: "FilterRowsParamsDocument", + type: "object", + }, + GraphNodeDocument: { + anyOf: [ + { $ref: "#/$defs/SourceNodeDocument" }, + { $ref: "#/$defs/TransformNodeDocument" }, + { $ref: "#/$defs/TargetNodeDocument" }, + { $ref: "#/$defs/ExtensionNodeDocument" }, + ], + }, + HttpMethod: { + description: + "The closed set of HTTP methods a `RequestSpec` may declare.\n\nA `StrEnum` (matching the `TransformationKind`/`JoinType` convention in `graph.py`) so callers\nget a named, importable type that still serializes to/from its plain string value stably in\nYAML and JSON. An out-of-set value fails validation with a clear error at the Pydantic\nboundary. `HEAD`/`OPTIONS` are intentionally omitted (no source currently needs them); extend\nby adding a member later without touching callers.\n\nAttributes:\n GET: Retrieve a resource. The default method (a simple GET needs no explicit spec).\n POST: Create a resource / submit a query body.\n PUT: Replace a resource.\n PATCH: Partially update a resource.\n DELETE: Remove a resource.", + enum: ["GET", "POST", "PUT", "PATCH", "DELETE"], + title: "HttpMethod", + type: "string", + }, + JoinDocument: { + additionalProperties: false, + properties: { + keys: { + items: { $ref: "#/$defs/JoinKeyPairDocument" }, + minItems: 1, + title: "Keys", + type: "array", + }, + metadata: { $ref: "#/$defs/JsonObject" }, + type: { enum: ["inner", "left", "right", "full"], title: "Type", type: "string" }, + }, + required: ["type", "keys"], + title: "JoinDocument", + type: "object", + }, + JoinKeyPairDocument: { + additionalProperties: false, + properties: { + left: { title: "Left", type: "string" }, + right: { title: "Right", type: "string" }, + }, + required: ["left", "right"], + title: "JoinKeyPairDocument", + type: "object", + }, + JsonObject: { additionalProperties: { $ref: "#/$defs/JsonValue" }, type: "object" }, + JsonValue: {}, + ManualTrigger: { + additionalProperties: false, + properties: { + cron: { default: null, title: "Cron", type: "null" }, + depends_on: { items: { type: "string" }, maxItems: 0, title: "Depends On", type: "array" }, + event: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Event" }, + kind: { const: "manual", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + }, + required: ["kind"], + title: "ManualTrigger", + type: "object", + }, + MatchLogic: { + description: "How a filter's flat condition list combines.", + enum: ["all", "any"], + title: "MatchLogic", + type: "string", + }, + NodeFieldDocument: { + additionalProperties: false, + properties: { + cast_to: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Cast To" }, + description: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Description", + }, + extensions: { + items: { $ref: "#/$defs/ProviderExtension" }, + title: "Extensions", + type: "array", + }, + metadata: { $ref: "#/$defs/JsonObject" }, + name: { title: "Name", type: "string" }, + nullable: { default: true, title: "Nullable", type: "boolean" }, + tests: { items: { $ref: "#/$defs/FieldTestDocument" }, title: "Tests", type: "array" }, + type: { title: "Type", type: "string" }, + }, + required: ["name", "type"], + title: "NodeFieldDocument", + type: "object", + }, + NodeVisualDocument: { + additionalProperties: false, + properties: { + color: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Color" }, + icon: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Icon" }, + position: { + anyOf: [{ $ref: "#/$defs/PositionDocument" }, { type: "null" }], + default: null, + }, + }, + title: "NodeVisualDocument", + type: "object", + }, + NotNullFieldTest: { + additionalProperties: false, + properties: { + field: { default: null, title: "Field", type: "null" }, + kind: { const: "not_null", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + to: { default: null, title: "To", type: "null" }, + values: { + items: { $ref: "#/$defs/JsonValue" }, + maxItems: 0, + title: "Values", + type: "array", + }, + }, + required: ["kind"], + title: "NotNullFieldTest", + type: "object", + }, + OperationDocument: { + anyOf: [ + { $ref: "#/$defs/TruncateStringOperation" }, + { $ref: "#/$defs/TrimWhitespaceOperation" }, + { $ref: "#/$defs/DefaultValueOperation" }, + { $ref: "#/$defs/FilterRowsOperation" }, + ], + }, + PartitioningDocument: { + additionalProperties: false, + properties: { + field: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Field" }, + granularity: { $ref: "#/$defs/PartitioningType", default: "day" }, + require_partition_filter: { + default: false, + title: "Require Partition Filter", + type: "boolean", + }, + }, + title: "PartitioningDocument", + type: "object", + }, + PartitioningType: { + description: + "The closed set of time-unit partitioning granularities a `PartitioningSpec` may declare.\n\nA `StrEnum` (matching the `WriteMode`/`TransformationKind`/`JoinType` convention elsewhere in\n`dander.pipeline`), so it serializes to/from its plain string value stably in YAML and JSON;\nan out-of-set value fails validation with a clear `ValidationError`. Scope is deliberately\nlimited to BigQuery time-unit partitioning — integer-range partitioning is a deferred future\nmember (see `steering/02-engineering.md` on avoiding speculative generality).\n\nAttributes:\n HOUR: Hourly partitions.\n DAY: Daily partitions — the common case and BigQuery's default granularity.\n MONTH: Monthly partitions.\n YEAR: Yearly partitions.", + enum: ["hour", "day", "month", "year"], + title: "PartitioningType", + type: "string", + }, + PipelineGraphDocument: { + additionalProperties: false, + description: + "Canonical graph transport whose construction reuses Dander semantic validation.", + properties: { + edges: { items: { $ref: "#/$defs/EdgeDocument" }, title: "Edges", type: "array" }, + name: { title: "Name", type: "string" }, + nodes: { items: { $ref: "#/$defs/GraphNodeDocument" }, title: "Nodes", type: "array" }, + trigger: { anyOf: [{ $ref: "#/$defs/TriggerDocument" }, { type: "null" }], default: null }, + }, + required: ["name"], + title: "PipelineGraphDocument", + type: "object", + }, + PositionDocument: { + additionalProperties: false, + properties: { x: { title: "X", type: "number" }, y: { title: "Y", type: "number" } }, + required: ["x", "y"], + title: "PositionDocument", + type: "object", + }, + ProviderExtension: { + additionalProperties: false, + description: "One deterministic provider-specific schema annotation, never a credential.", + properties: { + name: { title: "Name", type: "string" }, + provider: { title: "Provider", type: "string" }, + value: { + anyOf: [{ type: "string" }, { type: "integer" }, { type: "number" }, { type: "boolean" }], + title: "Value", + }, + }, + required: ["provider", "name", "value"], + title: "ProviderExtension", + type: "object", + }, + RelationshipsFieldTest: { + additionalProperties: false, + properties: { + field: { minLength: 1, title: "Field", type: "string" }, + kind: { const: "relationships", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + to: { minLength: 1, title: "To", type: "string" }, + values: { + items: { $ref: "#/$defs/JsonValue" }, + maxItems: 0, + title: "Values", + type: "array", + }, + }, + required: ["kind", "to", "field"], + title: "RelationshipsFieldTest", + type: "object", + }, + RequestSpecDocument: { + additionalProperties: false, + properties: { + body: { + anyOf: [{ $ref: "#/$defs/JsonObject" }, { type: "string" }, { type: "null" }], + default: null, + title: "Body", + }, + headers: { additionalProperties: { type: "string" }, title: "Headers", type: "object" }, + method: { $ref: "#/$defs/HttpMethod", default: "GET" }, + query_params: { + additionalProperties: { type: "string" }, + title: "Query Params", + type: "object", + }, + }, + title: "RequestSpecDocument", + type: "object", + }, + ScheduleTrigger: { + additionalProperties: false, + properties: { + cron: { minLength: 1, title: "Cron", type: "string" }, + depends_on: { items: { type: "string" }, maxItems: 0, title: "Depends On", type: "array" }, + event: { default: null, title: "Event", type: "null" }, + kind: { const: "schedule", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + }, + required: ["kind", "cron"], + title: "ScheduleTrigger", + type: "object", + }, + SchemaEvolution: { + description: "How a writer handles declared columns absent from an existing target.", + enum: ["strict", "additive"], + title: "SchemaEvolution", + type: "string", + }, + SourceNodeConfigDocument: { + additionalProperties: { $ref: "#/$defs/JsonValue" }, + properties: { + connector: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Connector", + }, + endpoint: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Endpoint", + }, + request: { + anyOf: [{ $ref: "#/$defs/RequestSpecDocument" }, { type: "null" }], + default: null, + }, + }, + title: "SourceNodeConfigDocument", + type: "object", + }, + SourceNodeDocument: { + additionalProperties: false, + not: { required: ["config", "params"] }, + properties: { + config: { $ref: "#/$defs/SourceNodeConfigDocument" }, + cursor: { + anyOf: [{ $ref: "#/$defs/CursorStrategyDocument" }, { type: "null" }], + default: null, + }, + fields: { items: { $ref: "#/$defs/NodeFieldDocument" }, title: "Fields", type: "array" }, + id: { title: "Id", type: "string" }, + name: { title: "Name", type: "string" }, + params: { + anyOf: [{ $ref: "#/$defs/SourceNodeConfigDocument" }, { type: "null" }], + default: null, + deprecated: true, + "x-dander-canonical-name": "config", + }, + trigger: { anyOf: [{ $ref: "#/$defs/TriggerDocument" }, { type: "null" }], default: null }, + type: { const: "source", title: "Type", type: "string" }, + visual: { + anyOf: [{ $ref: "#/$defs/NodeVisualDocument" }, { type: "null" }], + default: null, + }, + }, + required: ["id", "type", "name"], + title: "SourceNodeDocument", + type: "object", + }, + TargetNodeConfigDocument: { + additionalProperties: { $ref: "#/$defs/JsonValue" }, + properties: { + writer: { anyOf: [{ $ref: "#/$defs/WriterDocument" }, { type: "null" }], default: null }, + }, + title: "TargetNodeConfigDocument", + type: "object", + }, + TargetNodeDocument: { + additionalProperties: false, + not: { required: ["config", "params"] }, + properties: { + config: { $ref: "#/$defs/TargetNodeConfigDocument" }, + cursor: { + anyOf: [{ $ref: "#/$defs/CursorStrategyDocument" }, { type: "null" }], + default: null, + }, + fields: { items: { $ref: "#/$defs/NodeFieldDocument" }, title: "Fields", type: "array" }, + id: { title: "Id", type: "string" }, + name: { title: "Name", type: "string" }, + params: { + anyOf: [{ $ref: "#/$defs/TargetNodeConfigDocument" }, { type: "null" }], + default: null, + deprecated: true, + "x-dander-canonical-name": "config", + }, + trigger: { anyOf: [{ $ref: "#/$defs/TriggerDocument" }, { type: "null" }], default: null }, + type: { const: "target", title: "Type", type: "string" }, + visual: { + anyOf: [{ $ref: "#/$defs/NodeVisualDocument" }, { type: "null" }], + default: null, + }, + }, + required: ["id", "type", "name"], + title: "TargetNodeDocument", + type: "object", + }, + TransformJoinDocument: { + additionalProperties: false, + properties: { + keys: { + items: { $ref: "#/$defs/ExecutableJoinKeyDocument" }, + minItems: 1, + title: "Keys", + type: "array", + }, + left_input: { minLength: 1, title: "Left Input", type: "string" }, + right_input: { minLength: 1, title: "Right Input", type: "string" }, + type: { $ref: "#/$defs/ExecutableJoinType" }, + }, + required: ["left_input", "right_input", "type", "keys"], + title: "TransformJoinDocument", + type: "object", + }, + TransformNodeConfigDocument: { + additionalProperties: { $ref: "#/$defs/JsonValue" }, + properties: { + join: { + anyOf: [{ $ref: "#/$defs/TransformJoinDocument" }, { type: "null" }], + default: null, + }, + operations: { + items: { $ref: "#/$defs/OperationDocument" }, + title: "Operations", + type: "array", + }, + }, + title: "TransformNodeConfigDocument", + type: "object", + }, + TransformNodeDocument: { + additionalProperties: false, + not: { required: ["config", "params"] }, + properties: { + config: { $ref: "#/$defs/TransformNodeConfigDocument" }, + cursor: { + anyOf: [{ $ref: "#/$defs/CursorStrategyDocument" }, { type: "null" }], + default: null, + }, + fields: { items: { $ref: "#/$defs/NodeFieldDocument" }, title: "Fields", type: "array" }, + id: { title: "Id", type: "string" }, + name: { title: "Name", type: "string" }, + params: { + anyOf: [{ $ref: "#/$defs/TransformNodeConfigDocument" }, { type: "null" }], + default: null, + deprecated: true, + "x-dander-canonical-name": "config", + }, + trigger: { anyOf: [{ $ref: "#/$defs/TriggerDocument" }, { type: "null" }], default: null }, + type: { const: "transform", title: "Type", type: "string" }, + visual: { + anyOf: [{ $ref: "#/$defs/NodeVisualDocument" }, { type: "null" }], + default: null, + }, + }, + required: ["id", "type", "name"], + title: "TransformNodeDocument", + type: "object", + }, + TransformationDocument: { + anyOf: [ + { $ref: "#/$defs/DirectTransformation" }, + { $ref: "#/$defs/ExpressionTransformation" }, + { $ref: "#/$defs/ConstantTransformation" }, + { $ref: "#/$defs/CustomCodeTransformation" }, + ], + }, + TriggerDocument: { + anyOf: [ + { $ref: "#/$defs/ScheduleTrigger" }, + { $ref: "#/$defs/DependencyTrigger" }, + { $ref: "#/$defs/ManualTrigger" }, + ], + }, + TrimWhitespaceOperation: { + additionalProperties: false, + properties: { + kind: { const: "trim_whitespace", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + params: { $ref: "#/$defs/TrimWhitespaceParamsDocument" }, + }, + required: ["kind", "params"], + title: "TrimWhitespaceOperation", + type: "object", + }, + TrimWhitespaceParamsDocument: { + additionalProperties: false, + properties: { + field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" }, + }, + required: ["field"], + title: "TrimWhitespaceParamsDocument", + type: "object", + }, + TruncateStringOperation: { + additionalProperties: false, + properties: { + kind: { const: "truncate_string", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + params: { $ref: "#/$defs/TruncateStringParamsDocument" }, + }, + required: ["kind", "params"], + title: "TruncateStringOperation", + type: "object", + }, + TruncateStringParamsDocument: { + additionalProperties: false, + properties: { + field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" }, + max_length: { minimum: 0, title: "Max Length", type: "integer" }, + }, + required: ["field", "max_length"], + title: "TruncateStringParamsDocument", + type: "object", + }, + UniqueFieldTest: { + additionalProperties: false, + properties: { + field: { default: null, title: "Field", type: "null" }, + kind: { const: "unique", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + to: { default: null, title: "To", type: "null" }, + values: { + items: { $ref: "#/$defs/JsonValue" }, + maxItems: 0, + title: "Values", + type: "array", + }, + }, + required: ["kind"], + title: "UniqueFieldTest", + type: "object", + }, + WriteMode: { + description: "Supported load strategies.", + enum: ["scd1", "scd2", "snapshot", "incremental", "replace"], + title: "WriteMode", + type: "string", + }, + WriterDocument: { + additionalProperties: false, + properties: { + clustering: { items: { type: "string" }, maxItems: 4, title: "Clustering", type: "array" }, + cursor_field: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Cursor Field", + }, + destination: { $ref: "#/$defs/DestinationDocument" }, + max_batch_rows: { + default: 10000, + exclusiveMinimum: 0, + maximum: 100000, + title: "Max Batch Rows", + type: "integer", + }, + partitioning: { + anyOf: [{ $ref: "#/$defs/PartitioningDocument" }, { type: "null" }], + default: null, + }, + schema_evolution: { $ref: "#/$defs/SchemaEvolution", default: "strict" }, + transport: { + default: "load_job", + enum: ["load_job", "storage_write", "copy"], + title: "Transport", + type: "string", + }, + write_mode: { $ref: "#/$defs/WriteMode" }, + }, + required: ["write_mode", "destination"], + title: "WriterDocument", + type: "object", + }, + }, + $id: "urn:dander:control:contracts:v1:graph-create", + $schema: "https://json-schema.org/draft/2020-12/schema", + additionalProperties: false, + description: "Create one named graph through the hosted project collection route.", + properties: { + document: { $ref: "#/$defs/PipelineGraphDocument" }, + graph: { title: "Graph", type: "string" }, + }, + required: ["graph", "document"], + title: "GraphCreateRequest", + type: "object", +}; +const schema61 = { + additionalProperties: false, + description: "Canonical graph transport whose construction reuses Dander semantic validation.", + properties: { + edges: { items: { $ref: "#/$defs/EdgeDocument" }, title: "Edges", type: "array" }, + name: { title: "Name", type: "string" }, + nodes: { items: { $ref: "#/$defs/GraphNodeDocument" }, title: "Nodes", type: "array" }, + trigger: { anyOf: [{ $ref: "#/$defs/TriggerDocument" }, { type: "null" }], default: null }, + }, + required: ["name"], + title: "PipelineGraphDocument", + type: "object", +}; +const schema62 = { + additionalProperties: false, + properties: { + from: { title: "From", type: "string" }, + join: { anyOf: [{ $ref: "#/$defs/JoinDocument" }, { type: "null" }], default: null }, + mappings: { items: { $ref: "#/$defs/FieldMappingDocument" }, title: "Mappings", type: "array" }, + metadata: { $ref: "#/$defs/JsonObject" }, + to: { title: "To", type: "string" }, + }, + required: ["from", "to"], + title: "EdgeDocument", + type: "object", +}; +const schema63 = { + additionalProperties: false, + properties: { + keys: { + items: { $ref: "#/$defs/JoinKeyPairDocument" }, + minItems: 1, + title: "Keys", + type: "array", + }, + metadata: { $ref: "#/$defs/JsonObject" }, + type: { enum: ["inner", "left", "right", "full"], title: "Type", type: "string" }, + }, + required: ["type", "keys"], + title: "JoinDocument", + type: "object", +}; +const schema64 = { + additionalProperties: false, + properties: { + left: { title: "Left", type: "string" }, + right: { title: "Right", type: "string" }, + }, + required: ["left", "right"], + title: "JoinKeyPairDocument", + type: "object", +}; +const schema65 = { additionalProperties: { $ref: "#/$defs/JsonValue" }, type: "object" }; +const schema66 = {}; + +function validate45( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate45.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + } else { + const err0 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + validate45.errors = vErrors; + return errors === 0; +} +validate45.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +function validate44( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate44.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.type === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "type" }, + message: "must have required property '" + "type" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + if (data.keys === undefined) { + const err1 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "keys" }, + message: "must have required property '" + "keys" + "'", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + for (const key0 in data) { + if (!(key0 === "keys" || key0 === "metadata" || key0 === "type")) { + const err2 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + } + if (data.keys !== undefined) { + let data0 = data.keys; + if (Array.isArray(data0)) { + if (data0.length < 1) { + const err3 = { + instancePath: instancePath + "/keys", + schemaPath: "#/properties/keys/minItems", + keyword: "minItems", + params: { limit: 1 }, + message: "must NOT have fewer than 1 items", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + const len0 = data0.length; + for (let i0 = 0; i0 < len0; i0++) { + let data1 = data0[i0]; + if (data1 && typeof data1 == "object" && !Array.isArray(data1)) { + if (data1.left === undefined) { + const err4 = { + instancePath: instancePath + "/keys/" + i0, + schemaPath: "#/$defs/JoinKeyPairDocument/required", + keyword: "required", + params: { missingProperty: "left" }, + message: "must have required property '" + "left" + "'", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + if (data1.right === undefined) { + const err5 = { + instancePath: instancePath + "/keys/" + i0, + schemaPath: "#/$defs/JoinKeyPairDocument/required", + keyword: "required", + params: { missingProperty: "right" }, + message: "must have required property '" + "right" + "'", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + for (const key1 in data1) { + if (!(key1 === "left" || key1 === "right")) { + const err6 = { + instancePath: instancePath + "/keys/" + i0, + schemaPath: "#/$defs/JoinKeyPairDocument/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + } + if (data1.left !== undefined) { + if (typeof data1.left !== "string") { + const err7 = { + instancePath: instancePath + "/keys/" + i0 + "/left", + schemaPath: "#/$defs/JoinKeyPairDocument/properties/left/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } + } + if (data1.right !== undefined) { + if (typeof data1.right !== "string") { + const err8 = { + instancePath: instancePath + "/keys/" + i0 + "/right", + schemaPath: "#/$defs/JoinKeyPairDocument/properties/right/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } + } + } else { + const err9 = { + instancePath: instancePath + "/keys/" + i0, + schemaPath: "#/$defs/JoinKeyPairDocument/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + } + } else { + const err10 = { + instancePath: instancePath + "/keys", + schemaPath: "#/properties/keys/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; + } + } + if (data.metadata !== undefined) { + if ( + !validate45(data.metadata, { + instancePath: instancePath + "/metadata", + parentData: data, + parentDataProperty: "metadata", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); + errors = vErrors.length; + } + } + if (data.type !== undefined) { + let data5 = data.type; + if (typeof data5 !== "string") { + const err11 = { + instancePath: instancePath + "/type", + schemaPath: "#/properties/type/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } + if (!(data5 === "inner" || data5 === "left" || data5 === "right" || data5 === "full")) { + const err12 = { + instancePath: instancePath + "/type", + schemaPath: "#/properties/type/enum", + keyword: "enum", + params: { allowedValues: schema63.properties.type.enum }, + message: "must be equal to one of the allowed values", + }; + if (vErrors === null) { + vErrors = [err12]; + } else { + vErrors.push(err12); + } + errors++; + } + } + } else { + const err13 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err13]; + } else { + vErrors.push(err13); + } + errors++; + } + validate44.errors = vErrors; + return errors === 0; +} +validate44.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +const schema67 = { + additionalProperties: false, + properties: { + metadata: { $ref: "#/$defs/JsonObject" }, + source: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Source" }, + target: { title: "Target", type: "string" }, + transformation: { + anyOf: [{ $ref: "#/$defs/TransformationDocument" }, { type: "null" }], + default: null, + }, + }, + required: ["target"], + title: "FieldMappingDocument", + type: "object", +}; +const schema68 = { + anyOf: [ + { $ref: "#/$defs/DirectTransformation" }, + { $ref: "#/$defs/ExpressionTransformation" }, + { $ref: "#/$defs/ConstantTransformation" }, + { $ref: "#/$defs/CustomCodeTransformation" }, + ], +}; +const schema69 = { + additionalProperties: false, + properties: { + arguments: { $ref: "#/$defs/EmptyObject" }, + constant: { default: null, title: "Constant", type: "null" }, + expression: { default: null, title: "Expression", type: "null" }, + function: { default: null, title: "Function", type: "null" }, + inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, + kind: { const: "direct", default: "direct", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + }, + title: "DirectTransformation", + type: "object", +}; +const schema70 = { + additionalProperties: false, + description: "A JSON object that must contain no properties.", + properties: {}, + title: "EmptyObject", + type: "object", +}; + +function validate51( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate51.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + for (const key0 in data) { + if (!( + key0 === "arguments" || + key0 === "constant" || + key0 === "expression" || + key0 === "function" || + key0 === "inputs" || + key0 === "kind" || + key0 === "metadata" + )) { + const err0 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + } + if (data.arguments !== undefined) { + let data0 = data.arguments; + if (data0 && typeof data0 == "object" && !Array.isArray(data0)) { + for (const key1 in data0) { + const err1 = { + instancePath: instancePath + "/arguments", + schemaPath: "#/$defs/EmptyObject/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + } else { + const err2 = { + instancePath: instancePath + "/arguments", + schemaPath: "#/$defs/EmptyObject/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + } + if (data.constant !== undefined) { + if (data.constant !== null) { + const err3 = { + instancePath: instancePath + "/constant", + schemaPath: "#/properties/constant/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + } + if (data.expression !== undefined) { + if (data.expression !== null) { + const err4 = { + instancePath: instancePath + "/expression", + schemaPath: "#/properties/expression/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + } + if (data.function !== undefined) { + if (data.function !== null) { + const err5 = { + instancePath: instancePath + "/function", + schemaPath: "#/properties/function/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + } + if (data.inputs !== undefined) { + let data4 = data.inputs; + if (Array.isArray(data4)) { + const len0 = data4.length; + for (let i0 = 0; i0 < len0; i0++) { + if (typeof data4[i0] !== "string") { + const err6 = { + instancePath: instancePath + "/inputs/" + i0, + schemaPath: "#/properties/inputs/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + } + } else { + const err7 = { + instancePath: instancePath + "/inputs", + schemaPath: "#/properties/inputs/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } + } + if (data.kind !== undefined) { + let data6 = data.kind; + if (typeof data6 !== "string") { + const err8 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } + if ("direct" !== data6) { + const err9 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/const", + keyword: "const", + params: { allowedValue: "direct" }, + message: "must be equal to constant", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + } + if (data.metadata !== undefined) { + if ( + !validate45(data.metadata, { + instancePath: instancePath + "/metadata", + parentData: data, + parentDataProperty: "metadata", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); + errors = vErrors.length; + } + } + } else { + const err10 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; + } + validate51.errors = vErrors; + return errors === 0; +} +validate51.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +const schema71 = { + additionalProperties: false, + properties: { + arguments: { $ref: "#/$defs/EmptyObject" }, + constant: { default: null, title: "Constant", type: "null" }, + expression: { minLength: 1, title: "Expression", type: "string" }, + function: { default: null, title: "Function", type: "null" }, + inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, + kind: { const: "expression", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + }, + required: ["kind", "expression"], + title: "ExpressionTransformation", + type: "object", +}; + +function validate54( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate54.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.kind === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "kind" }, + message: "must have required property '" + "kind" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + if (data.expression === undefined) { + const err1 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "expression" }, + message: "must have required property '" + "expression" + "'", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + for (const key0 in data) { + if (!( + key0 === "arguments" || + key0 === "constant" || + key0 === "expression" || + key0 === "function" || + key0 === "inputs" || + key0 === "kind" || + key0 === "metadata" + )) { + const err2 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + } + if (data.arguments !== undefined) { + let data0 = data.arguments; + if (data0 && typeof data0 == "object" && !Array.isArray(data0)) { + for (const key1 in data0) { + const err3 = { + instancePath: instancePath + "/arguments", + schemaPath: "#/$defs/EmptyObject/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + } else { + const err4 = { + instancePath: instancePath + "/arguments", + schemaPath: "#/$defs/EmptyObject/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + } + if (data.constant !== undefined) { + if (data.constant !== null) { + const err5 = { + instancePath: instancePath + "/constant", + schemaPath: "#/properties/constant/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + } + if (data.expression !== undefined) { + let data2 = data.expression; + if (typeof data2 === "string") { + if (func3(data2) < 1) { + const err6 = { + instancePath: instancePath + "/expression", + schemaPath: "#/properties/expression/minLength", + keyword: "minLength", + params: { limit: 1 }, + message: "must NOT have fewer than 1 characters", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + } else { + const err7 = { + instancePath: instancePath + "/expression", + schemaPath: "#/properties/expression/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } + } + if (data.function !== undefined) { + if (data.function !== null) { + const err8 = { + instancePath: instancePath + "/function", + schemaPath: "#/properties/function/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } + } + if (data.inputs !== undefined) { + let data4 = data.inputs; + if (Array.isArray(data4)) { + const len0 = data4.length; + for (let i0 = 0; i0 < len0; i0++) { + if (typeof data4[i0] !== "string") { + const err9 = { + instancePath: instancePath + "/inputs/" + i0, + schemaPath: "#/properties/inputs/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + } + } else { + const err10 = { + instancePath: instancePath + "/inputs", + schemaPath: "#/properties/inputs/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; + } + } + if (data.kind !== undefined) { + let data6 = data.kind; + if (typeof data6 !== "string") { + const err11 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } + if ("expression" !== data6) { + const err12 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/const", + keyword: "const", + params: { allowedValue: "expression" }, + message: "must be equal to constant", + }; + if (vErrors === null) { + vErrors = [err12]; + } else { + vErrors.push(err12); + } + errors++; + } + } + if (data.metadata !== undefined) { + if ( + !validate45(data.metadata, { + instancePath: instancePath + "/metadata", + parentData: data, + parentDataProperty: "metadata", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); + errors = vErrors.length; + } + } + } else { + const err13 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err13]; + } else { + vErrors.push(err13); + } + errors++; + } + validate54.errors = vErrors; + return errors === 0; +} +validate54.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +const schema73 = { + additionalProperties: false, + properties: { + arguments: { $ref: "#/$defs/EmptyObject" }, + constant: { $ref: "#/$defs/JsonValue" }, + expression: { default: null, title: "Expression", type: "null" }, + function: { default: null, title: "Function", type: "null" }, + inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, + kind: { const: "constant", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + }, + required: ["kind", "constant"], + title: "ConstantTransformation", + type: "object", +}; + +function validate57( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate57.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.kind === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "kind" }, + message: "must have required property '" + "kind" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + if (data.constant === undefined) { + const err1 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "constant" }, + message: "must have required property '" + "constant" + "'", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + for (const key0 in data) { + if (!( + key0 === "arguments" || + key0 === "constant" || + key0 === "expression" || + key0 === "function" || + key0 === "inputs" || + key0 === "kind" || + key0 === "metadata" + )) { + const err2 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + } + if (data.arguments !== undefined) { + let data0 = data.arguments; + if (data0 && typeof data0 == "object" && !Array.isArray(data0)) { + for (const key1 in data0) { + const err3 = { + instancePath: instancePath + "/arguments", + schemaPath: "#/$defs/EmptyObject/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + } else { + const err4 = { + instancePath: instancePath + "/arguments", + schemaPath: "#/$defs/EmptyObject/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + } + if (data.expression !== undefined) { + if (data.expression !== null) { + const err5 = { + instancePath: instancePath + "/expression", + schemaPath: "#/properties/expression/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + } + if (data.function !== undefined) { + if (data.function !== null) { + const err6 = { + instancePath: instancePath + "/function", + schemaPath: "#/properties/function/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + } + if (data.inputs !== undefined) { + let data4 = data.inputs; + if (Array.isArray(data4)) { + const len0 = data4.length; + for (let i0 = 0; i0 < len0; i0++) { + if (typeof data4[i0] !== "string") { + const err7 = { + instancePath: instancePath + "/inputs/" + i0, + schemaPath: "#/properties/inputs/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } + } + } else { + const err8 = { + instancePath: instancePath + "/inputs", + schemaPath: "#/properties/inputs/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } + } + if (data.kind !== undefined) { + let data6 = data.kind; + if (typeof data6 !== "string") { + const err9 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + if ("constant" !== data6) { + const err10 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/const", + keyword: "const", + params: { allowedValue: "constant" }, + message: "must be equal to constant", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; + } + } + if (data.metadata !== undefined) { + if ( + !validate45(data.metadata, { + instancePath: instancePath + "/metadata", + parentData: data, + parentDataProperty: "metadata", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); + errors = vErrors.length; + } + } + } else { + const err11 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } + validate57.errors = vErrors; + return errors === 0; +} +validate57.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +const schema76 = { + additionalProperties: false, + properties: { + arguments: { $ref: "#/$defs/JsonObject" }, + constant: { default: null, title: "Constant", type: "null" }, + expression: { default: null, title: "Expression", type: "null" }, + function: { + pattern: "^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*$", + title: "Function", + type: "string", + }, + inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, + kind: { const: "custom_code", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + }, + required: ["kind", "function"], + title: "CustomCodeTransformation", + type: "object", +}; +const pattern9 = new RegExp("^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*$", "u"); + +function validate60( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate60.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.kind === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "kind" }, + message: "must have required property '" + "kind" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + if (data.function === undefined) { + const err1 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "function" }, + message: "must have required property '" + "function" + "'", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + for (const key0 in data) { + if (!( + key0 === "arguments" || + key0 === "constant" || + key0 === "expression" || + key0 === "function" || + key0 === "inputs" || + key0 === "kind" || + key0 === "metadata" + )) { + const err2 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + } + if (data.arguments !== undefined) { + if ( + !validate45(data.arguments, { + instancePath: instancePath + "/arguments", + parentData: data, + parentDataProperty: "arguments", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); + errors = vErrors.length; + } + } + if (data.constant !== undefined) { + if (data.constant !== null) { + const err3 = { + instancePath: instancePath + "/constant", + schemaPath: "#/properties/constant/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + } + if (data.expression !== undefined) { + if (data.expression !== null) { + const err4 = { + instancePath: instancePath + "/expression", + schemaPath: "#/properties/expression/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + } + if (data.function !== undefined) { + let data3 = data.function; + if (typeof data3 === "string") { + if (!pattern9.test(data3)) { + const err5 = { + instancePath: instancePath + "/function", + schemaPath: "#/properties/function/pattern", + keyword: "pattern", + params: { pattern: "^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*$" }, + message: + 'must match pattern "' + "^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*$" + '"', + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + } else { + const err6 = { + instancePath: instancePath + "/function", + schemaPath: "#/properties/function/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + } + if (data.inputs !== undefined) { + let data4 = data.inputs; + if (Array.isArray(data4)) { + const len0 = data4.length; + for (let i0 = 0; i0 < len0; i0++) { + if (typeof data4[i0] !== "string") { + const err7 = { + instancePath: instancePath + "/inputs/" + i0, + schemaPath: "#/properties/inputs/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } + } + } else { + const err8 = { + instancePath: instancePath + "/inputs", + schemaPath: "#/properties/inputs/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } + } + if (data.kind !== undefined) { + let data6 = data.kind; + if (typeof data6 !== "string") { + const err9 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + if ("custom_code" !== data6) { + const err10 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/const", + keyword: "const", + params: { allowedValue: "custom_code" }, + message: "must be equal to constant", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; + } + } + if (data.metadata !== undefined) { + if ( + !validate45(data.metadata, { + instancePath: instancePath + "/metadata", + parentData: data, + parentDataProperty: "metadata", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); + errors = vErrors.length; + } + } + } else { + const err11 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } + validate60.errors = vErrors; + return errors === 0; +} +validate60.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +function validate50( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate50.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + const _errs0 = errors; + let valid0 = false; + const _errs1 = errors; + if ( + !validate51(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + ) { + vErrors = vErrors === null ? validate51.errors : vErrors.concat(validate51.errors); + errors = vErrors.length; + } + var _valid0 = _errs1 === errors; + valid0 = valid0 || _valid0; + if (_valid0) { + var props0 = true; + } + const _errs2 = errors; + if ( + !validate54(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + ) { + vErrors = vErrors === null ? validate54.errors : vErrors.concat(validate54.errors); + errors = vErrors.length; + } + var _valid0 = _errs2 === errors; valid0 = valid0 || _valid0; if (_valid0) { if (props0 !== true) { @@ -5451,9 +8105,9 @@ function validate40( } const _errs3 = errors; if ( - !validate47(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate57(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate47.errors : vErrors.concat(validate47.errors); + vErrors = vErrors === null ? validate57.errors : vErrors.concat(validate57.errors); errors = vErrors.length; } var _valid0 = _errs3 === errors; @@ -5465,9 +8119,9 @@ function validate40( } const _errs4 = errors; if ( - !validate50(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate60(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate50.errors : vErrors.concat(validate50.errors); + vErrors = vErrors === null ? validate60.errors : vErrors.concat(validate60.errors); errors = vErrors.length; } var _valid0 = _errs4 === errors; @@ -5501,19 +8155,19 @@ function validate40( } } } - validate40.errors = vErrors; + validate50.errors = vErrors; evaluated0.props = props0; return errors === 0; } -validate40.evaluated = { dynamicProps: true, dynamicItems: false }; +validate50.evaluated = { dynamicProps: true, dynamicItems: false }; -function validate38( +function validate48( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate38.evaluated; + const evaluated0 = validate48.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -5560,7 +8214,7 @@ function validate38( } if (data.metadata !== undefined) { if ( - !validate35(data.metadata, { + !validate45(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -5568,7 +8222,7 @@ function validate38( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); errors = vErrors.length; } } @@ -5660,7 +8314,7 @@ function validate38( let valid2 = false; const _errs13 = errors; if ( - !validate40(data3, { + !validate50(data3, { instancePath: instancePath + "/transformation", parentData: data, parentDataProperty: "transformation", @@ -5668,7 +8322,7 @@ function validate38( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate40.errors : vErrors.concat(validate40.errors); + vErrors = vErrors === null ? validate50.errors : vErrors.concat(validate50.errors); errors = vErrors.length; } var _valid1 = _errs13 === errors; @@ -5731,18 +8385,18 @@ function validate38( } errors++; } - validate38.errors = vErrors; + validate48.errors = vErrors; return errors === 0; } -validate38.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate48.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate33( +function validate43( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate33.evaluated; + const evaluated0 = validate43.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -5826,7 +8480,7 @@ function validate33( let valid1 = false; const _errs6 = errors; if ( - !validate34(data1, { + !validate44(data1, { instancePath: instancePath + "/join", parentData: data, parentDataProperty: "join", @@ -5834,7 +8488,7 @@ function validate33( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate34.errors : vErrors.concat(validate34.errors); + vErrors = vErrors === null ? validate44.errors : vErrors.concat(validate44.errors); errors = vErrors.length; } var _valid0 = _errs6 === errors; @@ -5888,7 +8542,7 @@ function validate33( const len0 = data2.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate38(data2[i0], { + !validate48(data2[i0], { instancePath: instancePath + "/mappings/" + i0, parentData: data2, parentDataProperty: i0, @@ -5896,7 +8550,7 @@ function validate33( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate38.errors : vErrors.concat(validate38.errors); + vErrors = vErrors === null ? validate48.errors : vErrors.concat(validate48.errors); errors = vErrors.length; } } @@ -5918,7 +8572,7 @@ function validate33( } if (data.metadata !== undefined) { if ( - !validate35(data.metadata, { + !validate45(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -5926,7 +8580,7 @@ function validate33( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); errors = vErrors.length; } } @@ -5962,12 +8616,12 @@ function validate33( } errors++; } - validate33.errors = vErrors; + validate43.errors = vErrors; return errors === 0; } -validate33.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate43.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema65 = { +const schema77 = { anyOf: [ { $ref: "#/$defs/SourceNodeDocument" }, { $ref: "#/$defs/TransformNodeDocument" }, @@ -5975,7 +8629,7 @@ const schema65 = { { $ref: "#/$defs/ExtensionNodeDocument" }, ], }; -const schema66 = { +const schema78 = { additionalProperties: false, not: { required: ["config", "params"] }, properties: { @@ -6001,7 +8655,7 @@ const schema66 = { title: "SourceNodeDocument", type: "object", }; -const schema67 = { +const schema79 = { additionalProperties: { $ref: "#/$defs/JsonValue" }, properties: { connector: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Connector" }, @@ -6011,7 +8665,7 @@ const schema67 = { title: "SourceNodeConfigDocument", type: "object", }; -const schema69 = { +const schema81 = { additionalProperties: false, properties: { body: { @@ -6030,7 +8684,7 @@ const schema69 = { title: "RequestSpecDocument", type: "object", }; -const schema70 = { +const schema82 = { description: "The closed set of HTTP methods a `RequestSpec` may declare.\n\nA `StrEnum` (matching the `TransformationKind`/`JoinType` convention in `graph.py`) so callers\nget a named, importable type that still serializes to/from its plain string value stably in\nYAML and JSON. An out-of-set value fails validation with a clear error at the Pydantic\nboundary. `HEAD`/`OPTIONS` are intentionally omitted (no source currently needs them); extend\nby adding a member later without touching callers.\n\nAttributes:\n GET: Retrieve a resource. The default method (a simple GET needs no explicit spec).\n POST: Create a resource / submit a query body.\n PUT: Replace a resource.\n PATCH: Partially update a resource.\n DELETE: Remove a resource.", enum: ["GET", "POST", "PUT", "PATCH", "DELETE"], @@ -6038,13 +8692,13 @@ const schema70 = { type: "string", }; -function validate61( +function validate71( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate61.evaluated; + const evaluated0 = validate71.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -6080,7 +8734,7 @@ function validate61( let valid1 = false; const _errs4 = errors; if ( - !validate35(data0, { + !validate45(data0, { instancePath: instancePath + "/body", parentData: data, parentDataProperty: "body", @@ -6088,7 +8742,7 @@ function validate61( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); errors = vErrors.length; } var _valid0 = _errs4 === errors; @@ -6219,7 +8873,7 @@ function validate61( instancePath: instancePath + "/method", schemaPath: "#/$defs/HttpMethod/enum", keyword: "enum", - params: { allowedValues: schema70.enum }, + params: { allowedValues: schema82.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -6282,18 +8936,18 @@ function validate61( } errors++; } - validate61.errors = vErrors; + validate71.errors = vErrors; return errors === 0; } -validate61.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate71.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate60( +function validate70( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate60.evaluated; + const evaluated0 = validate70.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -6437,7 +9091,7 @@ function validate60( let valid5 = false; const _errs17 = errors; if ( - !validate61(data3, { + !validate71(data3, { instancePath: instancePath + "/request", parentData: data, parentDataProperty: "request", @@ -6445,7 +9099,7 @@ function validate60( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate61.errors : vErrors.concat(validate61.errors); + vErrors = vErrors === null ? validate71.errors : vErrors.concat(validate71.errors); errors = vErrors.length; } var _valid2 = _errs17 === errors; @@ -6508,12 +9162,12 @@ function validate60( } errors++; } - validate60.errors = vErrors; + validate70.errors = vErrors; return errors === 0; } -validate60.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate70.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema71 = { +const schema83 = { additionalProperties: false, properties: { field: { minLength: 1, title: "Field", type: "string" }, @@ -6526,13 +9180,13 @@ const schema71 = { type: "object", }; -function validate65( +function validate75( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate65.evaluated; + const evaluated0 = validate75.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -6590,7 +9244,7 @@ function validate65( if (data.field !== undefined) { let data0 = data.field; if (typeof data0 === "string") { - if (func2(data0) < 1) { + if (func3(data0) < 1) { const err3 = { instancePath: instancePath + "/field", schemaPath: "#/properties/field/minLength", @@ -6643,7 +9297,7 @@ function validate65( instancePath: instancePath + "/kind", schemaPath: "#/properties/kind/enum", keyword: "enum", - params: { allowedValues: schema71.properties.kind.enum }, + params: { allowedValues: schema83.properties.kind.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -6656,7 +9310,7 @@ function validate65( } if (data.metadata !== undefined) { if ( - !validate35(data.metadata, { + !validate45(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -6664,13 +9318,13 @@ function validate65( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); errors = vErrors.length; } } if (data.params !== undefined) { if ( - !validate35(data.params, { + !validate45(data.params, { instancePath: instancePath + "/params", parentData: data, parentDataProperty: "params", @@ -6678,7 +9332,7 @@ function validate65( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); errors = vErrors.length; } } @@ -6697,12 +9351,12 @@ function validate65( } errors++; } - validate65.errors = vErrors; + validate75.errors = vErrors; return errors === 0; } -validate65.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate75.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema72 = { +const schema84 = { additionalProperties: false, properties: { cast_to: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Cast To" }, @@ -6726,7 +9380,7 @@ const schema72 = { title: "NodeFieldDocument", type: "object", }; -const schema73 = { +const schema85 = { additionalProperties: false, description: "One deterministic provider-specific schema annotation, never a credential.", properties: { @@ -6741,7 +9395,7 @@ const schema73 = { title: "ProviderExtension", type: "object", }; -const schema74 = { +const schema86 = { anyOf: [ { $ref: "#/$defs/NotNullFieldTest" }, { $ref: "#/$defs/UniqueFieldTest" }, @@ -6749,7 +9403,7 @@ const schema74 = { { $ref: "#/$defs/RelationshipsFieldTest" }, ], }; -const schema75 = { +const schema87 = { additionalProperties: false, properties: { field: { default: null, title: "Field", type: "null" }, @@ -6763,13 +9417,13 @@ const schema75 = { type: "object", }; -function validate72( +function validate82( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate72.evaluated; + const evaluated0 = validate82.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -6867,7 +9521,7 @@ function validate72( } if (data.metadata !== undefined) { if ( - !validate35(data.metadata, { + !validate45(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -6875,7 +9529,7 @@ function validate72( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); errors = vErrors.length; } } @@ -6945,12 +9599,12 @@ function validate72( } errors++; } - validate72.errors = vErrors; + validate82.errors = vErrors; return errors === 0; } -validate72.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate82.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema77 = { +const schema89 = { additionalProperties: false, properties: { field: { default: null, title: "Field", type: "null" }, @@ -6964,13 +9618,13 @@ const schema77 = { type: "object", }; -function validate75( +function validate85( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate75.evaluated; + const evaluated0 = validate85.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -7068,7 +9722,7 @@ function validate75( } if (data.metadata !== undefined) { if ( - !validate35(data.metadata, { + !validate45(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -7076,7 +9730,7 @@ function validate75( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); errors = vErrors.length; } } @@ -7146,12 +9800,12 @@ function validate75( } errors++; } - validate75.errors = vErrors; + validate85.errors = vErrors; return errors === 0; } -validate75.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate85.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema79 = { +const schema91 = { additionalProperties: false, properties: { field: { default: null, title: "Field", type: "null" }, @@ -7165,13 +9819,13 @@ const schema79 = { type: "object", }; -function validate78( +function validate88( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate78.evaluated; + const evaluated0 = validate88.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -7284,7 +9938,7 @@ function validate78( } if (data.metadata !== undefined) { if ( - !validate35(data.metadata, { + !validate45(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -7292,7 +9946,7 @@ function validate78( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); errors = vErrors.length; } } @@ -7362,12 +10016,12 @@ function validate78( } errors++; } - validate78.errors = vErrors; + validate88.errors = vErrors; return errors === 0; } -validate78.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate88.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema81 = { +const schema93 = { additionalProperties: false, properties: { field: { minLength: 1, title: "Field", type: "string" }, @@ -7381,13 +10035,13 @@ const schema81 = { type: "object", }; -function validate81( +function validate91( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate81.evaluated; + const evaluated0 = validate91.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -7466,7 +10120,7 @@ function validate81( if (data.field !== undefined) { let data0 = data.field; if (typeof data0 === "string") { - if (func2(data0) < 1) { + if (func3(data0) < 1) { const err4 = { instancePath: instancePath + "/field", schemaPath: "#/properties/field/minLength", @@ -7532,7 +10186,7 @@ function validate81( } if (data.metadata !== undefined) { if ( - !validate35(data.metadata, { + !validate45(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -7540,14 +10194,14 @@ function validate81( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); errors = vErrors.length; } } if (data.to !== undefined) { let data3 = data.to; if (typeof data3 === "string") { - if (func2(data3) < 1) { + if (func3(data3) < 1) { const err8 = { instancePath: instancePath + "/to", schemaPath: "#/properties/to/minLength", @@ -7627,18 +10281,18 @@ function validate81( } errors++; } - validate81.errors = vErrors; + validate91.errors = vErrors; return errors === 0; } -validate81.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate91.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate71( +function validate81( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate71.evaluated; + const evaluated0 = validate81.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -7649,9 +10303,9 @@ function validate71( let valid0 = false; const _errs1 = errors; if ( - !validate72(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate82(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate72.errors : vErrors.concat(validate72.errors); + vErrors = vErrors === null ? validate82.errors : vErrors.concat(validate82.errors); errors = vErrors.length; } var _valid0 = _errs1 === errors; @@ -7661,9 +10315,9 @@ function validate71( } const _errs2 = errors; if ( - !validate75(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate85(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate75.errors : vErrors.concat(validate75.errors); + vErrors = vErrors === null ? validate85.errors : vErrors.concat(validate85.errors); errors = vErrors.length; } var _valid0 = _errs2 === errors; @@ -7675,9 +10329,9 @@ function validate71( } const _errs3 = errors; if ( - !validate78(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate88(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate78.errors : vErrors.concat(validate78.errors); + vErrors = vErrors === null ? validate88.errors : vErrors.concat(validate88.errors); errors = vErrors.length; } var _valid0 = _errs3 === errors; @@ -7689,9 +10343,9 @@ function validate71( } const _errs4 = errors; if ( - !validate81(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate91(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate81.errors : vErrors.concat(validate81.errors); + vErrors = vErrors === null ? validate91.errors : vErrors.concat(validate91.errors); errors = vErrors.length; } var _valid0 = _errs4 === errors; @@ -7725,19 +10379,19 @@ function validate71( } } } - validate71.errors = vErrors; + validate81.errors = vErrors; evaluated0.props = props0; return errors === 0; } -validate71.evaluated = { dynamicProps: true, dynamicItems: false }; +validate81.evaluated = { dynamicProps: true, dynamicItems: false }; -function validate69( +function validate79( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate69.evaluated; + const evaluated0 = validate79.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -8169,7 +10823,7 @@ function validate69( } if (data.metadata !== undefined) { if ( - !validate35(data.metadata, { + !validate45(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -8177,7 +10831,7 @@ function validate69( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); errors = vErrors.length; } } @@ -8221,7 +10875,7 @@ function validate69( const len1 = data10.length; for (let i1 = 0; i1 < len1; i1++) { if ( - !validate71(data10[i1], { + !validate81(data10[i1], { instancePath: instancePath + "/tests/" + i1, parentData: data10, parentDataProperty: i1, @@ -8229,7 +10883,7 @@ function validate69( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate71.errors : vErrors.concat(validate71.errors); + vErrors = vErrors === null ? validate81.errors : vErrors.concat(validate81.errors); errors = vErrors.length; } } @@ -8281,19 +10935,19 @@ function validate69( } errors++; } - validate69.errors = vErrors; + validate79.errors = vErrors; return errors === 0; } -validate69.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate79.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema83 = { +const schema95 = { anyOf: [ { $ref: "#/$defs/ScheduleTrigger" }, { $ref: "#/$defs/DependencyTrigger" }, { $ref: "#/$defs/ManualTrigger" }, ], }; -const schema84 = { +const schema96 = { additionalProperties: false, properties: { cron: { minLength: 1, title: "Cron", type: "string" }, @@ -8307,13 +10961,13 @@ const schema84 = { type: "object", }; -function validate88( +function validate98( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate88.evaluated; + const evaluated0 = validate98.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -8377,7 +11031,7 @@ function validate88( if (data.cron !== undefined) { let data0 = data.cron; if (typeof data0 === "string") { - if (func2(data0) < 1) { + if (func3(data0) < 1) { const err3 = { instancePath: instancePath + "/cron", schemaPath: "#/properties/cron/minLength", @@ -8512,7 +11166,7 @@ function validate88( } if (data.metadata !== undefined) { if ( - !validate35(data.metadata, { + !validate45(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -8520,7 +11174,7 @@ function validate88( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); errors = vErrors.length; } } @@ -8539,12 +11193,12 @@ function validate88( } errors++; } - validate88.errors = vErrors; + validate98.errors = vErrors; return errors === 0; } -validate88.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate98.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema85 = { +const schema97 = { additionalProperties: false, properties: { cron: { default: null, title: "Cron", type: "null" }, @@ -8558,13 +11212,13 @@ const schema85 = { type: "object", }; -function validate91( +function validate101( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate91.evaluated; + const evaluated0 = validate101.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -8746,7 +11400,7 @@ function validate91( } if (data.metadata !== undefined) { if ( - !validate35(data.metadata, { + !validate45(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -8754,7 +11408,7 @@ function validate91( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); errors = vErrors.length; } } @@ -8773,12 +11427,12 @@ function validate91( } errors++; } - validate91.errors = vErrors; + validate101.errors = vErrors; return errors === 0; } -validate91.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate101.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema86 = { +const schema98 = { additionalProperties: false, properties: { cron: { default: null, title: "Cron", type: "null" }, @@ -8792,13 +11446,13 @@ const schema86 = { type: "object", }; -function validate94( +function validate104( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate94.evaluated; + const evaluated0 = validate104.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -9013,7 +11667,7 @@ function validate94( } if (data.metadata !== undefined) { if ( - !validate35(data.metadata, { + !validate45(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -9021,7 +11675,7 @@ function validate94( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); errors = vErrors.length; } } @@ -9040,18 +11694,18 @@ function validate94( } errors++; } - validate94.errors = vErrors; + validate104.errors = vErrors; return errors === 0; } -validate94.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate104.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate87( +function validate97( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate87.evaluated; + const evaluated0 = validate97.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -9062,9 +11716,9 @@ function validate87( let valid0 = false; const _errs1 = errors; if ( - !validate88(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate98(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate88.errors : vErrors.concat(validate88.errors); + vErrors = vErrors === null ? validate98.errors : vErrors.concat(validate98.errors); errors = vErrors.length; } var _valid0 = _errs1 === errors; @@ -9074,9 +11728,9 @@ function validate87( } const _errs2 = errors; if ( - !validate91(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate101(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate91.errors : vErrors.concat(validate91.errors); + vErrors = vErrors === null ? validate101.errors : vErrors.concat(validate101.errors); errors = vErrors.length; } var _valid0 = _errs2 === errors; @@ -9088,9 +11742,9 @@ function validate87( } const _errs3 = errors; if ( - !validate94(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate104(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate94.errors : vErrors.concat(validate94.errors); + vErrors = vErrors === null ? validate104.errors : vErrors.concat(validate104.errors); errors = vErrors.length; } var _valid0 = _errs3 === errors; @@ -9124,13 +11778,13 @@ function validate87( } } } - validate87.errors = vErrors; + validate97.errors = vErrors; evaluated0.props = props0; return errors === 0; } -validate87.evaluated = { dynamicProps: true, dynamicItems: false }; +validate97.evaluated = { dynamicProps: true, dynamicItems: false }; -const schema87 = { +const schema99 = { additionalProperties: false, properties: { color: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Color" }, @@ -9140,7 +11794,7 @@ const schema87 = { title: "NodeVisualDocument", type: "object", }; -const schema88 = { +const schema100 = { additionalProperties: false, properties: { x: { title: "X", type: "number" }, y: { title: "Y", type: "number" } }, required: ["x", "y"], @@ -9148,13 +11802,13 @@ const schema88 = { type: "object", }; -function validate98( +function validate108( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate98.evaluated; + const evaluated0 = validate108.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -9473,18 +12127,18 @@ function validate98( } errors++; } - validate98.errors = vErrors; + validate108.errors = vErrors; return errors === 0; } -validate98.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate108.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate59( +function validate69( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate59.evaluated; + const evaluated0 = validate69.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -9580,7 +12234,7 @@ function validate59( errors++; } for (const key0 in data) { - if (!func1.call(schema66.properties, key0)) { + if (!func1.call(schema78.properties, key0)) { const err5 = { instancePath, schemaPath: "#/additionalProperties", @@ -9598,7 +12252,7 @@ function validate59( } if (data.config !== undefined) { if ( - !validate60(data.config, { + !validate70(data.config, { instancePath: instancePath + "/config", parentData: data, parentDataProperty: "config", @@ -9606,7 +12260,7 @@ function validate59( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate60.errors : vErrors.concat(validate60.errors); + vErrors = vErrors === null ? validate70.errors : vErrors.concat(validate70.errors); errors = vErrors.length; } } @@ -9616,7 +12270,7 @@ function validate59( let valid2 = false; const _errs7 = errors; if ( - !validate65(data1, { + !validate75(data1, { instancePath: instancePath + "/cursor", parentData: data, parentDataProperty: "cursor", @@ -9624,7 +12278,7 @@ function validate59( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate65.errors : vErrors.concat(validate65.errors); + vErrors = vErrors === null ? validate75.errors : vErrors.concat(validate75.errors); errors = vErrors.length; } var _valid0 = _errs7 === errors; @@ -9678,7 +12332,7 @@ function validate59( const len0 = data2.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate69(data2[i0], { + !validate79(data2[i0], { instancePath: instancePath + "/fields/" + i0, parentData: data2, parentDataProperty: i0, @@ -9686,7 +12340,7 @@ function validate59( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate69.errors : vErrors.concat(validate69.errors); + vErrors = vErrors === null ? validate79.errors : vErrors.concat(validate79.errors); errors = vErrors.length; } } @@ -9746,7 +12400,7 @@ function validate59( let valid5 = false; const _errs19 = errors; if ( - !validate60(data6, { + !validate70(data6, { instancePath: instancePath + "/params", parentData: data, parentDataProperty: "params", @@ -9754,7 +12408,7 @@ function validate59( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate60.errors : vErrors.concat(validate60.errors); + vErrors = vErrors === null ? validate70.errors : vErrors.concat(validate70.errors); errors = vErrors.length; } var _valid1 = _errs19 === errors; @@ -9808,7 +12462,7 @@ function validate59( let valid6 = false; const _errs25 = errors; if ( - !validate87(data7, { + !validate97(data7, { instancePath: instancePath + "/trigger", parentData: data, parentDataProperty: "trigger", @@ -9816,7 +12470,7 @@ function validate59( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate87.errors : vErrors.concat(validate87.errors); + vErrors = vErrors === null ? validate97.errors : vErrors.concat(validate97.errors); errors = vErrors.length; } var _valid2 = _errs25 === errors; @@ -9903,7 +12557,7 @@ function validate59( let valid7 = false; const _errs32 = errors; if ( - !validate98(data9, { + !validate108(data9, { instancePath: instancePath + "/visual", parentData: data, parentDataProperty: "visual", @@ -9911,7 +12565,7 @@ function validate59( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate98.errors : vErrors.concat(validate98.errors); + vErrors = vErrors === null ? validate108.errors : vErrors.concat(validate108.errors); errors = vErrors.length; } var _valid3 = _errs32 === errors; @@ -9974,12 +12628,12 @@ function validate59( } errors++; } - validate59.errors = vErrors; + validate69.errors = vErrors; return errors === 0; } -validate59.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate69.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema89 = { +const schema101 = { additionalProperties: false, not: { required: ["config", "params"] }, properties: { @@ -10005,7 +12659,7 @@ const schema89 = { title: "TransformNodeDocument", type: "object", }; -const schema90 = { +const schema102 = { additionalProperties: { $ref: "#/$defs/JsonValue" }, properties: { join: { anyOf: [{ $ref: "#/$defs/TransformJoinDocument" }, { type: "null" }], default: null }, @@ -10018,7 +12672,7 @@ const schema90 = { title: "TransformNodeConfigDocument", type: "object", }; -const schema92 = { +const schema104 = { additionalProperties: false, properties: { keys: { @@ -10035,7 +12689,7 @@ const schema92 = { title: "TransformJoinDocument", type: "object", }; -const schema93 = { +const schema105 = { additionalProperties: false, properties: { left: { minLength: 1, title: "Left", type: "string" }, @@ -10045,20 +12699,20 @@ const schema93 = { title: "ExecutableJoinKeyDocument", type: "object", }; -const schema94 = { +const schema106 = { description: "BigQuery join kinds supported by an executable transform node.", enum: ["inner", "left", "right", "full"], title: "ExecutableJoinType", type: "string", }; -function validate103( +function validate113( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate103.evaluated; + const evaluated0 = validate113.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -10220,7 +12874,7 @@ function validate103( if (data1.left !== undefined) { let data2 = data1.left; if (typeof data2 === "string") { - if (func2(data2) < 1) { + if (func3(data2) < 1) { const err9 = { instancePath: instancePath + "/keys/" + i0 + "/left", schemaPath: "#/$defs/ExecutableJoinKeyDocument/properties/left/minLength", @@ -10254,7 +12908,7 @@ function validate103( if (data1.right !== undefined) { let data3 = data1.right; if (typeof data3 === "string") { - if (func2(data3) < 1) { + if (func3(data3) < 1) { const err11 = { instancePath: instancePath + "/keys/" + i0 + "/right", schemaPath: "#/$defs/ExecutableJoinKeyDocument/properties/right/minLength", @@ -10320,7 +12974,7 @@ function validate103( if (data.left_input !== undefined) { let data4 = data.left_input; if (typeof data4 === "string") { - if (func2(data4) < 1) { + if (func3(data4) < 1) { const err15 = { instancePath: instancePath + "/left_input", schemaPath: "#/properties/left_input/minLength", @@ -10354,7 +13008,7 @@ function validate103( if (data.right_input !== undefined) { let data5 = data.right_input; if (typeof data5 === "string") { - if (func2(data5) < 1) { + if (func3(data5) < 1) { const err17 = { instancePath: instancePath + "/right_input", schemaPath: "#/properties/right_input/minLength", @@ -10407,7 +13061,7 @@ function validate103( instancePath: instancePath + "/type", schemaPath: "#/$defs/ExecutableJoinType/enum", keyword: "enum", - params: { allowedValues: schema94.enum }, + params: { allowedValues: schema106.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -10433,12 +13087,12 @@ function validate103( } errors++; } - validate103.errors = vErrors; + validate113.errors = vErrors; return errors === 0; } -validate103.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate113.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema95 = { +const schema107 = { anyOf: [ { $ref: "#/$defs/TruncateStringOperation" }, { $ref: "#/$defs/TrimWhitespaceOperation" }, @@ -10446,7 +13100,7 @@ const schema95 = { { $ref: "#/$defs/FilterRowsOperation" }, ], }; -const schema96 = { +const schema108 = { additionalProperties: false, properties: { kind: { const: "truncate_string", title: "Kind", type: "string" }, @@ -10457,7 +13111,7 @@ const schema96 = { title: "TruncateStringOperation", type: "object", }; -const schema97 = { +const schema109 = { additionalProperties: false, properties: { field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" }, @@ -10467,15 +13121,15 @@ const schema97 = { title: "TruncateStringParamsDocument", type: "object", }; -const pattern8 = new RegExp("^[A-Za-z_][A-Za-z0-9_]*$", "u"); +const pattern10 = new RegExp("^[A-Za-z_][A-Za-z0-9_]*$", "u"); -function validate106( +function validate116( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate106.evaluated; + const evaluated0 = validate116.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -10565,7 +13219,7 @@ function validate106( } if (data.metadata !== undefined) { if ( - !validate35(data.metadata, { + !validate45(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -10573,7 +13227,7 @@ function validate106( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); errors = vErrors.length; } } @@ -10630,7 +13284,7 @@ function validate106( if (data2.field !== undefined) { let data3 = data2.field; if (typeof data3 === "string") { - if (!pattern8.test(data3)) { + if (!pattern10.test(data3)) { const err8 = { instancePath: instancePath + "/params/field", schemaPath: "#/$defs/TruncateStringParamsDocument/properties/field/pattern", @@ -10727,12 +13381,12 @@ function validate106( } errors++; } - validate106.errors = vErrors; + validate116.errors = vErrors; return errors === 0; } -validate106.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate116.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema98 = { +const schema110 = { additionalProperties: false, properties: { kind: { const: "trim_whitespace", title: "Kind", type: "string" }, @@ -10743,7 +13397,7 @@ const schema98 = { title: "TrimWhitespaceOperation", type: "object", }; -const schema99 = { +const schema111 = { additionalProperties: false, properties: { field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" } }, required: ["field"], @@ -10751,13 +13405,13 @@ const schema99 = { type: "object", }; -function validate109( +function validate119( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate109.evaluated; + const evaluated0 = validate119.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -10847,7 +13501,7 @@ function validate109( } if (data.metadata !== undefined) { if ( - !validate35(data.metadata, { + !validate45(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -10855,7 +13509,7 @@ function validate109( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); errors = vErrors.length; } } @@ -10897,7 +13551,7 @@ function validate109( if (data2.field !== undefined) { let data3 = data2.field; if (typeof data3 === "string") { - if (!pattern8.test(data3)) { + if (!pattern10.test(data3)) { const err7 = { instancePath: instancePath + "/params/field", schemaPath: "#/$defs/TrimWhitespaceParamsDocument/properties/field/pattern", @@ -10959,12 +13613,12 @@ function validate109( } errors++; } - validate109.errors = vErrors; + validate119.errors = vErrors; return errors === 0; } -validate109.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate119.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema100 = { +const schema112 = { additionalProperties: false, properties: { kind: { const: "default_value", title: "Kind", type: "string" }, @@ -10975,7 +13629,7 @@ const schema100 = { title: "DefaultValueOperation", type: "object", }; -const schema101 = { +const schema113 = { additionalProperties: false, properties: { default: { @@ -10989,13 +13643,13 @@ const schema101 = { type: "object", }; -function validate112( +function validate122( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate112.evaluated; + const evaluated0 = validate122.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -11085,7 +13739,7 @@ function validate112( } if (data.metadata !== undefined) { if ( - !validate35(data.metadata, { + !validate45(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -11093,7 +13747,7 @@ function validate112( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); errors = vErrors.length; } } @@ -11251,7 +13905,7 @@ function validate112( if (data2.field !== undefined) { let data4 = data2.field; if (typeof data4 === "string") { - if (!pattern8.test(data4)) { + if (!pattern10.test(data4)) { const err13 = { instancePath: instancePath + "/params/field", schemaPath: "#/$defs/DefaultValueParamsDocument/properties/field/pattern", @@ -11313,12 +13967,12 @@ function validate112( } errors++; } - validate112.errors = vErrors; + validate122.errors = vErrors; return errors === 0; } -validate112.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate122.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema102 = { +const schema114 = { additionalProperties: false, properties: { kind: { const: "filter_rows", title: "Kind", type: "string" }, @@ -11329,7 +13983,7 @@ const schema102 = { title: "FilterRowsOperation", type: "object", }; -const schema103 = { +const schema115 = { additionalProperties: false, properties: { conditions: { @@ -11344,13 +13998,13 @@ const schema103 = { title: "FilterRowsParamsDocument", type: "object", }; -const schema106 = { +const schema118 = { description: "How a filter's flat condition list combines.", enum: ["all", "any"], title: "MatchLogic", type: "string", }; -const schema104 = { +const schema116 = { additionalProperties: false, properties: { field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" }, @@ -11382,20 +14036,20 @@ const schema104 = { title: "FieldConditionDocument", type: "object", }; -const schema105 = { +const schema117 = { description: "Closed comparison grammar for ``filter_rows``.", enum: ["eq", "ne", "gt", "gte", "lt", "lte", "in", "not_in", "is_null", "is_not_null"], title: "ComparisonOperator", type: "string", }; -function validate118( +function validate128( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate118.evaluated; + const evaluated0 = validate128.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -11453,7 +14107,7 @@ function validate118( if (data.field !== undefined) { let data0 = data.field; if (typeof data0 === "string") { - if (!pattern8.test(data0)) { + if (!pattern10.test(data0)) { const err3 = { instancePath: instancePath + "/field", schemaPath: "#/properties/field/pattern", @@ -11517,7 +14171,7 @@ function validate118( instancePath: instancePath + "/op", schemaPath: "#/$defs/ComparisonOperator/enum", keyword: "enum", - params: { allowedValues: schema105.enum }, + params: { allowedValues: schema117.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -11783,18 +14437,18 @@ function validate118( } errors++; } - validate118.errors = vErrors; + validate128.errors = vErrors; return errors === 0; } -validate118.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate128.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate117( +function validate127( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate117.evaluated; + const evaluated0 = validate127.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -11855,7 +14509,7 @@ function validate117( const len0 = data0.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate118(data0[i0], { + !validate128(data0[i0], { instancePath: instancePath + "/conditions/" + i0, parentData: data0, parentDataProperty: i0, @@ -11863,7 +14517,7 @@ function validate117( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate118.errors : vErrors.concat(validate118.errors); + vErrors = vErrors === null ? validate128.errors : vErrors.concat(validate128.errors); errors = vErrors.length; } } @@ -11905,7 +14559,7 @@ function validate117( instancePath: instancePath + "/logic", schemaPath: "#/$defs/MatchLogic/enum", keyword: "enum", - params: { allowedValues: schema106.enum }, + params: { allowedValues: schema118.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -11931,18 +14585,18 @@ function validate117( } errors++; } - validate117.errors = vErrors; + validate127.errors = vErrors; return errors === 0; } -validate117.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate127.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate115( +function validate125( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate115.evaluated; + const evaluated0 = validate125.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -12032,7 +14686,7 @@ function validate115( } if (data.metadata !== undefined) { if ( - !validate35(data.metadata, { + !validate45(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -12040,13 +14694,13 @@ function validate115( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); errors = vErrors.length; } } if (data.params !== undefined) { if ( - !validate117(data.params, { + !validate127(data.params, { instancePath: instancePath + "/params", parentData: data, parentDataProperty: "params", @@ -12054,7 +14708,7 @@ function validate115( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate117.errors : vErrors.concat(validate117.errors); + vErrors = vErrors === null ? validate127.errors : vErrors.concat(validate127.errors); errors = vErrors.length; } } @@ -12073,18 +14727,18 @@ function validate115( } errors++; } - validate115.errors = vErrors; + validate125.errors = vErrors; return errors === 0; } -validate115.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate125.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate105( +function validate115( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate105.evaluated; + const evaluated0 = validate115.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -12095,9 +14749,9 @@ function validate105( let valid0 = false; const _errs1 = errors; if ( - !validate106(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate116(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate106.errors : vErrors.concat(validate106.errors); + vErrors = vErrors === null ? validate116.errors : vErrors.concat(validate116.errors); errors = vErrors.length; } var _valid0 = _errs1 === errors; @@ -12107,9 +14761,9 @@ function validate105( } const _errs2 = errors; if ( - !validate109(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate119(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate109.errors : vErrors.concat(validate109.errors); + vErrors = vErrors === null ? validate119.errors : vErrors.concat(validate119.errors); errors = vErrors.length; } var _valid0 = _errs2 === errors; @@ -12121,9 +14775,9 @@ function validate105( } const _errs3 = errors; if ( - !validate112(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate122(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate112.errors : vErrors.concat(validate112.errors); + vErrors = vErrors === null ? validate122.errors : vErrors.concat(validate122.errors); errors = vErrors.length; } var _valid0 = _errs3 === errors; @@ -12135,9 +14789,9 @@ function validate105( } const _errs4 = errors; if ( - !validate115(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate125(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate115.errors : vErrors.concat(validate115.errors); + vErrors = vErrors === null ? validate125.errors : vErrors.concat(validate125.errors); errors = vErrors.length; } var _valid0 = _errs4 === errors; @@ -12171,19 +14825,19 @@ function validate105( } } } - validate105.errors = vErrors; + validate115.errors = vErrors; evaluated0.props = props0; return errors === 0; } -validate105.evaluated = { dynamicProps: true, dynamicItems: false }; +validate115.evaluated = { dynamicProps: true, dynamicItems: false }; -function validate102( +function validate112( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate102.evaluated; + const evaluated0 = validate112.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -12197,7 +14851,7 @@ function validate102( let valid3 = false; const _errs5 = errors; if ( - !validate103(data1, { + !validate113(data1, { instancePath: instancePath + "/join", parentData: data, parentDataProperty: "join", @@ -12205,7 +14859,7 @@ function validate102( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate103.errors : vErrors.concat(validate103.errors); + vErrors = vErrors === null ? validate113.errors : vErrors.concat(validate113.errors); errors = vErrors.length; } var _valid0 = _errs5 === errors; @@ -12259,7 +14913,7 @@ function validate102( const len0 = data2.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate105(data2[i0], { + !validate115(data2[i0], { instancePath: instancePath + "/operations/" + i0, parentData: data2, parentDataProperty: i0, @@ -12267,7 +14921,7 @@ function validate102( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate105.errors : vErrors.concat(validate105.errors); + vErrors = vErrors === null ? validate115.errors : vErrors.concat(validate115.errors); errors = vErrors.length; } } @@ -12302,18 +14956,18 @@ function validate102( } errors++; } - validate102.errors = vErrors; + validate112.errors = vErrors; return errors === 0; } -validate102.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate112.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate101( +function validate111( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate101.evaluated; + const evaluated0 = validate111.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -12409,7 +15063,7 @@ function validate101( errors++; } for (const key0 in data) { - if (!func1.call(schema89.properties, key0)) { + if (!func1.call(schema101.properties, key0)) { const err5 = { instancePath, schemaPath: "#/additionalProperties", @@ -12427,7 +15081,7 @@ function validate101( } if (data.config !== undefined) { if ( - !validate102(data.config, { + !validate112(data.config, { instancePath: instancePath + "/config", parentData: data, parentDataProperty: "config", @@ -12435,7 +15089,7 @@ function validate101( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate102.errors : vErrors.concat(validate102.errors); + vErrors = vErrors === null ? validate112.errors : vErrors.concat(validate112.errors); errors = vErrors.length; } } @@ -12445,7 +15099,7 @@ function validate101( let valid2 = false; const _errs7 = errors; if ( - !validate65(data1, { + !validate75(data1, { instancePath: instancePath + "/cursor", parentData: data, parentDataProperty: "cursor", @@ -12453,7 +15107,7 @@ function validate101( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate65.errors : vErrors.concat(validate65.errors); + vErrors = vErrors === null ? validate75.errors : vErrors.concat(validate75.errors); errors = vErrors.length; } var _valid0 = _errs7 === errors; @@ -12507,7 +15161,7 @@ function validate101( const len0 = data2.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate69(data2[i0], { + !validate79(data2[i0], { instancePath: instancePath + "/fields/" + i0, parentData: data2, parentDataProperty: i0, @@ -12515,7 +15169,7 @@ function validate101( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate69.errors : vErrors.concat(validate69.errors); + vErrors = vErrors === null ? validate79.errors : vErrors.concat(validate79.errors); errors = vErrors.length; } } @@ -12575,7 +15229,7 @@ function validate101( let valid5 = false; const _errs19 = errors; if ( - !validate102(data6, { + !validate112(data6, { instancePath: instancePath + "/params", parentData: data, parentDataProperty: "params", @@ -12583,7 +15237,7 @@ function validate101( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate102.errors : vErrors.concat(validate102.errors); + vErrors = vErrors === null ? validate112.errors : vErrors.concat(validate112.errors); errors = vErrors.length; } var _valid1 = _errs19 === errors; @@ -12637,7 +15291,7 @@ function validate101( let valid6 = false; const _errs25 = errors; if ( - !validate87(data7, { + !validate97(data7, { instancePath: instancePath + "/trigger", parentData: data, parentDataProperty: "trigger", @@ -12645,7 +15299,7 @@ function validate101( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate87.errors : vErrors.concat(validate87.errors); + vErrors = vErrors === null ? validate97.errors : vErrors.concat(validate97.errors); errors = vErrors.length; } var _valid2 = _errs25 === errors; @@ -12732,7 +15386,7 @@ function validate101( let valid7 = false; const _errs32 = errors; if ( - !validate98(data9, { + !validate108(data9, { instancePath: instancePath + "/visual", parentData: data, parentDataProperty: "visual", @@ -12740,7 +15394,7 @@ function validate101( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate98.errors : vErrors.concat(validate98.errors); + vErrors = vErrors === null ? validate108.errors : vErrors.concat(validate108.errors); errors = vErrors.length; } var _valid3 = _errs32 === errors; @@ -12803,12 +15457,12 @@ function validate101( } errors++; } - validate101.errors = vErrors; + validate111.errors = vErrors; return errors === 0; } -validate101.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate111.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema107 = { +const schema119 = { additionalProperties: false, not: { required: ["config", "params"] }, properties: { @@ -12834,7 +15488,7 @@ const schema107 = { title: "TargetNodeDocument", type: "object", }; -const schema108 = { +const schema120 = { additionalProperties: { $ref: "#/$defs/JsonValue" }, properties: { writer: { anyOf: [{ $ref: "#/$defs/WriterDocument" }, { type: "null" }], default: null }, @@ -12842,7 +15496,7 @@ const schema108 = { title: "TargetNodeConfigDocument", type: "object", }; -const schema110 = { +const schema122 = { additionalProperties: false, properties: { clustering: { items: { type: "string" }, maxItems: 4, title: "Clustering", type: "array" }, @@ -12876,7 +15530,7 @@ const schema110 = { title: "WriterDocument", type: "object", }; -const schema111 = { +const schema123 = { additionalProperties: false, properties: { business_key: { items: { type: "string" }, title: "Business Key", type: "array" }, @@ -12888,19 +15542,19 @@ const schema111 = { title: "DestinationDocument", type: "object", }; -const schema114 = { +const schema126 = { description: "How a writer handles declared columns absent from an existing target.", enum: ["strict", "additive"], title: "SchemaEvolution", type: "string", }; -const schema115 = { +const schema127 = { description: "Supported load strategies.", enum: ["scd1", "scd2", "snapshot", "incremental", "replace"], title: "WriteMode", type: "string", }; -const schema112 = { +const schema124 = { additionalProperties: false, properties: { field: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Field" }, @@ -12914,7 +15568,7 @@ const schema112 = { title: "PartitioningDocument", type: "object", }; -const schema113 = { +const schema125 = { description: "The closed set of time-unit partitioning granularities a `PartitioningSpec` may declare.\n\nA `StrEnum` (matching the `WriteMode`/`TransformationKind`/`JoinType` convention elsewhere in\n`dander.pipeline`), so it serializes to/from its plain string value stably in YAML and JSON;\nan out-of-set value fails validation with a clear `ValidationError`. Scope is deliberately\nlimited to BigQuery time-unit partitioning — integer-range partitioning is a deferred future\nmember (see `steering/02-engineering.md` on avoiding speculative generality).\n\nAttributes:\n HOUR: Hourly partitions.\n DAY: Daily partitions — the common case and BigQuery's default granularity.\n MONTH: Monthly partitions.\n YEAR: Yearly partitions.", enum: ["hour", "day", "month", "year"], @@ -12922,13 +15576,13 @@ const schema113 = { type: "string", }; -function validate133( +function validate143( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate133.evaluated; + const evaluated0 = validate143.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -13040,7 +15694,7 @@ function validate133( instancePath: instancePath + "/granularity", schemaPath: "#/$defs/PartitioningType/enum", keyword: "enum", - params: { allowedValues: schema113.enum }, + params: { allowedValues: schema125.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -13083,18 +15737,18 @@ function validate133( } errors++; } - validate133.errors = vErrors; + validate143.errors = vErrors; return errors === 0; } -validate133.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate143.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate132( +function validate142( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate132.evaluated; + const evaluated0 = validate142.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -13370,7 +16024,7 @@ function validate132( if (data3.dataset !== undefined) { let data6 = data3.dataset; if (typeof data6 === "string") { - if (func2(data6) < 1) { + if (func3(data6) < 1) { const err14 = { instancePath: instancePath + "/destination/dataset", schemaPath: "#/$defs/DestinationDocument/properties/dataset/minLength", @@ -13469,7 +16123,7 @@ function validate132( if (data3.table !== undefined) { let data8 = data3.table; if (typeof data8 === "string") { - if (func2(data8) < 1) { + if (func3(data8) < 1) { const err19 = { instancePath: instancePath + "/destination/table", schemaPath: "#/$defs/DestinationDocument/properties/table/minLength", @@ -13572,7 +16226,7 @@ function validate132( let valid9 = false; const _errs34 = errors; if ( - !validate133(data10, { + !validate143(data10, { instancePath: instancePath + "/partitioning", parentData: data, parentDataProperty: "partitioning", @@ -13580,7 +16234,7 @@ function validate132( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate133.errors : vErrors.concat(validate133.errors); + vErrors = vErrors === null ? validate143.errors : vErrors.concat(validate143.errors); errors = vErrors.length; } var _valid2 = _errs34 === errors; @@ -13650,7 +16304,7 @@ function validate132( instancePath: instancePath + "/schema_evolution", schemaPath: "#/$defs/SchemaEvolution/enum", keyword: "enum", - params: { allowedValues: schema114.enum }, + params: { allowedValues: schema126.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -13683,7 +16337,7 @@ function validate132( instancePath: instancePath + "/transport", schemaPath: "#/properties/transport/enum", keyword: "enum", - params: { allowedValues: schema110.properties.transport.enum }, + params: { allowedValues: schema122.properties.transport.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -13722,7 +16376,7 @@ function validate132( instancePath: instancePath + "/write_mode", schemaPath: "#/$defs/WriteMode/enum", keyword: "enum", - params: { allowedValues: schema115.enum }, + params: { allowedValues: schema127.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -13748,18 +16402,18 @@ function validate132( } errors++; } - validate132.errors = vErrors; + validate142.errors = vErrors; return errors === 0; } -validate132.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate142.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate131( +function validate141( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate131.evaluated; + const evaluated0 = validate141.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -13773,7 +16427,7 @@ function validate131( let valid3 = false; const _errs5 = errors; if ( - !validate132(data1, { + !validate142(data1, { instancePath: instancePath + "/writer", parentData: data, parentDataProperty: "writer", @@ -13781,7 +16435,7 @@ function validate131( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate132.errors : vErrors.concat(validate132.errors); + vErrors = vErrors === null ? validate142.errors : vErrors.concat(validate142.errors); errors = vErrors.length; } var _valid0 = _errs5 === errors; @@ -13844,18 +16498,18 @@ function validate131( } errors++; } - validate131.errors = vErrors; + validate141.errors = vErrors; return errors === 0; } -validate131.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate141.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate130( +function validate140( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate130.evaluated; + const evaluated0 = validate140.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -13951,7 +16605,7 @@ function validate130( errors++; } for (const key0 in data) { - if (!func1.call(schema107.properties, key0)) { + if (!func1.call(schema119.properties, key0)) { const err5 = { instancePath, schemaPath: "#/additionalProperties", @@ -13969,7 +16623,7 @@ function validate130( } if (data.config !== undefined) { if ( - !validate131(data.config, { + !validate141(data.config, { instancePath: instancePath + "/config", parentData: data, parentDataProperty: "config", @@ -13977,7 +16631,7 @@ function validate130( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate131.errors : vErrors.concat(validate131.errors); + vErrors = vErrors === null ? validate141.errors : vErrors.concat(validate141.errors); errors = vErrors.length; } } @@ -13987,7 +16641,7 @@ function validate130( let valid2 = false; const _errs7 = errors; if ( - !validate65(data1, { + !validate75(data1, { instancePath: instancePath + "/cursor", parentData: data, parentDataProperty: "cursor", @@ -13995,7 +16649,7 @@ function validate130( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate65.errors : vErrors.concat(validate65.errors); + vErrors = vErrors === null ? validate75.errors : vErrors.concat(validate75.errors); errors = vErrors.length; } var _valid0 = _errs7 === errors; @@ -14049,7 +16703,7 @@ function validate130( const len0 = data2.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate69(data2[i0], { + !validate79(data2[i0], { instancePath: instancePath + "/fields/" + i0, parentData: data2, parentDataProperty: i0, @@ -14057,7 +16711,7 @@ function validate130( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate69.errors : vErrors.concat(validate69.errors); + vErrors = vErrors === null ? validate79.errors : vErrors.concat(validate79.errors); errors = vErrors.length; } } @@ -14117,7 +16771,7 @@ function validate130( let valid5 = false; const _errs19 = errors; if ( - !validate131(data6, { + !validate141(data6, { instancePath: instancePath + "/params", parentData: data, parentDataProperty: "params", @@ -14125,7 +16779,7 @@ function validate130( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate131.errors : vErrors.concat(validate131.errors); + vErrors = vErrors === null ? validate141.errors : vErrors.concat(validate141.errors); errors = vErrors.length; } var _valid1 = _errs19 === errors; @@ -14179,7 +16833,7 @@ function validate130( let valid6 = false; const _errs25 = errors; if ( - !validate87(data7, { + !validate97(data7, { instancePath: instancePath + "/trigger", parentData: data, parentDataProperty: "trigger", @@ -14187,7 +16841,7 @@ function validate130( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate87.errors : vErrors.concat(validate87.errors); + vErrors = vErrors === null ? validate97.errors : vErrors.concat(validate97.errors); errors = vErrors.length; } var _valid2 = _errs25 === errors; @@ -14274,7 +16928,7 @@ function validate130( let valid7 = false; const _errs32 = errors; if ( - !validate98(data9, { + !validate108(data9, { instancePath: instancePath + "/visual", parentData: data, parentDataProperty: "visual", @@ -14282,7 +16936,7 @@ function validate130( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate98.errors : vErrors.concat(validate98.errors); + vErrors = vErrors === null ? validate108.errors : vErrors.concat(validate108.errors); errors = vErrors.length; } var _valid3 = _errs32 === errors; @@ -14345,12 +16999,12 @@ function validate130( } errors++; } - validate130.errors = vErrors; + validate140.errors = vErrors; return errors === 0; } -validate130.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate140.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema116 = { +const schema128 = { additionalProperties: false, not: { required: ["config", "params"] }, properties: { @@ -14376,15 +17030,15 @@ const schema116 = { title: "ExtensionNodeDocument", type: "object", }; -const schema117 = { not: { enum: ["source", "transform", "target"] }, type: "string" }; +const schema129 = { not: { enum: ["source", "transform", "target"] }, type: "string" }; -function validate143( +function validate153( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate143.evaluated; + const evaluated0 = validate153.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -14480,7 +17134,7 @@ function validate143( errors++; } for (const key0 in data) { - if (!func1.call(schema116.properties, key0)) { + if (!func1.call(schema128.properties, key0)) { const err5 = { instancePath, schemaPath: "#/additionalProperties", @@ -14498,7 +17152,7 @@ function validate143( } if (data.config !== undefined) { if ( - !validate35(data.config, { + !validate45(data.config, { instancePath: instancePath + "/config", parentData: data, parentDataProperty: "config", @@ -14506,7 +17160,7 @@ function validate143( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); errors = vErrors.length; } } @@ -14516,7 +17170,7 @@ function validate143( let valid2 = false; const _errs7 = errors; if ( - !validate65(data1, { + !validate75(data1, { instancePath: instancePath + "/cursor", parentData: data, parentDataProperty: "cursor", @@ -14524,7 +17178,7 @@ function validate143( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate65.errors : vErrors.concat(validate65.errors); + vErrors = vErrors === null ? validate75.errors : vErrors.concat(validate75.errors); errors = vErrors.length; } var _valid0 = _errs7 === errors; @@ -14578,7 +17232,7 @@ function validate143( const len0 = data2.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate69(data2[i0], { + !validate79(data2[i0], { instancePath: instancePath + "/fields/" + i0, parentData: data2, parentDataProperty: i0, @@ -14586,7 +17240,7 @@ function validate143( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate69.errors : vErrors.concat(validate69.errors); + vErrors = vErrors === null ? validate79.errors : vErrors.concat(validate79.errors); errors = vErrors.length; } } @@ -14646,7 +17300,7 @@ function validate143( let valid5 = false; const _errs19 = errors; if ( - !validate35(data6, { + !validate45(data6, { instancePath: instancePath + "/params", parentData: data, parentDataProperty: "params", @@ -14654,7 +17308,7 @@ function validate143( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate35.errors : vErrors.concat(validate35.errors); + vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors); errors = vErrors.length; } var _valid1 = _errs19 === errors; @@ -14708,7 +17362,7 @@ function validate143( let valid6 = false; const _errs25 = errors; if ( - !validate87(data7, { + !validate97(data7, { instancePath: instancePath + "/trigger", parentData: data, parentDataProperty: "trigger", @@ -14716,7 +17370,7 @@ function validate143( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate87.errors : vErrors.concat(validate87.errors); + vErrors = vErrors === null ? validate97.errors : vErrors.concat(validate97.errors); errors = vErrors.length; } var _valid2 = _errs25 === errors; @@ -14802,86 +17456,510 @@ function validate143( message: "must NOT be valid", }; if (vErrors === null) { - vErrors = [err17]; + vErrors = [err17]; + } else { + vErrors.push(err17); + } + errors++; + } else { + errors = _errs31; + if (vErrors !== null) { + if (_errs31) { + vErrors.length = _errs31; + } else { + vErrors = null; + } + } + } + } + if (data.visual !== undefined) { + let data9 = data.visual; + const _errs34 = errors; + let valid9 = false; + const _errs35 = errors; + if ( + !validate108(data9, { + instancePath: instancePath + "/visual", + parentData: data, + parentDataProperty: "visual", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate108.errors : vErrors.concat(validate108.errors); + errors = vErrors.length; + } + var _valid3 = _errs35 === errors; + valid9 = valid9 || _valid3; + const _errs36 = errors; + if (data9 !== null) { + const err18 = { + instancePath: instancePath + "/visual", + schemaPath: "#/properties/visual/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err18]; + } else { + vErrors.push(err18); + } + errors++; + } + var _valid3 = _errs36 === errors; + valid9 = valid9 || _valid3; + if (!valid9) { + const err19 = { + instancePath: instancePath + "/visual", + schemaPath: "#/properties/visual/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err19]; + } else { + vErrors.push(err19); + } + errors++; + } else { + errors = _errs34; + if (vErrors !== null) { + if (_errs34) { + vErrors.length = _errs34; + } else { + vErrors = null; + } + } + } + } + } else { + const err20 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err20]; + } else { + vErrors.push(err20); + } + errors++; + } + validate153.errors = vErrors; + return errors === 0; +} +validate153.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +function validate68( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate68.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + const _errs0 = errors; + let valid0 = false; + const _errs1 = errors; + if ( + !validate69(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + ) { + vErrors = vErrors === null ? validate69.errors : vErrors.concat(validate69.errors); + errors = vErrors.length; + } + var _valid0 = _errs1 === errors; + valid0 = valid0 || _valid0; + if (_valid0) { + var props0 = true; + } + const _errs2 = errors; + if ( + !validate111(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + ) { + vErrors = vErrors === null ? validate111.errors : vErrors.concat(validate111.errors); + errors = vErrors.length; + } + var _valid0 = _errs2 === errors; + valid0 = valid0 || _valid0; + if (_valid0) { + if (props0 !== true) { + props0 = true; + } + } + const _errs3 = errors; + if ( + !validate140(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + ) { + vErrors = vErrors === null ? validate140.errors : vErrors.concat(validate140.errors); + errors = vErrors.length; + } + var _valid0 = _errs3 === errors; + valid0 = valid0 || _valid0; + if (_valid0) { + if (props0 !== true) { + props0 = true; + } + } + const _errs4 = errors; + if ( + !validate153(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + ) { + vErrors = vErrors === null ? validate153.errors : vErrors.concat(validate153.errors); + errors = vErrors.length; + } + var _valid0 = _errs4 === errors; + valid0 = valid0 || _valid0; + if (_valid0) { + if (props0 !== true) { + props0 = true; + } + } + if (!valid0) { + const err0 = { + instancePath, + schemaPath: "#/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } else { + errors = _errs0; + if (vErrors !== null) { + if (_errs0) { + vErrors.length = _errs0; + } else { + vErrors = null; + } + } + } + validate68.errors = vErrors; + evaluated0.props = props0; + return errors === 0; +} +validate68.evaluated = { dynamicProps: true, dynamicItems: false }; + +function validate42( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate42.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.name === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "name" }, + message: "must have required property '" + "name" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + for (const key0 in data) { + if (!(key0 === "edges" || key0 === "name" || key0 === "nodes" || key0 === "trigger")) { + const err1 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + } + if (data.edges !== undefined) { + let data0 = data.edges; + if (Array.isArray(data0)) { + const len0 = data0.length; + for (let i0 = 0; i0 < len0; i0++) { + if ( + !validate43(data0[i0], { + instancePath: instancePath + "/edges/" + i0, + parentData: data0, + parentDataProperty: i0, + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate43.errors : vErrors.concat(validate43.errors); + errors = vErrors.length; + } + } + } else { + const err2 = { + instancePath: instancePath + "/edges", + schemaPath: "#/properties/edges/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + } + if (data.name !== undefined) { + if (typeof data.name !== "string") { + const err3 = { + instancePath: instancePath + "/name", + schemaPath: "#/properties/name/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + } + if (data.nodes !== undefined) { + let data3 = data.nodes; + if (Array.isArray(data3)) { + const len1 = data3.length; + for (let i1 = 0; i1 < len1; i1++) { + if ( + !validate68(data3[i1], { + instancePath: instancePath + "/nodes/" + i1, + parentData: data3, + parentDataProperty: i1, + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate68.errors : vErrors.concat(validate68.errors); + errors = vErrors.length; + } + } + } else { + const err4 = { + instancePath: instancePath + "/nodes", + schemaPath: "#/properties/nodes/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + } + if (data.trigger !== undefined) { + let data5 = data.trigger; + const _errs11 = errors; + let valid5 = false; + const _errs12 = errors; + if ( + !validate97(data5, { + instancePath: instancePath + "/trigger", + parentData: data, + parentDataProperty: "trigger", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate97.errors : vErrors.concat(validate97.errors); + errors = vErrors.length; + } + var _valid0 = _errs12 === errors; + valid5 = valid5 || _valid0; + const _errs13 = errors; + if (data5 !== null) { + const err5 = { + instancePath: instancePath + "/trigger", + schemaPath: "#/properties/trigger/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + var _valid0 = _errs13 === errors; + valid5 = valid5 || _valid0; + if (!valid5) { + const err6 = { + instancePath: instancePath + "/trigger", + schemaPath: "#/properties/trigger/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } else { + errors = _errs11; + if (vErrors !== null) { + if (_errs11) { + vErrors.length = _errs11; + } else { + vErrors = null; + } + } + } + } + } else { + const err7 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } + validate42.errors = vErrors; + return errors === 0; +} +validate42.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +function validate41( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + /*# sourceURL="urn:dander:control:contracts:v1:graph-create" */ let vErrors = null; + let errors = 0; + const evaluated0 = validate41.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.graph === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "graph" }, + message: "must have required property '" + "graph" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + if (data.document === undefined) { + const err1 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "document" }, + message: "must have required property '" + "document" + "'", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + for (const key0 in data) { + if (!(key0 === "document" || key0 === "graph")) { + const err2 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err2]; } else { - vErrors.push(err17); + vErrors.push(err2); } errors++; - } else { - errors = _errs31; - if (vErrors !== null) { - if (_errs31) { - vErrors.length = _errs31; - } else { - vErrors = null; - } - } } } - if (data.visual !== undefined) { - let data9 = data.visual; - const _errs34 = errors; - let valid9 = false; - const _errs35 = errors; + if (data.document !== undefined) { if ( - !validate98(data9, { - instancePath: instancePath + "/visual", + !validate42(data.document, { + instancePath: instancePath + "/document", parentData: data, - parentDataProperty: "visual", + parentDataProperty: "document", rootData, dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate98.errors : vErrors.concat(validate98.errors); + vErrors = vErrors === null ? validate42.errors : vErrors.concat(validate42.errors); errors = vErrors.length; } - var _valid3 = _errs35 === errors; - valid9 = valid9 || _valid3; - const _errs36 = errors; - if (data9 !== null) { - const err18 = { - instancePath: instancePath + "/visual", - schemaPath: "#/properties/visual/anyOf/1/type", + } + if (data.graph !== undefined) { + if (typeof data.graph !== "string") { + const err3 = { + instancePath: instancePath + "/graph", + schemaPath: "#/properties/graph/type", keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err18]; - } else { - vErrors.push(err18); - } - errors++; - } - var _valid3 = _errs36 === errors; - valid9 = valid9 || _valid3; - if (!valid9) { - const err19 = { - instancePath: instancePath + "/visual", - schemaPath: "#/properties/visual/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err19]; + vErrors = [err3]; } else { - vErrors.push(err19); + vErrors.push(err3); } errors++; - } else { - errors = _errs34; - if (vErrors !== null) { - if (_errs34) { - vErrors.length = _errs34; - } else { - vErrors = null; - } - } } } } else { - const err20 = { + const err4 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -14889,123 +17967,584 @@ function validate143( message: "must be object", }; if (vErrors === null) { - vErrors = [err20]; + vErrors = [err4]; } else { - vErrors.push(err20); + vErrors.push(err4); } errors++; } - validate143.errors = vErrors; + validate41.errors = vErrors; return errors === 0; } -validate143.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate41.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +export const validateGraphPage = validate164; +const schema130 = { + $defs: { + GraphSummaryResponse: { + additionalProperties: false, + description: "Document-free metadata for one graph in a bounded hosted list response.", + properties: { + content_sha256: { pattern: "^[0-9a-f]{64}$", title: "Content Sha256", type: "string" }, + created_at: { title: "Created At", type: "string" }, + graph: { title: "Graph", type: "string" }, + project: { title: "Project", type: "string" }, + updated_at: { title: "Updated At", type: "string" }, + }, + required: ["project", "graph", "content_sha256", "created_at", "updated_at"], + title: "GraphSummaryResponse", + type: "object", + }, + }, + $id: "urn:dander:control:contracts:v1:graph-page", + $schema: "https://json-schema.org/draft/2020-12/schema", + additionalProperties: false, + description: "A bounded graph-summary page that never embeds full graph documents.", + properties: { + items: { + items: { $ref: "#/$defs/GraphSummaryResponse" }, + maxItems: 100, + title: "Items", + type: "array", + }, + next_cursor: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Next Cursor", + }, + }, + required: ["items"], + title: "GraphPageResponse", + type: "object", +}; +const schema131 = { + additionalProperties: false, + description: "Document-free metadata for one graph in a bounded hosted list response.", + properties: { + content_sha256: { pattern: "^[0-9a-f]{64}$", title: "Content Sha256", type: "string" }, + created_at: { title: "Created At", type: "string" }, + graph: { title: "Graph", type: "string" }, + project: { title: "Project", type: "string" }, + updated_at: { title: "Updated At", type: "string" }, + }, + required: ["project", "graph", "content_sha256", "created_at", "updated_at"], + title: "GraphSummaryResponse", + type: "object", +}; -function validate58( +function validate164( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { - let vErrors = null; + /*# sourceURL="urn:dander:control:contracts:v1:graph-page" */ let vErrors = null; let errors = 0; - const evaluated0 = validate58.evaluated; + const evaluated0 = validate164.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } if (evaluated0.dynamicItems) { evaluated0.items = undefined; } - const _errs0 = errors; - let valid0 = false; - const _errs1 = errors; - if ( - !validate59(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) - ) { - vErrors = vErrors === null ? validate59.errors : vErrors.concat(validate59.errors); - errors = vErrors.length; - } - var _valid0 = _errs1 === errors; - valid0 = valid0 || _valid0; - if (_valid0) { - var props0 = true; - } - const _errs2 = errors; - if ( - !validate101(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) - ) { - vErrors = vErrors === null ? validate101.errors : vErrors.concat(validate101.errors); - errors = vErrors.length; - } - var _valid0 = _errs2 === errors; - valid0 = valid0 || _valid0; - if (_valid0) { - if (props0 !== true) { - props0 = true; + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.items === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "items" }, + message: "must have required property '" + "items" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; } - } - const _errs3 = errors; - if ( - !validate130(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) - ) { - vErrors = vErrors === null ? validate130.errors : vErrors.concat(validate130.errors); - errors = vErrors.length; - } - var _valid0 = _errs3 === errors; - valid0 = valid0 || _valid0; - if (_valid0) { - if (props0 !== true) { - props0 = true; + for (const key0 in data) { + if (!(key0 === "items" || key0 === "next_cursor")) { + const err1 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } } - } - const _errs4 = errors; - if ( - !validate143(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) - ) { - vErrors = vErrors === null ? validate143.errors : vErrors.concat(validate143.errors); - errors = vErrors.length; - } - var _valid0 = _errs4 === errors; - valid0 = valid0 || _valid0; - if (_valid0) { - if (props0 !== true) { - props0 = true; + if (data.items !== undefined) { + let data0 = data.items; + if (Array.isArray(data0)) { + if (data0.length > 100) { + const err2 = { + instancePath: instancePath + "/items", + schemaPath: "#/properties/items/maxItems", + keyword: "maxItems", + params: { limit: 100 }, + message: "must NOT have more than 100 items", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + const len0 = data0.length; + for (let i0 = 0; i0 < len0; i0++) { + let data1 = data0[i0]; + if (data1 && typeof data1 == "object" && !Array.isArray(data1)) { + if (data1.project === undefined) { + const err3 = { + instancePath: instancePath + "/items/" + i0, + schemaPath: "#/$defs/GraphSummaryResponse/required", + keyword: "required", + params: { missingProperty: "project" }, + message: "must have required property '" + "project" + "'", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + if (data1.graph === undefined) { + const err4 = { + instancePath: instancePath + "/items/" + i0, + schemaPath: "#/$defs/GraphSummaryResponse/required", + keyword: "required", + params: { missingProperty: "graph" }, + message: "must have required property '" + "graph" + "'", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + if (data1.content_sha256 === undefined) { + const err5 = { + instancePath: instancePath + "/items/" + i0, + schemaPath: "#/$defs/GraphSummaryResponse/required", + keyword: "required", + params: { missingProperty: "content_sha256" }, + message: "must have required property '" + "content_sha256" + "'", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + if (data1.created_at === undefined) { + const err6 = { + instancePath: instancePath + "/items/" + i0, + schemaPath: "#/$defs/GraphSummaryResponse/required", + keyword: "required", + params: { missingProperty: "created_at" }, + message: "must have required property '" + "created_at" + "'", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + if (data1.updated_at === undefined) { + const err7 = { + instancePath: instancePath + "/items/" + i0, + schemaPath: "#/$defs/GraphSummaryResponse/required", + keyword: "required", + params: { missingProperty: "updated_at" }, + message: "must have required property '" + "updated_at" + "'", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } + for (const key1 in data1) { + if (!( + key1 === "content_sha256" || + key1 === "created_at" || + key1 === "graph" || + key1 === "project" || + key1 === "updated_at" + )) { + const err8 = { + instancePath: instancePath + "/items/" + i0, + schemaPath: "#/$defs/GraphSummaryResponse/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } + } + if (data1.content_sha256 !== undefined) { + let data2 = data1.content_sha256; + if (typeof data2 === "string") { + if (!pattern4.test(data2)) { + const err9 = { + instancePath: instancePath + "/items/" + i0 + "/content_sha256", + schemaPath: "#/$defs/GraphSummaryResponse/properties/content_sha256/pattern", + keyword: "pattern", + params: { pattern: "^[0-9a-f]{64}$" }, + message: 'must match pattern "' + "^[0-9a-f]{64}$" + '"', + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + } else { + const err10 = { + instancePath: instancePath + "/items/" + i0 + "/content_sha256", + schemaPath: "#/$defs/GraphSummaryResponse/properties/content_sha256/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; + } + } + if (data1.created_at !== undefined) { + if (typeof data1.created_at !== "string") { + const err11 = { + instancePath: instancePath + "/items/" + i0 + "/created_at", + schemaPath: "#/$defs/GraphSummaryResponse/properties/created_at/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } + } + if (data1.graph !== undefined) { + if (typeof data1.graph !== "string") { + const err12 = { + instancePath: instancePath + "/items/" + i0 + "/graph", + schemaPath: "#/$defs/GraphSummaryResponse/properties/graph/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err12]; + } else { + vErrors.push(err12); + } + errors++; + } + } + if (data1.project !== undefined) { + if (typeof data1.project !== "string") { + const err13 = { + instancePath: instancePath + "/items/" + i0 + "/project", + schemaPath: "#/$defs/GraphSummaryResponse/properties/project/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err13]; + } else { + vErrors.push(err13); + } + errors++; + } + } + if (data1.updated_at !== undefined) { + if (typeof data1.updated_at !== "string") { + const err14 = { + instancePath: instancePath + "/items/" + i0 + "/updated_at", + schemaPath: "#/$defs/GraphSummaryResponse/properties/updated_at/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err14]; + } else { + vErrors.push(err14); + } + errors++; + } + } + } else { + const err15 = { + instancePath: instancePath + "/items/" + i0, + schemaPath: "#/$defs/GraphSummaryResponse/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err15]; + } else { + vErrors.push(err15); + } + errors++; + } + } + } else { + const err16 = { + instancePath: instancePath + "/items", + schemaPath: "#/properties/items/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err16]; + } else { + vErrors.push(err16); + } + errors++; + } + } + if (data.next_cursor !== undefined) { + let data7 = data.next_cursor; + const _errs19 = errors; + let valid5 = false; + const _errs20 = errors; + if (typeof data7 !== "string") { + const err17 = { + instancePath: instancePath + "/next_cursor", + schemaPath: "#/properties/next_cursor/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err17]; + } else { + vErrors.push(err17); + } + errors++; + } + var _valid0 = _errs20 === errors; + valid5 = valid5 || _valid0; + const _errs22 = errors; + if (data7 !== null) { + const err18 = { + instancePath: instancePath + "/next_cursor", + schemaPath: "#/properties/next_cursor/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err18]; + } else { + vErrors.push(err18); + } + errors++; + } + var _valid0 = _errs22 === errors; + valid5 = valid5 || _valid0; + if (!valid5) { + const err19 = { + instancePath: instancePath + "/next_cursor", + schemaPath: "#/properties/next_cursor/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err19]; + } else { + vErrors.push(err19); + } + errors++; + } else { + errors = _errs19; + if (vErrors !== null) { + if (_errs19) { + vErrors.length = _errs19; + } else { + vErrors = null; + } + } + } } - } - if (!valid0) { - const err0 = { + } else { + const err20 = { instancePath, - schemaPath: "#/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", }; if (vErrors === null) { - vErrors = [err0]; + vErrors = [err20]; } else { - vErrors.push(err0); + vErrors.push(err20); } errors++; - } else { - errors = _errs0; - if (vErrors !== null) { - if (_errs0) { - vErrors.length = _errs0; - } else { - vErrors = null; - } - } } - validate58.errors = vErrors; - evaluated0.props = props0; + validate164.errors = vErrors; return errors === 0; } -validate58.evaluated = { dynamicProps: true, dynamicItems: false }; +validate164.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate32( +export const validateGraphRepairPreview = validate165; +const schema132 = { + $defs: { + DestinationDocument: { + additionalProperties: false, + properties: { + business_key: { items: { type: "string" }, title: "Business Key", type: "array" }, + dataset: { minLength: 1, title: "Dataset", type: "string" }, + project: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Project" }, + table: { minLength: 1, title: "Table", type: "string" }, + }, + required: ["dataset", "table"], + title: "DestinationDocument", + type: "object", + }, + GraphRepairOutput: { + additionalProperties: false, + properties: { + business_key: { items: { type: "string" }, title: "Business Key", type: "array" }, + destination: { $ref: "#/$defs/DestinationDocument" }, + name: { title: "Name", type: "string" }, + node_id: { title: "Node Id", type: "string" }, + partition_field: { title: "Partition Field", type: "string" }, + partition_type: { enum: ["DATE", "TIMESTAMP"], title: "Partition Type", type: "string" }, + }, + required: [ + "node_id", + "name", + "destination", + "partition_field", + "partition_type", + "business_key", + ], + title: "GraphRepairOutput", + type: "object", + }, + GraphRepairWindow: { + additionalProperties: false, + description: "UTC calendar dates: start is inclusive and end is exclusive.", + properties: { + end_date: { format: "date", title: "End Date", type: "string" }, + start_date: { format: "date", title: "Start Date", type: "string" }, + }, + required: ["start_date", "end_date"], + title: "GraphRepairWindow", + type: "object", + }, + }, + $id: "urn:dander:control:contracts:v1:graph-repair-preview", + $schema: "https://json-schema.org/draft/2020-12/schema", + additionalProperties: false, + properties: { + environments: { items: { type: "string" }, title: "Environments", type: "array" }, + estimated_cost_usd: { default: null, title: "Estimated Cost Usd", type: "null" }, + estimated_rows: { default: null, title: "Estimated Rows", type: "null" }, + graph_content_sha256: { title: "Graph Content Sha256", type: "string" }, + limitations: { + default: [ + "Start date is included; end date is excluded. Timestamp fields use UTC calendar dates.", + "Source extraction and its normal saved progress are unchanged. This is not a historical snapshot.", + "Only selected output dates are published; computing them can scan data outside that range.", + "A record moving across the date boundary stops publication for that output. Choose a wider range or rebuild the full output.", + "Each output publishes atomically. Earlier successful outputs remain if a later output fails; repeating the same repair converges on the current raw data.", + "Execution requires a current repair-capable runtime with a BigQuery warehouse. Runtime validation and warehouse checks still apply.", + ], + items: { type: "string" }, + title: "Limitations", + type: "array", + }, + outputs: { items: { $ref: "#/$defs/GraphRepairOutput" }, title: "Outputs", type: "array" }, + source: { const: "retained_raw", default: "retained_raw", title: "Source", type: "string" }, + summary: { + default: + "Rebuild the selected output dates from the raw data currently stored in your warehouse.", + title: "Summary", + type: "string", + }, + window: { $ref: "#/$defs/GraphRepairWindow" }, + }, + required: ["graph_content_sha256", "window", "outputs", "environments"], + title: "GraphRepairPreviewResponse", + type: "object", +}; +const schema135 = { + additionalProperties: false, + description: "UTC calendar dates: start is inclusive and end is exclusive.", + properties: { + end_date: { format: "date", title: "End Date", type: "string" }, + start_date: { format: "date", title: "Start Date", type: "string" }, + }, + required: ["start_date", "end_date"], + title: "GraphRepairWindow", + type: "object", +}; +const schema133 = { + additionalProperties: false, + properties: { + business_key: { items: { type: "string" }, title: "Business Key", type: "array" }, + destination: { $ref: "#/$defs/DestinationDocument" }, + name: { title: "Name", type: "string" }, + node_id: { title: "Node Id", type: "string" }, + partition_field: { title: "Partition Field", type: "string" }, + partition_type: { enum: ["DATE", "TIMESTAMP"], title: "Partition Type", type: "string" }, + }, + required: ["node_id", "name", "destination", "partition_field", "partition_type", "business_key"], + title: "GraphRepairOutput", + type: "object", +}; +const schema134 = { + additionalProperties: false, + properties: { + business_key: { items: { type: "string" }, title: "Business Key", type: "array" }, + dataset: { minLength: 1, title: "Dataset", type: "string" }, + project: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Project" }, + table: { minLength: 1, title: "Table", type: "string" }, + }, + required: ["dataset", "table"], + title: "DestinationDocument", + type: "object", +}; + +function validate166( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate32.evaluated; + const evaluated0 = validate166.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -15013,13 +18552,13 @@ function validate32( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.name === undefined) { + if (data.node_id === undefined) { const err0 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "name" }, - message: "must have required property '" + "name" + "'", + params: { missingProperty: "node_id" }, + message: "must have required property '" + "node_id" + "'", }; if (vErrors === null) { vErrors = [err0]; @@ -15028,9 +18567,91 @@ function validate32( } errors++; } + if (data.name === undefined) { + const err1 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "name" }, + message: "must have required property '" + "name" + "'", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + if (data.destination === undefined) { + const err2 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "destination" }, + message: "must have required property '" + "destination" + "'", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + if (data.partition_field === undefined) { + const err3 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "partition_field" }, + message: "must have required property '" + "partition_field" + "'", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + if (data.partition_type === undefined) { + const err4 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "partition_type" }, + message: "must have required property '" + "partition_type" + "'", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + if (data.business_key === undefined) { + const err5 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "business_key" }, + message: "must have required property '" + "business_key" + "'", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } for (const key0 in data) { - if (!(key0 === "edges" || key0 === "name" || key0 === "nodes" || key0 === "trigger")) { - const err1 = { + if (!( + key0 === "business_key" || + key0 === "destination" || + key0 === "name" || + key0 === "node_id" || + key0 === "partition_field" || + key0 === "partition_type" + )) { + const err6 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", @@ -15038,50 +18659,294 @@ function validate32( message: "must NOT have additional properties", }; if (vErrors === null) { - vErrors = [err1]; + vErrors = [err6]; } else { - vErrors.push(err1); + vErrors.push(err6); } errors++; } } - if (data.edges !== undefined) { - let data0 = data.edges; + if (data.business_key !== undefined) { + let data0 = data.business_key; if (Array.isArray(data0)) { const len0 = data0.length; for (let i0 = 0; i0 < len0; i0++) { - if ( - !validate33(data0[i0], { - instancePath: instancePath + "/edges/" + i0, - parentData: data0, - parentDataProperty: i0, - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate33.errors : vErrors.concat(validate33.errors); - errors = vErrors.length; + if (typeof data0[i0] !== "string") { + const err7 = { + instancePath: instancePath + "/business_key/" + i0, + schemaPath: "#/properties/business_key/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; } } } else { - const err2 = { - instancePath: instancePath + "/edges", - schemaPath: "#/properties/edges/type", + const err8 = { + instancePath: instancePath + "/business_key", + schemaPath: "#/properties/business_key/type", keyword: "type", params: { type: "array" }, message: "must be array", }; if (vErrors === null) { - vErrors = [err2]; + vErrors = [err8]; } else { - vErrors.push(err2); + vErrors.push(err8); + } + errors++; + } + } + if (data.destination !== undefined) { + let data2 = data.destination; + if (data2 && typeof data2 == "object" && !Array.isArray(data2)) { + if (data2.dataset === undefined) { + const err9 = { + instancePath: instancePath + "/destination", + schemaPath: "#/$defs/DestinationDocument/required", + keyword: "required", + params: { missingProperty: "dataset" }, + message: "must have required property '" + "dataset" + "'", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + if (data2.table === undefined) { + const err10 = { + instancePath: instancePath + "/destination", + schemaPath: "#/$defs/DestinationDocument/required", + keyword: "required", + params: { missingProperty: "table" }, + message: "must have required property '" + "table" + "'", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; + } + for (const key1 in data2) { + if (!( + key1 === "business_key" || + key1 === "dataset" || + key1 === "project" || + key1 === "table" + )) { + const err11 = { + instancePath: instancePath + "/destination", + schemaPath: "#/$defs/DestinationDocument/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } + } + if (data2.business_key !== undefined) { + let data3 = data2.business_key; + if (Array.isArray(data3)) { + const len1 = data3.length; + for (let i1 = 0; i1 < len1; i1++) { + if (typeof data3[i1] !== "string") { + const err12 = { + instancePath: instancePath + "/destination/business_key/" + i1, + schemaPath: "#/$defs/DestinationDocument/properties/business_key/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err12]; + } else { + vErrors.push(err12); + } + errors++; + } + } + } else { + const err13 = { + instancePath: instancePath + "/destination/business_key", + schemaPath: "#/$defs/DestinationDocument/properties/business_key/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err13]; + } else { + vErrors.push(err13); + } + errors++; + } + } + if (data2.dataset !== undefined) { + let data5 = data2.dataset; + if (typeof data5 === "string") { + if (func3(data5) < 1) { + const err14 = { + instancePath: instancePath + "/destination/dataset", + schemaPath: "#/$defs/DestinationDocument/properties/dataset/minLength", + keyword: "minLength", + params: { limit: 1 }, + message: "must NOT have fewer than 1 characters", + }; + if (vErrors === null) { + vErrors = [err14]; + } else { + vErrors.push(err14); + } + errors++; + } + } else { + const err15 = { + instancePath: instancePath + "/destination/dataset", + schemaPath: "#/$defs/DestinationDocument/properties/dataset/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err15]; + } else { + vErrors.push(err15); + } + errors++; + } + } + if (data2.project !== undefined) { + let data6 = data2.project; + const _errs17 = errors; + let valid7 = false; + const _errs18 = errors; + if (typeof data6 !== "string") { + const err16 = { + instancePath: instancePath + "/destination/project", + schemaPath: "#/$defs/DestinationDocument/properties/project/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err16]; + } else { + vErrors.push(err16); + } + errors++; + } + var _valid0 = _errs18 === errors; + valid7 = valid7 || _valid0; + const _errs20 = errors; + if (data6 !== null) { + const err17 = { + instancePath: instancePath + "/destination/project", + schemaPath: "#/$defs/DestinationDocument/properties/project/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err17]; + } else { + vErrors.push(err17); + } + errors++; + } + var _valid0 = _errs20 === errors; + valid7 = valid7 || _valid0; + if (!valid7) { + const err18 = { + instancePath: instancePath + "/destination/project", + schemaPath: "#/$defs/DestinationDocument/properties/project/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err18]; + } else { + vErrors.push(err18); + } + errors++; + } else { + errors = _errs17; + if (vErrors !== null) { + if (_errs17) { + vErrors.length = _errs17; + } else { + vErrors = null; + } + } + } + } + if (data2.table !== undefined) { + let data7 = data2.table; + if (typeof data7 === "string") { + if (func3(data7) < 1) { + const err19 = { + instancePath: instancePath + "/destination/table", + schemaPath: "#/$defs/DestinationDocument/properties/table/minLength", + keyword: "minLength", + params: { limit: 1 }, + message: "must NOT have fewer than 1 characters", + }; + if (vErrors === null) { + vErrors = [err19]; + } else { + vErrors.push(err19); + } + errors++; + } + } else { + const err20 = { + instancePath: instancePath + "/destination/table", + schemaPath: "#/$defs/DestinationDocument/properties/table/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err20]; + } else { + vErrors.push(err20); + } + errors++; + } + } + } else { + const err21 = { + instancePath: instancePath + "/destination", + schemaPath: "#/$defs/DestinationDocument/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err21]; + } else { + vErrors.push(err21); } errors++; } } if (data.name !== undefined) { if (typeof data.name !== "string") { - const err3 = { + const err22 = { instancePath: instancePath + "/name", schemaPath: "#/properties/name/type", keyword: "type", @@ -15089,111 +18954,82 @@ function validate32( message: "must be string", }; if (vErrors === null) { - vErrors = [err3]; + vErrors = [err22]; } else { - vErrors.push(err3); + vErrors.push(err22); } errors++; } } - if (data.nodes !== undefined) { - let data3 = data.nodes; - if (Array.isArray(data3)) { - const len1 = data3.length; - for (let i1 = 0; i1 < len1; i1++) { - if ( - !validate58(data3[i1], { - instancePath: instancePath + "/nodes/" + i1, - parentData: data3, - parentDataProperty: i1, - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate58.errors : vErrors.concat(validate58.errors); - errors = vErrors.length; - } - } - } else { - const err4 = { - instancePath: instancePath + "/nodes", - schemaPath: "#/properties/nodes/type", + if (data.node_id !== undefined) { + if (typeof data.node_id !== "string") { + const err23 = { + instancePath: instancePath + "/node_id", + schemaPath: "#/properties/node_id/type", keyword: "type", - params: { type: "array" }, - message: "must be array", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err4]; - } else { - vErrors.push(err4); - } - errors++; - } - } - if (data.trigger !== undefined) { - let data5 = data.trigger; - const _errs11 = errors; - let valid5 = false; - const _errs12 = errors; - if ( - !validate87(data5, { - instancePath: instancePath + "/trigger", - parentData: data, - parentDataProperty: "trigger", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate87.errors : vErrors.concat(validate87.errors); - errors = vErrors.length; - } - var _valid0 = _errs12 === errors; - valid5 = valid5 || _valid0; - const _errs13 = errors; - if (data5 !== null) { - const err5 = { - instancePath: instancePath + "/trigger", - schemaPath: "#/properties/trigger/anyOf/1/type", + vErrors = [err23]; + } else { + vErrors.push(err23); + } + errors++; + } + } + if (data.partition_field !== undefined) { + if (typeof data.partition_field !== "string") { + const err24 = { + instancePath: instancePath + "/partition_field", + schemaPath: "#/properties/partition_field/type", keyword: "type", - params: { type: "null" }, - message: "must be null", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err5]; + vErrors = [err24]; } else { - vErrors.push(err5); + vErrors.push(err24); } errors++; } - var _valid0 = _errs13 === errors; - valid5 = valid5 || _valid0; - if (!valid5) { - const err6 = { - instancePath: instancePath + "/trigger", - schemaPath: "#/properties/trigger/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", + } + if (data.partition_type !== undefined) { + let data11 = data.partition_type; + if (typeof data11 !== "string") { + const err25 = { + instancePath: instancePath + "/partition_type", + schemaPath: "#/properties/partition_type/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err6]; + vErrors = [err25]; } else { - vErrors.push(err6); + vErrors.push(err25); } errors++; - } else { - errors = _errs11; - if (vErrors !== null) { - if (_errs11) { - vErrors.length = _errs11; - } else { - vErrors = null; - } + } + if (!(data11 === "DATE" || data11 === "TIMESTAMP")) { + const err26 = { + instancePath: instancePath + "/partition_type", + schemaPath: "#/properties/partition_type/enum", + keyword: "enum", + params: { allowedValues: schema133.properties.partition_type.enum }, + message: "must be equal to one of the allowed values", + }; + if (vErrors === null) { + vErrors = [err26]; + } else { + vErrors.push(err26); } + errors++; } } } else { - const err7 = { + const err27 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -15201,24 +19037,24 @@ function validate32( message: "must be object", }; if (vErrors === null) { - vErrors = [err7]; + vErrors = [err27]; } else { - vErrors.push(err7); + vErrors.push(err27); } errors++; } - validate32.errors = vErrors; + validate166.errors = vErrors; return errors === 0; } -validate32.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate166.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate31( +function validate165( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { - /*# sourceURL="urn:dander:control:contracts:v1:graph-create" */ let vErrors = null; + /*# sourceURL="urn:dander:control:contracts:v1:graph-repair-preview" */ let vErrors = null; let errors = 0; - const evaluated0 = validate31.evaluated; + const evaluated0 = validate165.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -15226,13 +19062,13 @@ function validate31( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.graph === undefined) { + if (data.graph_content_sha256 === undefined) { const err0 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "graph" }, - message: "must have required property '" + "graph" + "'", + params: { missingProperty: "graph_content_sha256" }, + message: "must have required property '" + "graph_content_sha256" + "'", }; if (vErrors === null) { vErrors = [err0]; @@ -15241,13 +19077,13 @@ function validate31( } errors++; } - if (data.document === undefined) { + if (data.window === undefined) { const err1 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "document" }, - message: "must have required property '" + "document" + "'", + params: { missingProperty: "window" }, + message: "must have required property '" + "window" + "'", }; if (vErrors === null) { vErrors = [err1]; @@ -15256,9 +19092,39 @@ function validate31( } errors++; } + if (data.outputs === undefined) { + const err2 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "outputs" }, + message: "must have required property '" + "outputs" + "'", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + if (data.environments === undefined) { + const err3 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "environments" }, + message: "must have required property '" + "environments" + "'", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } for (const key0 in data) { - if (!(key0 === "document" || key0 === "graph")) { - const err2 = { + if (!func1.call(schema132.properties, key0)) { + const err4 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", @@ -15266,485 +19132,324 @@ function validate31( message: "must NOT have additional properties", }; if (vErrors === null) { - vErrors = [err2]; + vErrors = [err4]; } else { - vErrors.push(err2); + vErrors.push(err4); } errors++; } } - if (data.document !== undefined) { - if ( - !validate32(data.document, { - instancePath: instancePath + "/document", - parentData: data, - parentDataProperty: "document", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate32.errors : vErrors.concat(validate32.errors); - errors = vErrors.length; + if (data.environments !== undefined) { + let data0 = data.environments; + if (Array.isArray(data0)) { + const len0 = data0.length; + for (let i0 = 0; i0 < len0; i0++) { + if (typeof data0[i0] !== "string") { + const err5 = { + instancePath: instancePath + "/environments/" + i0, + schemaPath: "#/properties/environments/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + } + } else { + const err6 = { + instancePath: instancePath + "/environments", + schemaPath: "#/properties/environments/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; } } - if (data.graph !== undefined) { - if (typeof data.graph !== "string") { - const err3 = { - instancePath: instancePath + "/graph", - schemaPath: "#/properties/graph/type", + if (data.estimated_cost_usd !== undefined) { + if (data.estimated_cost_usd !== null) { + const err7 = { + instancePath: instancePath + "/estimated_cost_usd", + schemaPath: "#/properties/estimated_cost_usd/type", keyword: "type", - params: { type: "string" }, - message: "must be string", + params: { type: "null" }, + message: "must be null", }; if (vErrors === null) { - vErrors = [err3]; + vErrors = [err7]; } else { - vErrors.push(err3); + vErrors.push(err7); } errors++; } } - } else { - const err4 = { - instancePath, - schemaPath: "#/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", - }; - if (vErrors === null) { - vErrors = [err4]; - } else { - vErrors.push(err4); - } - errors++; - } - validate31.errors = vErrors; - return errors === 0; -} -validate31.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -export const validateGraphPage = validate154; -const schema118 = { - $defs: { - GraphSummaryResponse: { - additionalProperties: false, - description: "Document-free metadata for one graph in a bounded hosted list response.", - properties: { - content_sha256: { pattern: "^[0-9a-f]{64}$", title: "Content Sha256", type: "string" }, - created_at: { title: "Created At", type: "string" }, - graph: { title: "Graph", type: "string" }, - project: { title: "Project", type: "string" }, - updated_at: { title: "Updated At", type: "string" }, - }, - required: ["project", "graph", "content_sha256", "created_at", "updated_at"], - title: "GraphSummaryResponse", - type: "object", - }, - }, - $id: "urn:dander:control:contracts:v1:graph-page", - $schema: "https://json-schema.org/draft/2020-12/schema", - additionalProperties: false, - description: "A bounded graph-summary page that never embeds full graph documents.", - properties: { - items: { - items: { $ref: "#/$defs/GraphSummaryResponse" }, - maxItems: 100, - title: "Items", - type: "array", - }, - next_cursor: { - anyOf: [{ type: "string" }, { type: "null" }], - default: null, - title: "Next Cursor", - }, - }, - required: ["items"], - title: "GraphPageResponse", - type: "object", -}; -const schema119 = { - additionalProperties: false, - description: "Document-free metadata for one graph in a bounded hosted list response.", - properties: { - content_sha256: { pattern: "^[0-9a-f]{64}$", title: "Content Sha256", type: "string" }, - created_at: { title: "Created At", type: "string" }, - graph: { title: "Graph", type: "string" }, - project: { title: "Project", type: "string" }, - updated_at: { title: "Updated At", type: "string" }, - }, - required: ["project", "graph", "content_sha256", "created_at", "updated_at"], - title: "GraphSummaryResponse", - type: "object", -}; - -function validate154( - data, - { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, -) { - /*# sourceURL="urn:dander:control:contracts:v1:graph-page" */ let vErrors = null; - let errors = 0; - const evaluated0 = validate154.evaluated; - if (evaluated0.dynamicProps) { - evaluated0.props = undefined; - } - if (evaluated0.dynamicItems) { - evaluated0.items = undefined; - } - if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.items === undefined) { - const err0 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "items" }, - message: "must have required property '" + "items" + "'", - }; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); + if (data.estimated_rows !== undefined) { + if (data.estimated_rows !== null) { + const err8 = { + instancePath: instancePath + "/estimated_rows", + schemaPath: "#/properties/estimated_rows/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; } - errors++; } - for (const key0 in data) { - if (!(key0 === "items" || key0 === "next_cursor")) { - const err1 = { - instancePath, - schemaPath: "#/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key0 }, - message: "must NOT have additional properties", + if (data.graph_content_sha256 !== undefined) { + if (typeof data.graph_content_sha256 !== "string") { + const err9 = { + instancePath: instancePath + "/graph_content_sha256", + schemaPath: "#/properties/graph_content_sha256/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err1]; + vErrors = [err9]; } else { - vErrors.push(err1); + vErrors.push(err9); } errors++; } } - if (data.items !== undefined) { - let data0 = data.items; - if (Array.isArray(data0)) { - if (data0.length > 100) { - const err2 = { - instancePath: instancePath + "/items", - schemaPath: "#/properties/items/maxItems", - keyword: "maxItems", - params: { limit: 100 }, - message: "must NOT have more than 100 items", - }; - if (vErrors === null) { - vErrors = [err2]; - } else { - vErrors.push(err2); - } - errors++; - } - const len0 = data0.length; - for (let i0 = 0; i0 < len0; i0++) { - let data1 = data0[i0]; - if (data1 && typeof data1 == "object" && !Array.isArray(data1)) { - if (data1.project === undefined) { - const err3 = { - instancePath: instancePath + "/items/" + i0, - schemaPath: "#/$defs/GraphSummaryResponse/required", - keyword: "required", - params: { missingProperty: "project" }, - message: "must have required property '" + "project" + "'", - }; - if (vErrors === null) { - vErrors = [err3]; - } else { - vErrors.push(err3); - } - errors++; - } - if (data1.graph === undefined) { - const err4 = { - instancePath: instancePath + "/items/" + i0, - schemaPath: "#/$defs/GraphSummaryResponse/required", - keyword: "required", - params: { missingProperty: "graph" }, - message: "must have required property '" + "graph" + "'", - }; - if (vErrors === null) { - vErrors = [err4]; - } else { - vErrors.push(err4); - } - errors++; - } - if (data1.content_sha256 === undefined) { - const err5 = { - instancePath: instancePath + "/items/" + i0, - schemaPath: "#/$defs/GraphSummaryResponse/required", - keyword: "required", - params: { missingProperty: "content_sha256" }, - message: "must have required property '" + "content_sha256" + "'", - }; - if (vErrors === null) { - vErrors = [err5]; - } else { - vErrors.push(err5); - } - errors++; - } - if (data1.created_at === undefined) { - const err6 = { - instancePath: instancePath + "/items/" + i0, - schemaPath: "#/$defs/GraphSummaryResponse/required", - keyword: "required", - params: { missingProperty: "created_at" }, - message: "must have required property '" + "created_at" + "'", - }; - if (vErrors === null) { - vErrors = [err6]; - } else { - vErrors.push(err6); - } - errors++; - } - if (data1.updated_at === undefined) { - const err7 = { - instancePath: instancePath + "/items/" + i0, - schemaPath: "#/$defs/GraphSummaryResponse/required", - keyword: "required", - params: { missingProperty: "updated_at" }, - message: "must have required property '" + "updated_at" + "'", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; - } - for (const key1 in data1) { - if (!( - key1 === "content_sha256" || - key1 === "created_at" || - key1 === "graph" || - key1 === "project" || - key1 === "updated_at" - )) { - const err8 = { - instancePath: instancePath + "/items/" + i0, - schemaPath: "#/$defs/GraphSummaryResponse/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key1 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err8]; - } else { - vErrors.push(err8); - } - errors++; - } - } - if (data1.content_sha256 !== undefined) { - let data2 = data1.content_sha256; - if (typeof data2 === "string") { - if (!pattern4.test(data2)) { - const err9 = { - instancePath: instancePath + "/items/" + i0 + "/content_sha256", - schemaPath: "#/$defs/GraphSummaryResponse/properties/content_sha256/pattern", - keyword: "pattern", - params: { pattern: "^[0-9a-f]{64}$" }, - message: 'must match pattern "' + "^[0-9a-f]{64}$" + '"', - }; - if (vErrors === null) { - vErrors = [err9]; - } else { - vErrors.push(err9); - } - errors++; - } - } else { - const err10 = { - instancePath: instancePath + "/items/" + i0 + "/content_sha256", - schemaPath: "#/$defs/GraphSummaryResponse/properties/content_sha256/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err10]; - } else { - vErrors.push(err10); - } - errors++; - } - } - if (data1.created_at !== undefined) { - if (typeof data1.created_at !== "string") { - const err11 = { - instancePath: instancePath + "/items/" + i0 + "/created_at", - schemaPath: "#/$defs/GraphSummaryResponse/properties/created_at/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err11]; - } else { - vErrors.push(err11); - } - errors++; - } - } - if (data1.graph !== undefined) { - if (typeof data1.graph !== "string") { - const err12 = { - instancePath: instancePath + "/items/" + i0 + "/graph", - schemaPath: "#/$defs/GraphSummaryResponse/properties/graph/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err12]; - } else { - vErrors.push(err12); - } - errors++; - } - } - if (data1.project !== undefined) { - if (typeof data1.project !== "string") { - const err13 = { - instancePath: instancePath + "/items/" + i0 + "/project", - schemaPath: "#/$defs/GraphSummaryResponse/properties/project/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err13]; - } else { - vErrors.push(err13); - } - errors++; - } - } - if (data1.updated_at !== undefined) { - if (typeof data1.updated_at !== "string") { - const err14 = { - instancePath: instancePath + "/items/" + i0 + "/updated_at", - schemaPath: "#/$defs/GraphSummaryResponse/properties/updated_at/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err14]; - } else { - vErrors.push(err14); - } - errors++; - } - } - } else { - const err15 = { - instancePath: instancePath + "/items/" + i0, - schemaPath: "#/$defs/GraphSummaryResponse/type", + if (data.limitations !== undefined) { + let data5 = data.limitations; + if (Array.isArray(data5)) { + const len1 = data5.length; + for (let i1 = 0; i1 < len1; i1++) { + if (typeof data5[i1] !== "string") { + const err10 = { + instancePath: instancePath + "/limitations/" + i1, + schemaPath: "#/properties/limitations/items/type", keyword: "type", - params: { type: "object" }, - message: "must be object", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err15]; + vErrors = [err10]; } else { - vErrors.push(err15); + vErrors.push(err10); } errors++; } } } else { - const err16 = { - instancePath: instancePath + "/items", - schemaPath: "#/properties/items/type", + const err11 = { + instancePath: instancePath + "/limitations", + schemaPath: "#/properties/limitations/type", keyword: "type", params: { type: "array" }, message: "must be array", }; if (vErrors === null) { - vErrors = [err16]; + vErrors = [err11]; } else { - vErrors.push(err16); + vErrors.push(err11); } errors++; } } - if (data.next_cursor !== undefined) { - let data7 = data.next_cursor; - const _errs19 = errors; - let valid5 = false; - const _errs20 = errors; - if (typeof data7 !== "string") { - const err17 = { - instancePath: instancePath + "/next_cursor", - schemaPath: "#/properties/next_cursor/anyOf/0/type", + if (data.outputs !== undefined) { + let data7 = data.outputs; + if (Array.isArray(data7)) { + const len2 = data7.length; + for (let i2 = 0; i2 < len2; i2++) { + if ( + !validate166(data7[i2], { + instancePath: instancePath + "/outputs/" + i2, + parentData: data7, + parentDataProperty: i2, + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate166.errors : vErrors.concat(validate166.errors); + errors = vErrors.length; + } + } + } else { + const err12 = { + instancePath: instancePath + "/outputs", + schemaPath: "#/properties/outputs/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err12]; + } else { + vErrors.push(err12); + } + errors++; + } + } + if (data.source !== undefined) { + let data9 = data.source; + if (typeof data9 !== "string") { + const err13 = { + instancePath: instancePath + "/source", + schemaPath: "#/properties/source/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err17]; + vErrors = [err13]; } else { - vErrors.push(err17); + vErrors.push(err13); } errors++; } - var _valid0 = _errs20 === errors; - valid5 = valid5 || _valid0; - const _errs22 = errors; - if (data7 !== null) { - const err18 = { - instancePath: instancePath + "/next_cursor", - schemaPath: "#/properties/next_cursor/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", + if ("retained_raw" !== data9) { + const err14 = { + instancePath: instancePath + "/source", + schemaPath: "#/properties/source/const", + keyword: "const", + params: { allowedValue: "retained_raw" }, + message: "must be equal to constant", }; if (vErrors === null) { - vErrors = [err18]; + vErrors = [err14]; } else { - vErrors.push(err18); + vErrors.push(err14); } errors++; } - var _valid0 = _errs22 === errors; - valid5 = valid5 || _valid0; - if (!valid5) { - const err19 = { - instancePath: instancePath + "/next_cursor", - schemaPath: "#/properties/next_cursor/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", + } + if (data.summary !== undefined) { + if (typeof data.summary !== "string") { + const err15 = { + instancePath: instancePath + "/summary", + schemaPath: "#/properties/summary/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err19]; + vErrors = [err15]; } else { - vErrors.push(err19); + vErrors.push(err15); } errors++; - } else { - errors = _errs19; - if (vErrors !== null) { - if (_errs19) { - vErrors.length = _errs19; + } + } + if (data.window !== undefined) { + let data11 = data.window; + if (data11 && typeof data11 == "object" && !Array.isArray(data11)) { + if (data11.start_date === undefined) { + const err16 = { + instancePath: instancePath + "/window", + schemaPath: "#/$defs/GraphRepairWindow/required", + keyword: "required", + params: { missingProperty: "start_date" }, + message: "must have required property '" + "start_date" + "'", + }; + if (vErrors === null) { + vErrors = [err16]; } else { - vErrors = null; + vErrors.push(err16); + } + errors++; + } + if (data11.end_date === undefined) { + const err17 = { + instancePath: instancePath + "/window", + schemaPath: "#/$defs/GraphRepairWindow/required", + keyword: "required", + params: { missingProperty: "end_date" }, + message: "must have required property '" + "end_date" + "'", + }; + if (vErrors === null) { + vErrors = [err17]; + } else { + vErrors.push(err17); + } + errors++; + } + for (const key1 in data11) { + if (!(key1 === "end_date" || key1 === "start_date")) { + const err18 = { + instancePath: instancePath + "/window", + schemaPath: "#/$defs/GraphRepairWindow/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err18]; + } else { + vErrors.push(err18); + } + errors++; + } + } + if (data11.end_date !== undefined) { + if (!(typeof data11.end_date === "string")) { + const err19 = { + instancePath: instancePath + "/window/end_date", + schemaPath: "#/$defs/GraphRepairWindow/properties/end_date/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err19]; + } else { + vErrors.push(err19); + } + errors++; + } + } + if (data11.start_date !== undefined) { + if (!(typeof data11.start_date === "string")) { + const err20 = { + instancePath: instancePath + "/window/start_date", + schemaPath: "#/$defs/GraphRepairWindow/properties/start_date/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err20]; + } else { + vErrors.push(err20); + } + errors++; } } + } else { + const err21 = { + instancePath: instancePath + "/window", + schemaPath: "#/$defs/GraphRepairWindow/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err21]; + } else { + vErrors.push(err21); + } + errors++; } } } else { - const err20 = { + const err22 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -15752,19 +19457,149 @@ function validate154( message: "must be object", }; if (vErrors === null) { - vErrors = [err20]; + vErrors = [err22]; } else { - vErrors.push(err20); + vErrors.push(err22); } errors++; } - validate154.errors = vErrors; + validate165.errors = vErrors; return errors === 0; } -validate154.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate165.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -export const validateGraphResource = validate155; -const schema120 = { +export const validateGraphRepairWindow = validate168; +const schema136 = { + $id: "urn:dander:control:contracts:v1:graph-repair-window", + $schema: "https://json-schema.org/draft/2020-12/schema", + additionalProperties: false, + description: "UTC calendar dates: start is inclusive and end is exclusive.", + properties: { + end_date: { format: "date", title: "End Date", type: "string" }, + start_date: { format: "date", title: "Start Date", type: "string" }, + }, + required: ["start_date", "end_date"], + title: "GraphRepairWindow", + type: "object", +}; + +function validate168( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + /*# sourceURL="urn:dander:control:contracts:v1:graph-repair-window" */ let vErrors = null; + let errors = 0; + const evaluated0 = validate168.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.start_date === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "start_date" }, + message: "must have required property '" + "start_date" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + if (data.end_date === undefined) { + const err1 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "end_date" }, + message: "must have required property '" + "end_date" + "'", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + for (const key0 in data) { + if (!(key0 === "end_date" || key0 === "start_date")) { + const err2 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + } + if (data.end_date !== undefined) { + if (!(typeof data.end_date === "string")) { + const err3 = { + instancePath: instancePath + "/end_date", + schemaPath: "#/properties/end_date/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + } + if (data.start_date !== undefined) { + if (!(typeof data.start_date === "string")) { + const err4 = { + instancePath: instancePath + "/start_date", + schemaPath: "#/properties/start_date/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + } + } else { + const err5 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + validate168.errors = vErrors; + return errors === 0; +} +validate168.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +export const validateGraphResource = validate169; +const schema137 = { $defs: { AcceptedValuesFieldTest: { additionalProperties: false, @@ -16583,7 +20418,7 @@ const schema120 = { title: "GraphResourceResponse", type: "object", }; -const schema121 = { +const schema138 = { additionalProperties: false, description: "Canonical graph transport whose construction reuses Dander semantic validation.", properties: { @@ -16596,7 +20431,7 @@ const schema121 = { title: "PipelineGraphDocument", type: "object", }; -const schema122 = { +const schema139 = { additionalProperties: false, properties: { from: { title: "From", type: "string" }, @@ -16609,7 +20444,7 @@ const schema122 = { title: "EdgeDocument", type: "object", }; -const schema123 = { +const schema140 = { additionalProperties: false, properties: { keys: { @@ -16625,7 +20460,7 @@ const schema123 = { title: "JoinDocument", type: "object", }; -const schema124 = { +const schema141 = { additionalProperties: false, properties: { left: { title: "Left", type: "string" }, @@ -16635,16 +20470,16 @@ const schema124 = { title: "JoinKeyPairDocument", type: "object", }; -const schema125 = { additionalProperties: { $ref: "#/$defs/JsonValue" }, type: "object" }; -const schema126 = {}; +const schema142 = { additionalProperties: { $ref: "#/$defs/JsonValue" }, type: "object" }; +const schema143 = {}; -function validate159( +function validate173( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate159.evaluated; + const evaluated0 = validate173.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -16667,18 +20502,18 @@ function validate159( } errors++; } - validate159.errors = vErrors; + validate173.errors = vErrors; return errors === 0; } -validate159.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate173.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate158( +function validate172( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate158.evaluated; + const evaluated0 = validate172.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -16870,7 +20705,7 @@ function validate158( } if (data.metadata !== undefined) { if ( - !validate159(data.metadata, { + !validate173(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -16878,7 +20713,7 @@ function validate158( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } @@ -16904,7 +20739,7 @@ function validate158( instancePath: instancePath + "/type", schemaPath: "#/properties/type/enum", keyword: "enum", - params: { allowedValues: schema123.properties.type.enum }, + params: { allowedValues: schema140.properties.type.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -16930,12 +20765,12 @@ function validate158( } errors++; } - validate158.errors = vErrors; + validate172.errors = vErrors; return errors === 0; } -validate158.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate172.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema127 = { +const schema144 = { additionalProperties: false, properties: { metadata: { $ref: "#/$defs/JsonObject" }, @@ -16950,7 +20785,7 @@ const schema127 = { title: "FieldMappingDocument", type: "object", }; -const schema128 = { +const schema145 = { anyOf: [ { $ref: "#/$defs/DirectTransformation" }, { $ref: "#/$defs/ExpressionTransformation" }, @@ -16958,7 +20793,7 @@ const schema128 = { { $ref: "#/$defs/CustomCodeTransformation" }, ], }; -const schema129 = { +const schema146 = { additionalProperties: false, properties: { arguments: { $ref: "#/$defs/EmptyObject" }, @@ -16972,7 +20807,7 @@ const schema129 = { title: "DirectTransformation", type: "object", }; -const schema130 = { +const schema147 = { additionalProperties: false, description: "A JSON object that must contain no properties.", properties: {}, @@ -16980,13 +20815,13 @@ const schema130 = { type: "object", }; -function validate165( +function validate179( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate165.evaluated; + const evaluated0 = validate179.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -17176,7 +21011,7 @@ function validate165( } if (data.metadata !== undefined) { if ( - !validate159(data.metadata, { + !validate173(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -17184,7 +21019,7 @@ function validate165( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } @@ -17203,12 +21038,12 @@ function validate165( } errors++; } - validate165.errors = vErrors; + validate179.errors = vErrors; return errors === 0; } -validate165.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate179.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema131 = { +const schema148 = { additionalProperties: false, properties: { arguments: { $ref: "#/$defs/EmptyObject" }, @@ -17224,13 +21059,13 @@ const schema131 = { type: "object", }; -function validate168( +function validate182( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate168.evaluated; + const evaluated0 = validate182.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -17347,7 +21182,7 @@ function validate168( if (data.expression !== undefined) { let data2 = data.expression; if (typeof data2 === "string") { - if (func2(data2) < 1) { + if (func3(data2) < 1) { const err6 = { instancePath: instancePath + "/expression", schemaPath: "#/properties/expression/minLength", @@ -17467,7 +21302,7 @@ function validate168( } if (data.metadata !== undefined) { if ( - !validate159(data.metadata, { + !validate173(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -17475,7 +21310,7 @@ function validate168( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } @@ -17494,12 +21329,12 @@ function validate168( } errors++; } - validate168.errors = vErrors; + validate182.errors = vErrors; return errors === 0; } -validate168.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate182.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema133 = { +const schema150 = { additionalProperties: false, properties: { arguments: { $ref: "#/$defs/EmptyObject" }, @@ -17515,13 +21350,13 @@ const schema133 = { type: "object", }; -function validate171( +function validate185( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate171.evaluated; + const evaluated0 = validate185.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -17724,7 +21559,7 @@ function validate171( } if (data.metadata !== undefined) { if ( - !validate159(data.metadata, { + !validate173(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -17732,7 +21567,7 @@ function validate171( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } @@ -17751,12 +21586,12 @@ function validate171( } errors++; } - validate171.errors = vErrors; + validate185.errors = vErrors; return errors === 0; } -validate171.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate185.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema136 = { +const schema153 = { additionalProperties: false, properties: { arguments: { $ref: "#/$defs/JsonObject" }, @@ -17776,13 +21611,13 @@ const schema136 = { type: "object", }; -function validate174( +function validate188( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate174.evaluated; + const evaluated0 = validate188.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -17847,7 +21682,7 @@ function validate174( } if (data.arguments !== undefined) { if ( - !validate159(data.arguments, { + !validate173(data.arguments, { instancePath: instancePath + "/arguments", parentData: data, parentDataProperty: "arguments", @@ -17855,7 +21690,7 @@ function validate174( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } @@ -17896,7 +21731,7 @@ function validate174( if (data.function !== undefined) { let data3 = data.function; if (typeof data3 === "string") { - if (!pattern7.test(data3)) { + if (!pattern9.test(data3)) { const err5 = { instancePath: instancePath + "/function", schemaPath: "#/properties/function/pattern", @@ -18000,7 +21835,7 @@ function validate174( } if (data.metadata !== undefined) { if ( - !validate159(data.metadata, { + !validate173(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -18008,7 +21843,7 @@ function validate174( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } @@ -18027,18 +21862,18 @@ function validate174( } errors++; } - validate174.errors = vErrors; + validate188.errors = vErrors; return errors === 0; } -validate174.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate188.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate164( +function validate178( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate164.evaluated; + const evaluated0 = validate178.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -18049,9 +21884,9 @@ function validate164( let valid0 = false; const _errs1 = errors; if ( - !validate165(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate179(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate165.errors : vErrors.concat(validate165.errors); + vErrors = vErrors === null ? validate179.errors : vErrors.concat(validate179.errors); errors = vErrors.length; } var _valid0 = _errs1 === errors; @@ -18061,9 +21896,9 @@ function validate164( } const _errs2 = errors; if ( - !validate168(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate182(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate168.errors : vErrors.concat(validate168.errors); + vErrors = vErrors === null ? validate182.errors : vErrors.concat(validate182.errors); errors = vErrors.length; } var _valid0 = _errs2 === errors; @@ -18075,9 +21910,9 @@ function validate164( } const _errs3 = errors; if ( - !validate171(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate185(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate171.errors : vErrors.concat(validate171.errors); + vErrors = vErrors === null ? validate185.errors : vErrors.concat(validate185.errors); errors = vErrors.length; } var _valid0 = _errs3 === errors; @@ -18089,9 +21924,9 @@ function validate164( } const _errs4 = errors; if ( - !validate174(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate188(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate174.errors : vErrors.concat(validate174.errors); + vErrors = vErrors === null ? validate188.errors : vErrors.concat(validate188.errors); errors = vErrors.length; } var _valid0 = _errs4 === errors; @@ -18125,19 +21960,19 @@ function validate164( } } } - validate164.errors = vErrors; + validate178.errors = vErrors; evaluated0.props = props0; return errors === 0; } -validate164.evaluated = { dynamicProps: true, dynamicItems: false }; +validate178.evaluated = { dynamicProps: true, dynamicItems: false }; -function validate162( +function validate176( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate162.evaluated; + const evaluated0 = validate176.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -18184,7 +22019,7 @@ function validate162( } if (data.metadata !== undefined) { if ( - !validate159(data.metadata, { + !validate173(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -18192,7 +22027,7 @@ function validate162( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } @@ -18284,7 +22119,7 @@ function validate162( let valid2 = false; const _errs13 = errors; if ( - !validate164(data3, { + !validate178(data3, { instancePath: instancePath + "/transformation", parentData: data, parentDataProperty: "transformation", @@ -18292,7 +22127,7 @@ function validate162( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate164.errors : vErrors.concat(validate164.errors); + vErrors = vErrors === null ? validate178.errors : vErrors.concat(validate178.errors); errors = vErrors.length; } var _valid1 = _errs13 === errors; @@ -18355,18 +22190,18 @@ function validate162( } errors++; } - validate162.errors = vErrors; + validate176.errors = vErrors; return errors === 0; } -validate162.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate176.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate157( +function validate171( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate157.evaluated; + const evaluated0 = validate171.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -18450,7 +22285,7 @@ function validate157( let valid1 = false; const _errs6 = errors; if ( - !validate158(data1, { + !validate172(data1, { instancePath: instancePath + "/join", parentData: data, parentDataProperty: "join", @@ -18458,7 +22293,7 @@ function validate157( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate158.errors : vErrors.concat(validate158.errors); + vErrors = vErrors === null ? validate172.errors : vErrors.concat(validate172.errors); errors = vErrors.length; } var _valid0 = _errs6 === errors; @@ -18512,7 +22347,7 @@ function validate157( const len0 = data2.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate162(data2[i0], { + !validate176(data2[i0], { instancePath: instancePath + "/mappings/" + i0, parentData: data2, parentDataProperty: i0, @@ -18520,7 +22355,7 @@ function validate157( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate162.errors : vErrors.concat(validate162.errors); + vErrors = vErrors === null ? validate176.errors : vErrors.concat(validate176.errors); errors = vErrors.length; } } @@ -18542,7 +22377,7 @@ function validate157( } if (data.metadata !== undefined) { if ( - !validate159(data.metadata, { + !validate173(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -18550,7 +22385,7 @@ function validate157( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } @@ -18586,12 +22421,12 @@ function validate157( } errors++; } - validate157.errors = vErrors; + validate171.errors = vErrors; return errors === 0; } -validate157.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate171.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema137 = { +const schema154 = { anyOf: [ { $ref: "#/$defs/SourceNodeDocument" }, { $ref: "#/$defs/TransformNodeDocument" }, @@ -18599,7 +22434,7 @@ const schema137 = { { $ref: "#/$defs/ExtensionNodeDocument" }, ], }; -const schema138 = { +const schema155 = { additionalProperties: false, not: { required: ["config", "params"] }, properties: { @@ -18625,7 +22460,7 @@ const schema138 = { title: "SourceNodeDocument", type: "object", }; -const schema139 = { +const schema156 = { additionalProperties: { $ref: "#/$defs/JsonValue" }, properties: { connector: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Connector" }, @@ -18635,7 +22470,7 @@ const schema139 = { title: "SourceNodeConfigDocument", type: "object", }; -const schema141 = { +const schema158 = { additionalProperties: false, properties: { body: { @@ -18654,7 +22489,7 @@ const schema141 = { title: "RequestSpecDocument", type: "object", }; -const schema142 = { +const schema159 = { description: "The closed set of HTTP methods a `RequestSpec` may declare.\n\nA `StrEnum` (matching the `TransformationKind`/`JoinType` convention in `graph.py`) so callers\nget a named, importable type that still serializes to/from its plain string value stably in\nYAML and JSON. An out-of-set value fails validation with a clear error at the Pydantic\nboundary. `HEAD`/`OPTIONS` are intentionally omitted (no source currently needs them); extend\nby adding a member later without touching callers.\n\nAttributes:\n GET: Retrieve a resource. The default method (a simple GET needs no explicit spec).\n POST: Create a resource / submit a query body.\n PUT: Replace a resource.\n PATCH: Partially update a resource.\n DELETE: Remove a resource.", enum: ["GET", "POST", "PUT", "PATCH", "DELETE"], @@ -18662,13 +22497,13 @@ const schema142 = { type: "string", }; -function validate185( +function validate199( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate185.evaluated; + const evaluated0 = validate199.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -18704,7 +22539,7 @@ function validate185( let valid1 = false; const _errs4 = errors; if ( - !validate159(data0, { + !validate173(data0, { instancePath: instancePath + "/body", parentData: data, parentDataProperty: "body", @@ -18712,7 +22547,7 @@ function validate185( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } var _valid0 = _errs4 === errors; @@ -18843,7 +22678,7 @@ function validate185( instancePath: instancePath + "/method", schemaPath: "#/$defs/HttpMethod/enum", keyword: "enum", - params: { allowedValues: schema142.enum }, + params: { allowedValues: schema159.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -18906,18 +22741,18 @@ function validate185( } errors++; } - validate185.errors = vErrors; + validate199.errors = vErrors; return errors === 0; } -validate185.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate199.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate184( +function validate198( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate184.evaluated; + const evaluated0 = validate198.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -19061,7 +22896,7 @@ function validate184( let valid5 = false; const _errs17 = errors; if ( - !validate185(data3, { + !validate199(data3, { instancePath: instancePath + "/request", parentData: data, parentDataProperty: "request", @@ -19069,7 +22904,7 @@ function validate184( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate185.errors : vErrors.concat(validate185.errors); + vErrors = vErrors === null ? validate199.errors : vErrors.concat(validate199.errors); errors = vErrors.length; } var _valid2 = _errs17 === errors; @@ -19132,12 +22967,12 @@ function validate184( } errors++; } - validate184.errors = vErrors; + validate198.errors = vErrors; return errors === 0; } -validate184.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate198.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema143 = { +const schema160 = { additionalProperties: false, properties: { field: { minLength: 1, title: "Field", type: "string" }, @@ -19150,13 +22985,13 @@ const schema143 = { type: "object", }; -function validate189( +function validate203( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate189.evaluated; + const evaluated0 = validate203.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -19214,7 +23049,7 @@ function validate189( if (data.field !== undefined) { let data0 = data.field; if (typeof data0 === "string") { - if (func2(data0) < 1) { + if (func3(data0) < 1) { const err3 = { instancePath: instancePath + "/field", schemaPath: "#/properties/field/minLength", @@ -19267,7 +23102,7 @@ function validate189( instancePath: instancePath + "/kind", schemaPath: "#/properties/kind/enum", keyword: "enum", - params: { allowedValues: schema143.properties.kind.enum }, + params: { allowedValues: schema160.properties.kind.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -19280,7 +23115,7 @@ function validate189( } if (data.metadata !== undefined) { if ( - !validate159(data.metadata, { + !validate173(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -19288,13 +23123,13 @@ function validate189( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } if (data.params !== undefined) { if ( - !validate159(data.params, { + !validate173(data.params, { instancePath: instancePath + "/params", parentData: data, parentDataProperty: "params", @@ -19302,7 +23137,7 @@ function validate189( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } @@ -19321,12 +23156,12 @@ function validate189( } errors++; } - validate189.errors = vErrors; + validate203.errors = vErrors; return errors === 0; } -validate189.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate203.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema144 = { +const schema161 = { additionalProperties: false, properties: { cast_to: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Cast To" }, @@ -19350,7 +23185,7 @@ const schema144 = { title: "NodeFieldDocument", type: "object", }; -const schema145 = { +const schema162 = { additionalProperties: false, description: "One deterministic provider-specific schema annotation, never a credential.", properties: { @@ -19365,7 +23200,7 @@ const schema145 = { title: "ProviderExtension", type: "object", }; -const schema146 = { +const schema163 = { anyOf: [ { $ref: "#/$defs/NotNullFieldTest" }, { $ref: "#/$defs/UniqueFieldTest" }, @@ -19373,7 +23208,7 @@ const schema146 = { { $ref: "#/$defs/RelationshipsFieldTest" }, ], }; -const schema147 = { +const schema164 = { additionalProperties: false, properties: { field: { default: null, title: "Field", type: "null" }, @@ -19387,13 +23222,13 @@ const schema147 = { type: "object", }; -function validate196( +function validate210( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate196.evaluated; + const evaluated0 = validate210.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -19491,7 +23326,7 @@ function validate196( } if (data.metadata !== undefined) { if ( - !validate159(data.metadata, { + !validate173(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -19499,7 +23334,7 @@ function validate196( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } @@ -19569,12 +23404,12 @@ function validate196( } errors++; } - validate196.errors = vErrors; + validate210.errors = vErrors; return errors === 0; } -validate196.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate210.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema149 = { +const schema166 = { additionalProperties: false, properties: { field: { default: null, title: "Field", type: "null" }, @@ -19588,13 +23423,13 @@ const schema149 = { type: "object", }; -function validate199( +function validate213( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate199.evaluated; + const evaluated0 = validate213.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -19692,7 +23527,7 @@ function validate199( } if (data.metadata !== undefined) { if ( - !validate159(data.metadata, { + !validate173(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -19700,7 +23535,7 @@ function validate199( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } @@ -19770,12 +23605,12 @@ function validate199( } errors++; } - validate199.errors = vErrors; + validate213.errors = vErrors; return errors === 0; } -validate199.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate213.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema151 = { +const schema168 = { additionalProperties: false, properties: { field: { default: null, title: "Field", type: "null" }, @@ -19789,13 +23624,13 @@ const schema151 = { type: "object", }; -function validate202( +function validate216( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate202.evaluated; + const evaluated0 = validate216.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -19908,7 +23743,7 @@ function validate202( } if (data.metadata !== undefined) { if ( - !validate159(data.metadata, { + !validate173(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -19916,7 +23751,7 @@ function validate202( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } @@ -19986,12 +23821,12 @@ function validate202( } errors++; } - validate202.errors = vErrors; + validate216.errors = vErrors; return errors === 0; } -validate202.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate216.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema153 = { +const schema170 = { additionalProperties: false, properties: { field: { minLength: 1, title: "Field", type: "string" }, @@ -20005,13 +23840,13 @@ const schema153 = { type: "object", }; -function validate205( +function validate219( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate205.evaluated; + const evaluated0 = validate219.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -20090,7 +23925,7 @@ function validate205( if (data.field !== undefined) { let data0 = data.field; if (typeof data0 === "string") { - if (func2(data0) < 1) { + if (func3(data0) < 1) { const err4 = { instancePath: instancePath + "/field", schemaPath: "#/properties/field/minLength", @@ -20156,7 +23991,7 @@ function validate205( } if (data.metadata !== undefined) { if ( - !validate159(data.metadata, { + !validate173(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -20164,14 +23999,14 @@ function validate205( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } if (data.to !== undefined) { let data3 = data.to; if (typeof data3 === "string") { - if (func2(data3) < 1) { + if (func3(data3) < 1) { const err8 = { instancePath: instancePath + "/to", schemaPath: "#/properties/to/minLength", @@ -20251,18 +24086,18 @@ function validate205( } errors++; } - validate205.errors = vErrors; + validate219.errors = vErrors; return errors === 0; } -validate205.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate219.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate195( +function validate209( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate195.evaluated; + const evaluated0 = validate209.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -20273,9 +24108,9 @@ function validate195( let valid0 = false; const _errs1 = errors; if ( - !validate196(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate210(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate196.errors : vErrors.concat(validate196.errors); + vErrors = vErrors === null ? validate210.errors : vErrors.concat(validate210.errors); errors = vErrors.length; } var _valid0 = _errs1 === errors; @@ -20285,9 +24120,9 @@ function validate195( } const _errs2 = errors; if ( - !validate199(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate213(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate199.errors : vErrors.concat(validate199.errors); + vErrors = vErrors === null ? validate213.errors : vErrors.concat(validate213.errors); errors = vErrors.length; } var _valid0 = _errs2 === errors; @@ -20299,9 +24134,9 @@ function validate195( } const _errs3 = errors; if ( - !validate202(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate216(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate202.errors : vErrors.concat(validate202.errors); + vErrors = vErrors === null ? validate216.errors : vErrors.concat(validate216.errors); errors = vErrors.length; } var _valid0 = _errs3 === errors; @@ -20313,9 +24148,9 @@ function validate195( } const _errs4 = errors; if ( - !validate205(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate219(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate205.errors : vErrors.concat(validate205.errors); + vErrors = vErrors === null ? validate219.errors : vErrors.concat(validate219.errors); errors = vErrors.length; } var _valid0 = _errs4 === errors; @@ -20349,19 +24184,19 @@ function validate195( } } } - validate195.errors = vErrors; + validate209.errors = vErrors; evaluated0.props = props0; return errors === 0; } -validate195.evaluated = { dynamicProps: true, dynamicItems: false }; +validate209.evaluated = { dynamicProps: true, dynamicItems: false }; -function validate193( +function validate207( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate193.evaluated; + const evaluated0 = validate207.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -20793,7 +24628,7 @@ function validate193( } if (data.metadata !== undefined) { if ( - !validate159(data.metadata, { + !validate173(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -20801,7 +24636,7 @@ function validate193( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } @@ -20845,7 +24680,7 @@ function validate193( const len1 = data10.length; for (let i1 = 0; i1 < len1; i1++) { if ( - !validate195(data10[i1], { + !validate209(data10[i1], { instancePath: instancePath + "/tests/" + i1, parentData: data10, parentDataProperty: i1, @@ -20853,7 +24688,7 @@ function validate193( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate195.errors : vErrors.concat(validate195.errors); + vErrors = vErrors === null ? validate209.errors : vErrors.concat(validate209.errors); errors = vErrors.length; } } @@ -20905,19 +24740,19 @@ function validate193( } errors++; } - validate193.errors = vErrors; + validate207.errors = vErrors; return errors === 0; } -validate193.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate207.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema155 = { +const schema172 = { anyOf: [ { $ref: "#/$defs/ScheduleTrigger" }, { $ref: "#/$defs/DependencyTrigger" }, { $ref: "#/$defs/ManualTrigger" }, ], }; -const schema156 = { +const schema173 = { additionalProperties: false, properties: { cron: { minLength: 1, title: "Cron", type: "string" }, @@ -20931,13 +24766,13 @@ const schema156 = { type: "object", }; -function validate212( +function validate226( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate212.evaluated; + const evaluated0 = validate226.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -21001,7 +24836,7 @@ function validate212( if (data.cron !== undefined) { let data0 = data.cron; if (typeof data0 === "string") { - if (func2(data0) < 1) { + if (func3(data0) < 1) { const err3 = { instancePath: instancePath + "/cron", schemaPath: "#/properties/cron/minLength", @@ -21136,7 +24971,7 @@ function validate212( } if (data.metadata !== undefined) { if ( - !validate159(data.metadata, { + !validate173(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -21144,7 +24979,7 @@ function validate212( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } @@ -21163,12 +24998,12 @@ function validate212( } errors++; } - validate212.errors = vErrors; + validate226.errors = vErrors; return errors === 0; } -validate212.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate226.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema157 = { +const schema174 = { additionalProperties: false, properties: { cron: { default: null, title: "Cron", type: "null" }, @@ -21182,13 +25017,13 @@ const schema157 = { type: "object", }; -function validate215( +function validate229( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate215.evaluated; + const evaluated0 = validate229.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -21370,7 +25205,7 @@ function validate215( } if (data.metadata !== undefined) { if ( - !validate159(data.metadata, { + !validate173(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -21378,7 +25213,7 @@ function validate215( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } @@ -21397,12 +25232,12 @@ function validate215( } errors++; } - validate215.errors = vErrors; + validate229.errors = vErrors; return errors === 0; } -validate215.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate229.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema158 = { +const schema175 = { additionalProperties: false, properties: { cron: { default: null, title: "Cron", type: "null" }, @@ -21416,13 +25251,13 @@ const schema158 = { type: "object", }; -function validate218( +function validate232( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate218.evaluated; + const evaluated0 = validate232.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -21637,7 +25472,7 @@ function validate218( } if (data.metadata !== undefined) { if ( - !validate159(data.metadata, { + !validate173(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -21645,7 +25480,7 @@ function validate218( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } @@ -21664,18 +25499,18 @@ function validate218( } errors++; } - validate218.errors = vErrors; + validate232.errors = vErrors; return errors === 0; } -validate218.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate232.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate211( +function validate225( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate211.evaluated; + const evaluated0 = validate225.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -21686,9 +25521,9 @@ function validate211( let valid0 = false; const _errs1 = errors; if ( - !validate212(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate226(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate212.errors : vErrors.concat(validate212.errors); + vErrors = vErrors === null ? validate226.errors : vErrors.concat(validate226.errors); errors = vErrors.length; } var _valid0 = _errs1 === errors; @@ -21698,9 +25533,9 @@ function validate211( } const _errs2 = errors; if ( - !validate215(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate229(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate215.errors : vErrors.concat(validate215.errors); + vErrors = vErrors === null ? validate229.errors : vErrors.concat(validate229.errors); errors = vErrors.length; } var _valid0 = _errs2 === errors; @@ -21712,9 +25547,9 @@ function validate211( } const _errs3 = errors; if ( - !validate218(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate232(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate218.errors : vErrors.concat(validate218.errors); + vErrors = vErrors === null ? validate232.errors : vErrors.concat(validate232.errors); errors = vErrors.length; } var _valid0 = _errs3 === errors; @@ -21748,13 +25583,13 @@ function validate211( } } } - validate211.errors = vErrors; + validate225.errors = vErrors; evaluated0.props = props0; return errors === 0; } -validate211.evaluated = { dynamicProps: true, dynamicItems: false }; +validate225.evaluated = { dynamicProps: true, dynamicItems: false }; -const schema159 = { +const schema176 = { additionalProperties: false, properties: { color: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Color" }, @@ -21764,7 +25599,7 @@ const schema159 = { title: "NodeVisualDocument", type: "object", }; -const schema160 = { +const schema177 = { additionalProperties: false, properties: { x: { title: "X", type: "number" }, y: { title: "Y", type: "number" } }, required: ["x", "y"], @@ -21772,13 +25607,13 @@ const schema160 = { type: "object", }; -function validate222( +function validate236( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate222.evaluated; + const evaluated0 = validate236.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -22097,18 +25932,18 @@ function validate222( } errors++; } - validate222.errors = vErrors; + validate236.errors = vErrors; return errors === 0; } -validate222.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate236.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate183( +function validate197( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate183.evaluated; + const evaluated0 = validate197.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -22204,7 +26039,7 @@ function validate183( errors++; } for (const key0 in data) { - if (!func1.call(schema138.properties, key0)) { + if (!func1.call(schema155.properties, key0)) { const err5 = { instancePath, schemaPath: "#/additionalProperties", @@ -22222,7 +26057,7 @@ function validate183( } if (data.config !== undefined) { if ( - !validate184(data.config, { + !validate198(data.config, { instancePath: instancePath + "/config", parentData: data, parentDataProperty: "config", @@ -22230,7 +26065,7 @@ function validate183( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate184.errors : vErrors.concat(validate184.errors); + vErrors = vErrors === null ? validate198.errors : vErrors.concat(validate198.errors); errors = vErrors.length; } } @@ -22240,7 +26075,7 @@ function validate183( let valid2 = false; const _errs7 = errors; if ( - !validate189(data1, { + !validate203(data1, { instancePath: instancePath + "/cursor", parentData: data, parentDataProperty: "cursor", @@ -22248,7 +26083,7 @@ function validate183( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate189.errors : vErrors.concat(validate189.errors); + vErrors = vErrors === null ? validate203.errors : vErrors.concat(validate203.errors); errors = vErrors.length; } var _valid0 = _errs7 === errors; @@ -22302,7 +26137,7 @@ function validate183( const len0 = data2.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate193(data2[i0], { + !validate207(data2[i0], { instancePath: instancePath + "/fields/" + i0, parentData: data2, parentDataProperty: i0, @@ -22310,7 +26145,7 @@ function validate183( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate193.errors : vErrors.concat(validate193.errors); + vErrors = vErrors === null ? validate207.errors : vErrors.concat(validate207.errors); errors = vErrors.length; } } @@ -22370,7 +26205,7 @@ function validate183( let valid5 = false; const _errs19 = errors; if ( - !validate184(data6, { + !validate198(data6, { instancePath: instancePath + "/params", parentData: data, parentDataProperty: "params", @@ -22378,7 +26213,7 @@ function validate183( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate184.errors : vErrors.concat(validate184.errors); + vErrors = vErrors === null ? validate198.errors : vErrors.concat(validate198.errors); errors = vErrors.length; } var _valid1 = _errs19 === errors; @@ -22432,7 +26267,7 @@ function validate183( let valid6 = false; const _errs25 = errors; if ( - !validate211(data7, { + !validate225(data7, { instancePath: instancePath + "/trigger", parentData: data, parentDataProperty: "trigger", @@ -22440,7 +26275,7 @@ function validate183( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate211.errors : vErrors.concat(validate211.errors); + vErrors = vErrors === null ? validate225.errors : vErrors.concat(validate225.errors); errors = vErrors.length; } var _valid2 = _errs25 === errors; @@ -22527,7 +26362,7 @@ function validate183( let valid7 = false; const _errs32 = errors; if ( - !validate222(data9, { + !validate236(data9, { instancePath: instancePath + "/visual", parentData: data, parentDataProperty: "visual", @@ -22535,7 +26370,7 @@ function validate183( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate222.errors : vErrors.concat(validate222.errors); + vErrors = vErrors === null ? validate236.errors : vErrors.concat(validate236.errors); errors = vErrors.length; } var _valid3 = _errs32 === errors; @@ -22598,12 +26433,12 @@ function validate183( } errors++; } - validate183.errors = vErrors; + validate197.errors = vErrors; return errors === 0; } -validate183.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate197.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema161 = { +const schema178 = { additionalProperties: false, not: { required: ["config", "params"] }, properties: { @@ -22629,7 +26464,7 @@ const schema161 = { title: "TransformNodeDocument", type: "object", }; -const schema162 = { +const schema179 = { additionalProperties: { $ref: "#/$defs/JsonValue" }, properties: { join: { anyOf: [{ $ref: "#/$defs/TransformJoinDocument" }, { type: "null" }], default: null }, @@ -22642,7 +26477,7 @@ const schema162 = { title: "TransformNodeConfigDocument", type: "object", }; -const schema164 = { +const schema181 = { additionalProperties: false, properties: { keys: { @@ -22659,7 +26494,7 @@ const schema164 = { title: "TransformJoinDocument", type: "object", }; -const schema165 = { +const schema182 = { additionalProperties: false, properties: { left: { minLength: 1, title: "Left", type: "string" }, @@ -22669,20 +26504,20 @@ const schema165 = { title: "ExecutableJoinKeyDocument", type: "object", }; -const schema166 = { +const schema183 = { description: "BigQuery join kinds supported by an executable transform node.", enum: ["inner", "left", "right", "full"], title: "ExecutableJoinType", type: "string", }; -function validate227( +function validate241( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate227.evaluated; + const evaluated0 = validate241.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -22844,7 +26679,7 @@ function validate227( if (data1.left !== undefined) { let data2 = data1.left; if (typeof data2 === "string") { - if (func2(data2) < 1) { + if (func3(data2) < 1) { const err9 = { instancePath: instancePath + "/keys/" + i0 + "/left", schemaPath: "#/$defs/ExecutableJoinKeyDocument/properties/left/minLength", @@ -22878,7 +26713,7 @@ function validate227( if (data1.right !== undefined) { let data3 = data1.right; if (typeof data3 === "string") { - if (func2(data3) < 1) { + if (func3(data3) < 1) { const err11 = { instancePath: instancePath + "/keys/" + i0 + "/right", schemaPath: "#/$defs/ExecutableJoinKeyDocument/properties/right/minLength", @@ -22944,7 +26779,7 @@ function validate227( if (data.left_input !== undefined) { let data4 = data.left_input; if (typeof data4 === "string") { - if (func2(data4) < 1) { + if (func3(data4) < 1) { const err15 = { instancePath: instancePath + "/left_input", schemaPath: "#/properties/left_input/minLength", @@ -22978,7 +26813,7 @@ function validate227( if (data.right_input !== undefined) { let data5 = data.right_input; if (typeof data5 === "string") { - if (func2(data5) < 1) { + if (func3(data5) < 1) { const err17 = { instancePath: instancePath + "/right_input", schemaPath: "#/properties/right_input/minLength", @@ -23031,7 +26866,7 @@ function validate227( instancePath: instancePath + "/type", schemaPath: "#/$defs/ExecutableJoinType/enum", keyword: "enum", - params: { allowedValues: schema166.enum }, + params: { allowedValues: schema183.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -23057,12 +26892,12 @@ function validate227( } errors++; } - validate227.errors = vErrors; + validate241.errors = vErrors; return errors === 0; } -validate227.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate241.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema167 = { +const schema184 = { anyOf: [ { $ref: "#/$defs/TruncateStringOperation" }, { $ref: "#/$defs/TrimWhitespaceOperation" }, @@ -23070,7 +26905,7 @@ const schema167 = { { $ref: "#/$defs/FilterRowsOperation" }, ], }; -const schema168 = { +const schema185 = { additionalProperties: false, properties: { kind: { const: "truncate_string", title: "Kind", type: "string" }, @@ -23081,7 +26916,7 @@ const schema168 = { title: "TruncateStringOperation", type: "object", }; -const schema169 = { +const schema186 = { additionalProperties: false, properties: { field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" }, @@ -23092,13 +26927,13 @@ const schema169 = { type: "object", }; -function validate230( +function validate244( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate230.evaluated; + const evaluated0 = validate244.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -23188,7 +27023,7 @@ function validate230( } if (data.metadata !== undefined) { if ( - !validate159(data.metadata, { + !validate173(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -23196,7 +27031,7 @@ function validate230( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } @@ -23253,7 +27088,7 @@ function validate230( if (data2.field !== undefined) { let data3 = data2.field; if (typeof data3 === "string") { - if (!pattern8.test(data3)) { + if (!pattern10.test(data3)) { const err8 = { instancePath: instancePath + "/params/field", schemaPath: "#/$defs/TruncateStringParamsDocument/properties/field/pattern", @@ -23350,12 +27185,12 @@ function validate230( } errors++; } - validate230.errors = vErrors; + validate244.errors = vErrors; return errors === 0; } -validate230.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate244.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema170 = { +const schema187 = { additionalProperties: false, properties: { kind: { const: "trim_whitespace", title: "Kind", type: "string" }, @@ -23366,7 +27201,7 @@ const schema170 = { title: "TrimWhitespaceOperation", type: "object", }; -const schema171 = { +const schema188 = { additionalProperties: false, properties: { field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" } }, required: ["field"], @@ -23374,13 +27209,13 @@ const schema171 = { type: "object", }; -function validate233( +function validate247( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate233.evaluated; + const evaluated0 = validate247.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -23470,7 +27305,7 @@ function validate233( } if (data.metadata !== undefined) { if ( - !validate159(data.metadata, { + !validate173(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -23478,7 +27313,7 @@ function validate233( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } @@ -23520,7 +27355,7 @@ function validate233( if (data2.field !== undefined) { let data3 = data2.field; if (typeof data3 === "string") { - if (!pattern8.test(data3)) { + if (!pattern10.test(data3)) { const err7 = { instancePath: instancePath + "/params/field", schemaPath: "#/$defs/TrimWhitespaceParamsDocument/properties/field/pattern", @@ -23582,12 +27417,12 @@ function validate233( } errors++; } - validate233.errors = vErrors; + validate247.errors = vErrors; return errors === 0; } -validate233.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate247.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema172 = { +const schema189 = { additionalProperties: false, properties: { kind: { const: "default_value", title: "Kind", type: "string" }, @@ -23598,7 +27433,7 @@ const schema172 = { title: "DefaultValueOperation", type: "object", }; -const schema173 = { +const schema190 = { additionalProperties: false, properties: { default: { @@ -23612,13 +27447,13 @@ const schema173 = { type: "object", }; -function validate236( +function validate250( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate236.evaluated; + const evaluated0 = validate250.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -23708,7 +27543,7 @@ function validate236( } if (data.metadata !== undefined) { if ( - !validate159(data.metadata, { + !validate173(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -23716,7 +27551,7 @@ function validate236( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } @@ -23874,7 +27709,7 @@ function validate236( if (data2.field !== undefined) { let data4 = data2.field; if (typeof data4 === "string") { - if (!pattern8.test(data4)) { + if (!pattern10.test(data4)) { const err13 = { instancePath: instancePath + "/params/field", schemaPath: "#/$defs/DefaultValueParamsDocument/properties/field/pattern", @@ -23936,12 +27771,12 @@ function validate236( } errors++; } - validate236.errors = vErrors; + validate250.errors = vErrors; return errors === 0; } -validate236.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate250.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema174 = { +const schema191 = { additionalProperties: false, properties: { kind: { const: "filter_rows", title: "Kind", type: "string" }, @@ -23952,7 +27787,7 @@ const schema174 = { title: "FilterRowsOperation", type: "object", }; -const schema175 = { +const schema192 = { additionalProperties: false, properties: { conditions: { @@ -23967,13 +27802,13 @@ const schema175 = { title: "FilterRowsParamsDocument", type: "object", }; -const schema178 = { +const schema195 = { description: "How a filter's flat condition list combines.", enum: ["all", "any"], title: "MatchLogic", type: "string", }; -const schema176 = { +const schema193 = { additionalProperties: false, properties: { field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" }, @@ -24005,20 +27840,20 @@ const schema176 = { title: "FieldConditionDocument", type: "object", }; -const schema177 = { +const schema194 = { description: "Closed comparison grammar for ``filter_rows``.", enum: ["eq", "ne", "gt", "gte", "lt", "lte", "in", "not_in", "is_null", "is_not_null"], title: "ComparisonOperator", type: "string", }; -function validate242( +function validate256( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate242.evaluated; + const evaluated0 = validate256.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -24076,7 +27911,7 @@ function validate242( if (data.field !== undefined) { let data0 = data.field; if (typeof data0 === "string") { - if (!pattern8.test(data0)) { + if (!pattern10.test(data0)) { const err3 = { instancePath: instancePath + "/field", schemaPath: "#/properties/field/pattern", @@ -24140,7 +27975,7 @@ function validate242( instancePath: instancePath + "/op", schemaPath: "#/$defs/ComparisonOperator/enum", keyword: "enum", - params: { allowedValues: schema177.enum }, + params: { allowedValues: schema194.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -24406,18 +28241,18 @@ function validate242( } errors++; } - validate242.errors = vErrors; + validate256.errors = vErrors; return errors === 0; } -validate242.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate256.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate241( +function validate255( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate241.evaluated; + const evaluated0 = validate255.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -24478,7 +28313,7 @@ function validate241( const len0 = data0.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate242(data0[i0], { + !validate256(data0[i0], { instancePath: instancePath + "/conditions/" + i0, parentData: data0, parentDataProperty: i0, @@ -24486,7 +28321,7 @@ function validate241( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate242.errors : vErrors.concat(validate242.errors); + vErrors = vErrors === null ? validate256.errors : vErrors.concat(validate256.errors); errors = vErrors.length; } } @@ -24528,7 +28363,7 @@ function validate241( instancePath: instancePath + "/logic", schemaPath: "#/$defs/MatchLogic/enum", keyword: "enum", - params: { allowedValues: schema178.enum }, + params: { allowedValues: schema195.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -24554,18 +28389,18 @@ function validate241( } errors++; } - validate241.errors = vErrors; + validate255.errors = vErrors; return errors === 0; } -validate241.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate255.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate239( +function validate253( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate239.evaluated; + const evaluated0 = validate253.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -24655,7 +28490,7 @@ function validate239( } if (data.metadata !== undefined) { if ( - !validate159(data.metadata, { + !validate173(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -24663,13 +28498,13 @@ function validate239( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } if (data.params !== undefined) { if ( - !validate241(data.params, { + !validate255(data.params, { instancePath: instancePath + "/params", parentData: data, parentDataProperty: "params", @@ -24677,7 +28512,7 @@ function validate239( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate241.errors : vErrors.concat(validate241.errors); + vErrors = vErrors === null ? validate255.errors : vErrors.concat(validate255.errors); errors = vErrors.length; } } @@ -24696,18 +28531,18 @@ function validate239( } errors++; } - validate239.errors = vErrors; + validate253.errors = vErrors; return errors === 0; } -validate239.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate253.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate229( +function validate243( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate229.evaluated; + const evaluated0 = validate243.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -24718,9 +28553,9 @@ function validate229( let valid0 = false; const _errs1 = errors; if ( - !validate230(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate244(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate230.errors : vErrors.concat(validate230.errors); + vErrors = vErrors === null ? validate244.errors : vErrors.concat(validate244.errors); errors = vErrors.length; } var _valid0 = _errs1 === errors; @@ -24730,9 +28565,9 @@ function validate229( } const _errs2 = errors; if ( - !validate233(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate247(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate233.errors : vErrors.concat(validate233.errors); + vErrors = vErrors === null ? validate247.errors : vErrors.concat(validate247.errors); errors = vErrors.length; } var _valid0 = _errs2 === errors; @@ -24744,9 +28579,9 @@ function validate229( } const _errs3 = errors; if ( - !validate236(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate250(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate236.errors : vErrors.concat(validate236.errors); + vErrors = vErrors === null ? validate250.errors : vErrors.concat(validate250.errors); errors = vErrors.length; } var _valid0 = _errs3 === errors; @@ -24758,9 +28593,9 @@ function validate229( } const _errs4 = errors; if ( - !validate239(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate253(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate239.errors : vErrors.concat(validate239.errors); + vErrors = vErrors === null ? validate253.errors : vErrors.concat(validate253.errors); errors = vErrors.length; } var _valid0 = _errs4 === errors; @@ -24794,19 +28629,19 @@ function validate229( } } } - validate229.errors = vErrors; + validate243.errors = vErrors; evaluated0.props = props0; return errors === 0; } -validate229.evaluated = { dynamicProps: true, dynamicItems: false }; +validate243.evaluated = { dynamicProps: true, dynamicItems: false }; -function validate226( +function validate240( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate226.evaluated; + const evaluated0 = validate240.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -24820,7 +28655,7 @@ function validate226( let valid3 = false; const _errs5 = errors; if ( - !validate227(data1, { + !validate241(data1, { instancePath: instancePath + "/join", parentData: data, parentDataProperty: "join", @@ -24828,7 +28663,7 @@ function validate226( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate227.errors : vErrors.concat(validate227.errors); + vErrors = vErrors === null ? validate241.errors : vErrors.concat(validate241.errors); errors = vErrors.length; } var _valid0 = _errs5 === errors; @@ -24882,7 +28717,7 @@ function validate226( const len0 = data2.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate229(data2[i0], { + !validate243(data2[i0], { instancePath: instancePath + "/operations/" + i0, parentData: data2, parentDataProperty: i0, @@ -24890,7 +28725,7 @@ function validate226( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate229.errors : vErrors.concat(validate229.errors); + vErrors = vErrors === null ? validate243.errors : vErrors.concat(validate243.errors); errors = vErrors.length; } } @@ -24925,18 +28760,18 @@ function validate226( } errors++; } - validate226.errors = vErrors; + validate240.errors = vErrors; return errors === 0; } -validate226.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate240.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate225( +function validate239( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate225.evaluated; + const evaluated0 = validate239.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -25032,7 +28867,7 @@ function validate225( errors++; } for (const key0 in data) { - if (!func1.call(schema161.properties, key0)) { + if (!func1.call(schema178.properties, key0)) { const err5 = { instancePath, schemaPath: "#/additionalProperties", @@ -25050,7 +28885,7 @@ function validate225( } if (data.config !== undefined) { if ( - !validate226(data.config, { + !validate240(data.config, { instancePath: instancePath + "/config", parentData: data, parentDataProperty: "config", @@ -25058,7 +28893,7 @@ function validate225( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate226.errors : vErrors.concat(validate226.errors); + vErrors = vErrors === null ? validate240.errors : vErrors.concat(validate240.errors); errors = vErrors.length; } } @@ -25068,7 +28903,7 @@ function validate225( let valid2 = false; const _errs7 = errors; if ( - !validate189(data1, { + !validate203(data1, { instancePath: instancePath + "/cursor", parentData: data, parentDataProperty: "cursor", @@ -25076,7 +28911,7 @@ function validate225( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate189.errors : vErrors.concat(validate189.errors); + vErrors = vErrors === null ? validate203.errors : vErrors.concat(validate203.errors); errors = vErrors.length; } var _valid0 = _errs7 === errors; @@ -25130,7 +28965,7 @@ function validate225( const len0 = data2.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate193(data2[i0], { + !validate207(data2[i0], { instancePath: instancePath + "/fields/" + i0, parentData: data2, parentDataProperty: i0, @@ -25138,7 +28973,7 @@ function validate225( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate193.errors : vErrors.concat(validate193.errors); + vErrors = vErrors === null ? validate207.errors : vErrors.concat(validate207.errors); errors = vErrors.length; } } @@ -25198,7 +29033,7 @@ function validate225( let valid5 = false; const _errs19 = errors; if ( - !validate226(data6, { + !validate240(data6, { instancePath: instancePath + "/params", parentData: data, parentDataProperty: "params", @@ -25206,7 +29041,7 @@ function validate225( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate226.errors : vErrors.concat(validate226.errors); + vErrors = vErrors === null ? validate240.errors : vErrors.concat(validate240.errors); errors = vErrors.length; } var _valid1 = _errs19 === errors; @@ -25260,7 +29095,7 @@ function validate225( let valid6 = false; const _errs25 = errors; if ( - !validate211(data7, { + !validate225(data7, { instancePath: instancePath + "/trigger", parentData: data, parentDataProperty: "trigger", @@ -25268,7 +29103,7 @@ function validate225( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate211.errors : vErrors.concat(validate211.errors); + vErrors = vErrors === null ? validate225.errors : vErrors.concat(validate225.errors); errors = vErrors.length; } var _valid2 = _errs25 === errors; @@ -25355,7 +29190,7 @@ function validate225( let valid7 = false; const _errs32 = errors; if ( - !validate222(data9, { + !validate236(data9, { instancePath: instancePath + "/visual", parentData: data, parentDataProperty: "visual", @@ -25363,7 +29198,7 @@ function validate225( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate222.errors : vErrors.concat(validate222.errors); + vErrors = vErrors === null ? validate236.errors : vErrors.concat(validate236.errors); errors = vErrors.length; } var _valid3 = _errs32 === errors; @@ -25426,12 +29261,12 @@ function validate225( } errors++; } - validate225.errors = vErrors; + validate239.errors = vErrors; return errors === 0; } -validate225.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate239.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema179 = { +const schema196 = { additionalProperties: false, not: { required: ["config", "params"] }, properties: { @@ -25457,7 +29292,7 @@ const schema179 = { title: "TargetNodeDocument", type: "object", }; -const schema180 = { +const schema197 = { additionalProperties: { $ref: "#/$defs/JsonValue" }, properties: { writer: { anyOf: [{ $ref: "#/$defs/WriterDocument" }, { type: "null" }], default: null }, @@ -25465,7 +29300,7 @@ const schema180 = { title: "TargetNodeConfigDocument", type: "object", }; -const schema182 = { +const schema199 = { additionalProperties: false, properties: { clustering: { items: { type: "string" }, maxItems: 4, title: "Clustering", type: "array" }, @@ -25499,7 +29334,7 @@ const schema182 = { title: "WriterDocument", type: "object", }; -const schema183 = { +const schema200 = { additionalProperties: false, properties: { business_key: { items: { type: "string" }, title: "Business Key", type: "array" }, @@ -25511,19 +29346,19 @@ const schema183 = { title: "DestinationDocument", type: "object", }; -const schema186 = { +const schema203 = { description: "How a writer handles declared columns absent from an existing target.", enum: ["strict", "additive"], title: "SchemaEvolution", type: "string", }; -const schema187 = { +const schema204 = { description: "Supported load strategies.", enum: ["scd1", "scd2", "snapshot", "incremental", "replace"], title: "WriteMode", type: "string", }; -const schema184 = { +const schema201 = { additionalProperties: false, properties: { field: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Field" }, @@ -25537,7 +29372,7 @@ const schema184 = { title: "PartitioningDocument", type: "object", }; -const schema185 = { +const schema202 = { description: "The closed set of time-unit partitioning granularities a `PartitioningSpec` may declare.\n\nA `StrEnum` (matching the `WriteMode`/`TransformationKind`/`JoinType` convention elsewhere in\n`dander.pipeline`), so it serializes to/from its plain string value stably in YAML and JSON;\nan out-of-set value fails validation with a clear `ValidationError`. Scope is deliberately\nlimited to BigQuery time-unit partitioning — integer-range partitioning is a deferred future\nmember (see `steering/02-engineering.md` on avoiding speculative generality).\n\nAttributes:\n HOUR: Hourly partitions.\n DAY: Daily partitions — the common case and BigQuery's default granularity.\n MONTH: Monthly partitions.\n YEAR: Yearly partitions.", enum: ["hour", "day", "month", "year"], @@ -25545,13 +29380,13 @@ const schema185 = { type: "string", }; -function validate257( +function validate271( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate257.evaluated; + const evaluated0 = validate271.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -25663,7 +29498,7 @@ function validate257( instancePath: instancePath + "/granularity", schemaPath: "#/$defs/PartitioningType/enum", keyword: "enum", - params: { allowedValues: schema185.enum }, + params: { allowedValues: schema202.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -25706,18 +29541,18 @@ function validate257( } errors++; } - validate257.errors = vErrors; + validate271.errors = vErrors; return errors === 0; } -validate257.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate271.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate256( +function validate270( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate256.evaluated; + const evaluated0 = validate270.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -25993,7 +29828,7 @@ function validate256( if (data3.dataset !== undefined) { let data6 = data3.dataset; if (typeof data6 === "string") { - if (func2(data6) < 1) { + if (func3(data6) < 1) { const err14 = { instancePath: instancePath + "/destination/dataset", schemaPath: "#/$defs/DestinationDocument/properties/dataset/minLength", @@ -26092,7 +29927,7 @@ function validate256( if (data3.table !== undefined) { let data8 = data3.table; if (typeof data8 === "string") { - if (func2(data8) < 1) { + if (func3(data8) < 1) { const err19 = { instancePath: instancePath + "/destination/table", schemaPath: "#/$defs/DestinationDocument/properties/table/minLength", @@ -26195,7 +30030,7 @@ function validate256( let valid9 = false; const _errs34 = errors; if ( - !validate257(data10, { + !validate271(data10, { instancePath: instancePath + "/partitioning", parentData: data, parentDataProperty: "partitioning", @@ -26203,7 +30038,7 @@ function validate256( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate257.errors : vErrors.concat(validate257.errors); + vErrors = vErrors === null ? validate271.errors : vErrors.concat(validate271.errors); errors = vErrors.length; } var _valid2 = _errs34 === errors; @@ -26273,7 +30108,7 @@ function validate256( instancePath: instancePath + "/schema_evolution", schemaPath: "#/$defs/SchemaEvolution/enum", keyword: "enum", - params: { allowedValues: schema186.enum }, + params: { allowedValues: schema203.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -26306,7 +30141,7 @@ function validate256( instancePath: instancePath + "/transport", schemaPath: "#/properties/transport/enum", keyword: "enum", - params: { allowedValues: schema182.properties.transport.enum }, + params: { allowedValues: schema199.properties.transport.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -26345,7 +30180,7 @@ function validate256( instancePath: instancePath + "/write_mode", schemaPath: "#/$defs/WriteMode/enum", keyword: "enum", - params: { allowedValues: schema187.enum }, + params: { allowedValues: schema204.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -26371,18 +30206,18 @@ function validate256( } errors++; } - validate256.errors = vErrors; + validate270.errors = vErrors; return errors === 0; } -validate256.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate270.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate255( +function validate269( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate255.evaluated; + const evaluated0 = validate269.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -26396,7 +30231,7 @@ function validate255( let valid3 = false; const _errs5 = errors; if ( - !validate256(data1, { + !validate270(data1, { instancePath: instancePath + "/writer", parentData: data, parentDataProperty: "writer", @@ -26404,7 +30239,7 @@ function validate255( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate256.errors : vErrors.concat(validate256.errors); + vErrors = vErrors === null ? validate270.errors : vErrors.concat(validate270.errors); errors = vErrors.length; } var _valid0 = _errs5 === errors; @@ -26467,18 +30302,18 @@ function validate255( } errors++; } - validate255.errors = vErrors; + validate269.errors = vErrors; return errors === 0; } -validate255.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate269.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate254( +function validate268( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate254.evaluated; + const evaluated0 = validate268.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -26574,7 +30409,7 @@ function validate254( errors++; } for (const key0 in data) { - if (!func1.call(schema179.properties, key0)) { + if (!func1.call(schema196.properties, key0)) { const err5 = { instancePath, schemaPath: "#/additionalProperties", @@ -26592,7 +30427,7 @@ function validate254( } if (data.config !== undefined) { if ( - !validate255(data.config, { + !validate269(data.config, { instancePath: instancePath + "/config", parentData: data, parentDataProperty: "config", @@ -26600,7 +30435,7 @@ function validate254( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate255.errors : vErrors.concat(validate255.errors); + vErrors = vErrors === null ? validate269.errors : vErrors.concat(validate269.errors); errors = vErrors.length; } } @@ -26610,7 +30445,7 @@ function validate254( let valid2 = false; const _errs7 = errors; if ( - !validate189(data1, { + !validate203(data1, { instancePath: instancePath + "/cursor", parentData: data, parentDataProperty: "cursor", @@ -26618,7 +30453,7 @@ function validate254( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate189.errors : vErrors.concat(validate189.errors); + vErrors = vErrors === null ? validate203.errors : vErrors.concat(validate203.errors); errors = vErrors.length; } var _valid0 = _errs7 === errors; @@ -26672,7 +30507,7 @@ function validate254( const len0 = data2.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate193(data2[i0], { + !validate207(data2[i0], { instancePath: instancePath + "/fields/" + i0, parentData: data2, parentDataProperty: i0, @@ -26680,7 +30515,7 @@ function validate254( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate193.errors : vErrors.concat(validate193.errors); + vErrors = vErrors === null ? validate207.errors : vErrors.concat(validate207.errors); errors = vErrors.length; } } @@ -26740,7 +30575,7 @@ function validate254( let valid5 = false; const _errs19 = errors; if ( - !validate255(data6, { + !validate269(data6, { instancePath: instancePath + "/params", parentData: data, parentDataProperty: "params", @@ -26748,7 +30583,7 @@ function validate254( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate255.errors : vErrors.concat(validate255.errors); + vErrors = vErrors === null ? validate269.errors : vErrors.concat(validate269.errors); errors = vErrors.length; } var _valid1 = _errs19 === errors; @@ -26802,7 +30637,7 @@ function validate254( let valid6 = false; const _errs25 = errors; if ( - !validate211(data7, { + !validate225(data7, { instancePath: instancePath + "/trigger", parentData: data, parentDataProperty: "trigger", @@ -26810,7 +30645,7 @@ function validate254( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate211.errors : vErrors.concat(validate211.errors); + vErrors = vErrors === null ? validate225.errors : vErrors.concat(validate225.errors); errors = vErrors.length; } var _valid2 = _errs25 === errors; @@ -26897,7 +30732,7 @@ function validate254( let valid7 = false; const _errs32 = errors; if ( - !validate222(data9, { + !validate236(data9, { instancePath: instancePath + "/visual", parentData: data, parentDataProperty: "visual", @@ -26905,7 +30740,7 @@ function validate254( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate222.errors : vErrors.concat(validate222.errors); + vErrors = vErrors === null ? validate236.errors : vErrors.concat(validate236.errors); errors = vErrors.length; } var _valid3 = _errs32 === errors; @@ -26968,12 +30803,12 @@ function validate254( } errors++; } - validate254.errors = vErrors; + validate268.errors = vErrors; return errors === 0; } -validate254.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate268.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema188 = { +const schema205 = { additionalProperties: false, not: { required: ["config", "params"] }, properties: { @@ -26999,15 +30834,15 @@ const schema188 = { title: "ExtensionNodeDocument", type: "object", }; -const schema189 = { not: { enum: ["source", "transform", "target"] }, type: "string" }; +const schema206 = { not: { enum: ["source", "transform", "target"] }, type: "string" }; -function validate267( +function validate281( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate267.evaluated; + const evaluated0 = validate281.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -27103,7 +30938,7 @@ function validate267( errors++; } for (const key0 in data) { - if (!func1.call(schema188.properties, key0)) { + if (!func1.call(schema205.properties, key0)) { const err5 = { instancePath, schemaPath: "#/additionalProperties", @@ -27121,7 +30956,7 @@ function validate267( } if (data.config !== undefined) { if ( - !validate159(data.config, { + !validate173(data.config, { instancePath: instancePath + "/config", parentData: data, parentDataProperty: "config", @@ -27129,7 +30964,7 @@ function validate267( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } } @@ -27139,7 +30974,7 @@ function validate267( let valid2 = false; const _errs7 = errors; if ( - !validate189(data1, { + !validate203(data1, { instancePath: instancePath + "/cursor", parentData: data, parentDataProperty: "cursor", @@ -27147,7 +30982,7 @@ function validate267( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate189.errors : vErrors.concat(validate189.errors); + vErrors = vErrors === null ? validate203.errors : vErrors.concat(validate203.errors); errors = vErrors.length; } var _valid0 = _errs7 === errors; @@ -27201,7 +31036,7 @@ function validate267( const len0 = data2.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate193(data2[i0], { + !validate207(data2[i0], { instancePath: instancePath + "/fields/" + i0, parentData: data2, parentDataProperty: i0, @@ -27209,7 +31044,7 @@ function validate267( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate193.errors : vErrors.concat(validate193.errors); + vErrors = vErrors === null ? validate207.errors : vErrors.concat(validate207.errors); errors = vErrors.length; } } @@ -27269,7 +31104,7 @@ function validate267( let valid5 = false; const _errs19 = errors; if ( - !validate159(data6, { + !validate173(data6, { instancePath: instancePath + "/params", parentData: data, parentDataProperty: "params", @@ -27277,7 +31112,7 @@ function validate267( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate159.errors : vErrors.concat(validate159.errors); + vErrors = vErrors === null ? validate173.errors : vErrors.concat(validate173.errors); errors = vErrors.length; } var _valid1 = _errs19 === errors; @@ -27331,7 +31166,7 @@ function validate267( let valid6 = false; const _errs25 = errors; if ( - !validate211(data7, { + !validate225(data7, { instancePath: instancePath + "/trigger", parentData: data, parentDataProperty: "trigger", @@ -27339,7 +31174,7 @@ function validate267( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate211.errors : vErrors.concat(validate211.errors); + vErrors = vErrors === null ? validate225.errors : vErrors.concat(validate225.errors); errors = vErrors.length; } var _valid2 = _errs25 === errors; @@ -27447,7 +31282,7 @@ function validate267( let valid9 = false; const _errs35 = errors; if ( - !validate222(data9, { + !validate236(data9, { instancePath: instancePath + "/visual", parentData: data, parentDataProperty: "visual", @@ -27455,7 +31290,7 @@ function validate267( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate222.errors : vErrors.concat(validate222.errors); + vErrors = vErrors === null ? validate236.errors : vErrors.concat(validate236.errors); errors = vErrors.length; } var _valid3 = _errs35 === errors; @@ -27518,18 +31353,18 @@ function validate267( } errors++; } - validate267.errors = vErrors; + validate281.errors = vErrors; return errors === 0; } -validate267.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate281.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate182( +function validate196( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate182.evaluated; + const evaluated0 = validate196.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -27540,9 +31375,9 @@ function validate182( let valid0 = false; const _errs1 = errors; if ( - !validate183(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate197(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate183.errors : vErrors.concat(validate183.errors); + vErrors = vErrors === null ? validate197.errors : vErrors.concat(validate197.errors); errors = vErrors.length; } var _valid0 = _errs1 === errors; @@ -27552,9 +31387,9 @@ function validate182( } const _errs2 = errors; if ( - !validate225(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate239(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate225.errors : vErrors.concat(validate225.errors); + vErrors = vErrors === null ? validate239.errors : vErrors.concat(validate239.errors); errors = vErrors.length; } var _valid0 = _errs2 === errors; @@ -27566,9 +31401,9 @@ function validate182( } const _errs3 = errors; if ( - !validate254(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate268(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate254.errors : vErrors.concat(validate254.errors); + vErrors = vErrors === null ? validate268.errors : vErrors.concat(validate268.errors); errors = vErrors.length; } var _valid0 = _errs3 === errors; @@ -27580,9 +31415,9 @@ function validate182( } const _errs4 = errors; if ( - !validate267(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate281(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate267.errors : vErrors.concat(validate267.errors); + vErrors = vErrors === null ? validate281.errors : vErrors.concat(validate281.errors); errors = vErrors.length; } var _valid0 = _errs4 === errors; @@ -27616,19 +31451,19 @@ function validate182( } } } - validate182.errors = vErrors; + validate196.errors = vErrors; evaluated0.props = props0; return errors === 0; } -validate182.evaluated = { dynamicProps: true, dynamicItems: false }; +validate196.evaluated = { dynamicProps: true, dynamicItems: false }; -function validate156( +function validate170( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate156.evaluated; + const evaluated0 = validate170.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -27674,7 +31509,7 @@ function validate156( const len0 = data0.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate157(data0[i0], { + !validate171(data0[i0], { instancePath: instancePath + "/edges/" + i0, parentData: data0, parentDataProperty: i0, @@ -27682,7 +31517,7 @@ function validate156( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate157.errors : vErrors.concat(validate157.errors); + vErrors = vErrors === null ? validate171.errors : vErrors.concat(validate171.errors); errors = vErrors.length; } } @@ -27725,7 +31560,7 @@ function validate156( const len1 = data3.length; for (let i1 = 0; i1 < len1; i1++) { if ( - !validate182(data3[i1], { + !validate196(data3[i1], { instancePath: instancePath + "/nodes/" + i1, parentData: data3, parentDataProperty: i1, @@ -27733,7 +31568,7 @@ function validate156( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate182.errors : vErrors.concat(validate182.errors); + vErrors = vErrors === null ? validate196.errors : vErrors.concat(validate196.errors); errors = vErrors.length; } } @@ -27759,7 +31594,7 @@ function validate156( let valid5 = false; const _errs12 = errors; if ( - !validate211(data5, { + !validate225(data5, { instancePath: instancePath + "/trigger", parentData: data, parentDataProperty: "trigger", @@ -27767,7 +31602,7 @@ function validate156( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate211.errors : vErrors.concat(validate211.errors); + vErrors = vErrors === null ? validate225.errors : vErrors.concat(validate225.errors); errors = vErrors.length; } var _valid0 = _errs12 === errors; @@ -27830,18 +31665,18 @@ function validate156( } errors++; } - validate156.errors = vErrors; + validate170.errors = vErrors; return errors === 0; } -validate156.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate170.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate155( +function validate169( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { /*# sourceURL="urn:dander:control:contracts:v1:graph-resource" */ let vErrors = null; let errors = 0; - const evaluated0 = validate155.evaluated; + const evaluated0 = validate169.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -28016,7 +31851,7 @@ function validate155( } if (data.document !== undefined) { if ( - !validate156(data.document, { + !validate170(data.document, { instancePath: instancePath + "/document", parentData: data, parentDataProperty: "document", @@ -28024,7 +31859,7 @@ function validate155( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate156.errors : vErrors.concat(validate156.errors); + vErrors = vErrors === null ? validate170.errors : vErrors.concat(validate170.errors); errors = vErrors.length; } } @@ -28094,13 +31929,13 @@ function validate155( } errors++; } - validate155.errors = vErrors; + validate169.errors = vErrors; return errors === 0; } -validate155.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate169.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -export const validateGraphValidation = validate278; -const schema190 = { +export const validateGraphValidation = validate292; +const schema207 = { $defs: { GraphValidationDetail: { additionalProperties: false, @@ -28127,7 +31962,7 @@ const schema190 = { title: "GraphValidationResponse", type: "object", }; -const schema191 = { +const schema208 = { additionalProperties: false, properties: { location: { title: "Location", type: "string" }, @@ -28139,13 +31974,13 @@ const schema191 = { type: "object", }; -function validate278( +function validate292( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { /*# sourceURL="urn:dander:control:contracts:v1:graph-validation" */ let vErrors = null; let errors = 0; - const evaluated0 = validate278.evaluated; + const evaluated0 = validate292.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -28455,13 +32290,13 @@ function validate278( } errors++; } - validate278.errors = vErrors; + validate292.errors = vErrors; return errors === 0; } -validate278.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate292.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -export const validateLogPage = validate279; -const schema192 = { +export const validateLogPage = validate293; +const schema209 = { $defs: { LogLevel: { enum: ["debug", "info", "warning", "error"], title: "LogLevel", type: "string" }, LogRecord: { @@ -28493,7 +32328,7 @@ const schema192 = { title: "LogPageResponse", type: "object", }; -const schema193 = { +const schema210 = { additionalProperties: false, properties: { code: { title: "Code", type: "string" }, @@ -28506,19 +32341,19 @@ const schema193 = { title: "LogRecord", type: "object", }; -const schema194 = { +const schema211 = { enum: ["debug", "info", "warning", "error"], title: "LogLevel", type: "string", }; -function validate280( +function validate294( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate280.evaluated; + const evaluated0 = validate294.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -28680,7 +32515,7 @@ function validate280( instancePath: instancePath + "/level", schemaPath: "#/$defs/LogLevel/enum", keyword: "enum", - params: { allowedValues: schema194.enum }, + params: { allowedValues: schema211.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -28740,18 +32575,18 @@ function validate280( } errors++; } - validate280.errors = vErrors; + validate294.errors = vErrors; return errors === 0; } -validate280.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate294.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate279( +function validate293( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { /*# sourceURL="urn:dander:control:contracts:v1:log-page" */ let vErrors = null; let errors = 0; - const evaluated0 = validate279.evaluated; + const evaluated0 = validate293.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -28862,7 +32697,7 @@ function validate279( const len0 = data1.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate280(data1[i0], { + !validate294(data1[i0], { instancePath: instancePath + "/records/" + i0, parentData: data1, parentDataProperty: i0, @@ -28870,7 +32705,7 @@ function validate279( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate280.errors : vErrors.concat(validate280.errors); + vErrors = vErrors === null ? validate294.errors : vErrors.concat(validate294.errors); errors = vErrors.length; } } @@ -28905,13 +32740,13 @@ function validate279( } errors++; } - validate279.errors = vErrors; + validate293.errors = vErrors; return errors === 0; } -validate279.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate293.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -export const validateMutationResult = validate282; -const schema195 = { +export const validateMutationResult = validate296; +const schema212 = { $defs: { RunState: { enum: ["queued", "running", "succeeded", "failed", "canceling", "canceled", "retrying"], @@ -28937,19 +32772,19 @@ const schema195 = { title: "MutationResult", type: "object", }; -const schema196 = { +const schema213 = { enum: ["queued", "running", "succeeded", "failed", "canceling", "canceled", "retrying"], title: "RunState", type: "string", }; -function validate282( +function validate296( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { /*# sourceURL="urn:dander:control:contracts:v1:mutation-result" */ let vErrors = null; let errors = 0; - const evaluated0 = validate282.evaluated; + const evaluated0 = validate296.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -29079,7 +32914,7 @@ function validate282( instancePath: instancePath + "/operation", schemaPath: "#/properties/operation/enum", keyword: "enum", - params: { allowedValues: schema195.properties.operation.enum }, + params: { allowedValues: schema212.properties.operation.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -29202,7 +33037,7 @@ function validate282( instancePath: instancePath + "/state", schemaPath: "#/$defs/RunState/enum", keyword: "enum", - params: { allowedValues: schema196.enum }, + params: { allowedValues: schema213.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -29228,13 +33063,13 @@ function validate282( } errors++; } - validate282.errors = vErrors; + validate296.errors = vErrors; return errors === 0; } -validate282.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate296.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -export const validateOperationCatalog = validate283; -const schema197 = { +export const validateOperationCatalog = validate297; +const schema214 = { $defs: { JsonValue: {}, OperationDescriptor: { @@ -29293,7 +33128,7 @@ const schema197 = { title: "OperationCatalogResponse", type: "object", }; -const schema198 = { +const schema215 = { additionalProperties: false, properties: { description: { title: "Description", type: "string" }, @@ -29313,7 +33148,7 @@ const schema198 = { title: "OperationDescriptor", type: "object", }; -const schema199 = { +const schema216 = { additionalProperties: false, properties: { control: { title: "Control", type: "string" }, @@ -29329,15 +33164,15 @@ const schema199 = { title: "OperationParameter", type: "object", }; -const schema200 = {}; +const schema217 = {}; -function validate285( +function validate299( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate285.evaluated; + const evaluated0 = validate299.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -29634,18 +33469,18 @@ function validate285( } errors++; } - validate285.errors = vErrors; + validate299.errors = vErrors; return errors === 0; } -validate285.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate299.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate284( +function validate298( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate284.evaluated; + const evaluated0 = validate298.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -29781,7 +33616,7 @@ function validate284( instancePath: instancePath + "/kind", schemaPath: "#/properties/kind/enum", keyword: "enum", - params: { allowedValues: schema198.properties.kind.enum }, + params: { allowedValues: schema215.properties.kind.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -29798,7 +33633,7 @@ function validate284( const len0 = data3.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate285(data3[i0], { + !validate299(data3[i0], { instancePath: instancePath + "/parameters/" + i0, parentData: data3, parentDataProperty: i0, @@ -29806,7 +33641,7 @@ function validate284( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate285.errors : vErrors.concat(validate285.errors); + vErrors = vErrors === null ? validate299.errors : vErrors.concat(validate299.errors); errors = vErrors.length; } } @@ -29841,18 +33676,18 @@ function validate284( } errors++; } - validate284.errors = vErrors; + validate298.errors = vErrors; return errors === 0; } -validate284.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate298.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate283( +function validate297( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { /*# sourceURL="urn:dander:control:contracts:v1:operation-catalog" */ let vErrors = null; let errors = 0; - const evaluated0 = validate283.evaluated; + const evaluated0 = validate297.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -29898,7 +33733,7 @@ function validate283( const len0 = data0.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate284(data0[i0], { + !validate298(data0[i0], { instancePath: instancePath + "/operations/" + i0, parentData: data0, parentDataProperty: i0, @@ -29906,7 +33741,7 @@ function validate283( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate284.errors : vErrors.concat(validate284.errors); + vErrors = vErrors === null ? validate298.errors : vErrors.concat(validate298.errors); errors = vErrors.length; } } @@ -29974,13 +33809,13 @@ function validate283( } errors++; } - validate283.errors = vErrors; + validate297.errors = vErrors; return errors === 0; } -validate283.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate297.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -export const validatePipelineGraph = validate288; -const schema202 = { +export const validatePipelineGraph = validate302; +const schema219 = { $defs: { AcceptedValuesFieldTest: { additionalProperties: false, @@ -30734,104 +34569,2377 @@ const schema202 = { title: "WriteMode", type: "string", }, - WriterDocument: { - additionalProperties: false, - properties: { - clustering: { items: { type: "string" }, maxItems: 4, title: "Clustering", type: "array" }, - cursor_field: { - anyOf: [{ type: "string" }, { type: "null" }], - default: null, - title: "Cursor Field", - }, - destination: { $ref: "#/$defs/DestinationDocument" }, - max_batch_rows: { - default: 10000, - exclusiveMinimum: 0, - maximum: 100000, - title: "Max Batch Rows", - type: "integer", - }, - partitioning: { - anyOf: [{ $ref: "#/$defs/PartitioningDocument" }, { type: "null" }], - default: null, - }, - schema_evolution: { $ref: "#/$defs/SchemaEvolution", default: "strict" }, - transport: { - default: "load_job", - enum: ["load_job", "storage_write", "copy"], - title: "Transport", - type: "string", - }, - write_mode: { $ref: "#/$defs/WriteMode" }, - }, - required: ["write_mode", "destination"], - title: "WriterDocument", - type: "object", - }, + WriterDocument: { + additionalProperties: false, + properties: { + clustering: { items: { type: "string" }, maxItems: 4, title: "Clustering", type: "array" }, + cursor_field: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Cursor Field", + }, + destination: { $ref: "#/$defs/DestinationDocument" }, + max_batch_rows: { + default: 10000, + exclusiveMinimum: 0, + maximum: 100000, + title: "Max Batch Rows", + type: "integer", + }, + partitioning: { + anyOf: [{ $ref: "#/$defs/PartitioningDocument" }, { type: "null" }], + default: null, + }, + schema_evolution: { $ref: "#/$defs/SchemaEvolution", default: "strict" }, + transport: { + default: "load_job", + enum: ["load_job", "storage_write", "copy"], + title: "Transport", + type: "string", + }, + write_mode: { $ref: "#/$defs/WriteMode" }, + }, + required: ["write_mode", "destination"], + title: "WriterDocument", + type: "object", + }, + }, + $id: "urn:dander:control:contracts:v1:pipeline-graph", + $schema: "https://json-schema.org/draft/2020-12/schema", + additionalProperties: false, + description: "Canonical graph transport whose construction reuses Dander semantic validation.", + properties: { + edges: { items: { $ref: "#/$defs/EdgeDocument" }, title: "Edges", type: "array" }, + name: { title: "Name", type: "string" }, + nodes: { items: { $ref: "#/$defs/GraphNodeDocument" }, title: "Nodes", type: "array" }, + trigger: { anyOf: [{ $ref: "#/$defs/TriggerDocument" }, { type: "null" }], default: null }, + }, + required: ["name"], + title: "PipelineGraphDocument", + type: "object", +}; +const schema220 = { + additionalProperties: false, + properties: { + from: { title: "From", type: "string" }, + join: { anyOf: [{ $ref: "#/$defs/JoinDocument" }, { type: "null" }], default: null }, + mappings: { items: { $ref: "#/$defs/FieldMappingDocument" }, title: "Mappings", type: "array" }, + metadata: { $ref: "#/$defs/JsonObject" }, + to: { title: "To", type: "string" }, + }, + required: ["from", "to"], + title: "EdgeDocument", + type: "object", +}; +const schema221 = { + additionalProperties: false, + properties: { + keys: { + items: { $ref: "#/$defs/JoinKeyPairDocument" }, + minItems: 1, + title: "Keys", + type: "array", + }, + metadata: { $ref: "#/$defs/JsonObject" }, + type: { enum: ["inner", "left", "right", "full"], title: "Type", type: "string" }, + }, + required: ["type", "keys"], + title: "JoinDocument", + type: "object", +}; +const schema222 = { + additionalProperties: false, + properties: { + left: { title: "Left", type: "string" }, + right: { title: "Right", type: "string" }, + }, + required: ["left", "right"], + title: "JoinKeyPairDocument", + type: "object", +}; +const schema223 = { additionalProperties: { $ref: "#/$defs/JsonValue" }, type: "object" }; +const schema224 = {}; + +function validate305( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate305.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + } else { + const err0 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + validate305.errors = vErrors; + return errors === 0; +} +validate305.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +function validate304( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate304.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.type === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "type" }, + message: "must have required property '" + "type" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + if (data.keys === undefined) { + const err1 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "keys" }, + message: "must have required property '" + "keys" + "'", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + for (const key0 in data) { + if (!(key0 === "keys" || key0 === "metadata" || key0 === "type")) { + const err2 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + } + if (data.keys !== undefined) { + let data0 = data.keys; + if (Array.isArray(data0)) { + if (data0.length < 1) { + const err3 = { + instancePath: instancePath + "/keys", + schemaPath: "#/properties/keys/minItems", + keyword: "minItems", + params: { limit: 1 }, + message: "must NOT have fewer than 1 items", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + const len0 = data0.length; + for (let i0 = 0; i0 < len0; i0++) { + let data1 = data0[i0]; + if (data1 && typeof data1 == "object" && !Array.isArray(data1)) { + if (data1.left === undefined) { + const err4 = { + instancePath: instancePath + "/keys/" + i0, + schemaPath: "#/$defs/JoinKeyPairDocument/required", + keyword: "required", + params: { missingProperty: "left" }, + message: "must have required property '" + "left" + "'", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + if (data1.right === undefined) { + const err5 = { + instancePath: instancePath + "/keys/" + i0, + schemaPath: "#/$defs/JoinKeyPairDocument/required", + keyword: "required", + params: { missingProperty: "right" }, + message: "must have required property '" + "right" + "'", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + for (const key1 in data1) { + if (!(key1 === "left" || key1 === "right")) { + const err6 = { + instancePath: instancePath + "/keys/" + i0, + schemaPath: "#/$defs/JoinKeyPairDocument/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + } + if (data1.left !== undefined) { + if (typeof data1.left !== "string") { + const err7 = { + instancePath: instancePath + "/keys/" + i0 + "/left", + schemaPath: "#/$defs/JoinKeyPairDocument/properties/left/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } + } + if (data1.right !== undefined) { + if (typeof data1.right !== "string") { + const err8 = { + instancePath: instancePath + "/keys/" + i0 + "/right", + schemaPath: "#/$defs/JoinKeyPairDocument/properties/right/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } + } + } else { + const err9 = { + instancePath: instancePath + "/keys/" + i0, + schemaPath: "#/$defs/JoinKeyPairDocument/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + } + } else { + const err10 = { + instancePath: instancePath + "/keys", + schemaPath: "#/properties/keys/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; + } + } + if (data.metadata !== undefined) { + if ( + !validate305(data.metadata, { + instancePath: instancePath + "/metadata", + parentData: data, + parentDataProperty: "metadata", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); + errors = vErrors.length; + } + } + if (data.type !== undefined) { + let data5 = data.type; + if (typeof data5 !== "string") { + const err11 = { + instancePath: instancePath + "/type", + schemaPath: "#/properties/type/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } + if (!(data5 === "inner" || data5 === "left" || data5 === "right" || data5 === "full")) { + const err12 = { + instancePath: instancePath + "/type", + schemaPath: "#/properties/type/enum", + keyword: "enum", + params: { allowedValues: schema221.properties.type.enum }, + message: "must be equal to one of the allowed values", + }; + if (vErrors === null) { + vErrors = [err12]; + } else { + vErrors.push(err12); + } + errors++; + } + } + } else { + const err13 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err13]; + } else { + vErrors.push(err13); + } + errors++; + } + validate304.errors = vErrors; + return errors === 0; +} +validate304.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +const schema225 = { + additionalProperties: false, + properties: { + metadata: { $ref: "#/$defs/JsonObject" }, + source: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Source" }, + target: { title: "Target", type: "string" }, + transformation: { + anyOf: [{ $ref: "#/$defs/TransformationDocument" }, { type: "null" }], + default: null, + }, + }, + required: ["target"], + title: "FieldMappingDocument", + type: "object", +}; +const schema226 = { + anyOf: [ + { $ref: "#/$defs/DirectTransformation" }, + { $ref: "#/$defs/ExpressionTransformation" }, + { $ref: "#/$defs/ConstantTransformation" }, + { $ref: "#/$defs/CustomCodeTransformation" }, + ], +}; +const schema227 = { + additionalProperties: false, + properties: { + arguments: { $ref: "#/$defs/EmptyObject" }, + constant: { default: null, title: "Constant", type: "null" }, + expression: { default: null, title: "Expression", type: "null" }, + function: { default: null, title: "Function", type: "null" }, + inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, + kind: { const: "direct", default: "direct", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + }, + title: "DirectTransformation", + type: "object", +}; +const schema228 = { + additionalProperties: false, + description: "A JSON object that must contain no properties.", + properties: {}, + title: "EmptyObject", + type: "object", +}; + +function validate311( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate311.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + for (const key0 in data) { + if (!( + key0 === "arguments" || + key0 === "constant" || + key0 === "expression" || + key0 === "function" || + key0 === "inputs" || + key0 === "kind" || + key0 === "metadata" + )) { + const err0 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + } + if (data.arguments !== undefined) { + let data0 = data.arguments; + if (data0 && typeof data0 == "object" && !Array.isArray(data0)) { + for (const key1 in data0) { + const err1 = { + instancePath: instancePath + "/arguments", + schemaPath: "#/$defs/EmptyObject/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + } else { + const err2 = { + instancePath: instancePath + "/arguments", + schemaPath: "#/$defs/EmptyObject/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + } + if (data.constant !== undefined) { + if (data.constant !== null) { + const err3 = { + instancePath: instancePath + "/constant", + schemaPath: "#/properties/constant/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + } + if (data.expression !== undefined) { + if (data.expression !== null) { + const err4 = { + instancePath: instancePath + "/expression", + schemaPath: "#/properties/expression/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + } + if (data.function !== undefined) { + if (data.function !== null) { + const err5 = { + instancePath: instancePath + "/function", + schemaPath: "#/properties/function/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + } + if (data.inputs !== undefined) { + let data4 = data.inputs; + if (Array.isArray(data4)) { + const len0 = data4.length; + for (let i0 = 0; i0 < len0; i0++) { + if (typeof data4[i0] !== "string") { + const err6 = { + instancePath: instancePath + "/inputs/" + i0, + schemaPath: "#/properties/inputs/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + } + } else { + const err7 = { + instancePath: instancePath + "/inputs", + schemaPath: "#/properties/inputs/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } + } + if (data.kind !== undefined) { + let data6 = data.kind; + if (typeof data6 !== "string") { + const err8 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } + if ("direct" !== data6) { + const err9 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/const", + keyword: "const", + params: { allowedValue: "direct" }, + message: "must be equal to constant", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + } + if (data.metadata !== undefined) { + if ( + !validate305(data.metadata, { + instancePath: instancePath + "/metadata", + parentData: data, + parentDataProperty: "metadata", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); + errors = vErrors.length; + } + } + } else { + const err10 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; + } + validate311.errors = vErrors; + return errors === 0; +} +validate311.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +const schema229 = { + additionalProperties: false, + properties: { + arguments: { $ref: "#/$defs/EmptyObject" }, + constant: { default: null, title: "Constant", type: "null" }, + expression: { minLength: 1, title: "Expression", type: "string" }, + function: { default: null, title: "Function", type: "null" }, + inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, + kind: { const: "expression", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + }, + required: ["kind", "expression"], + title: "ExpressionTransformation", + type: "object", +}; + +function validate314( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate314.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.kind === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "kind" }, + message: "must have required property '" + "kind" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + if (data.expression === undefined) { + const err1 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "expression" }, + message: "must have required property '" + "expression" + "'", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + for (const key0 in data) { + if (!( + key0 === "arguments" || + key0 === "constant" || + key0 === "expression" || + key0 === "function" || + key0 === "inputs" || + key0 === "kind" || + key0 === "metadata" + )) { + const err2 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + } + if (data.arguments !== undefined) { + let data0 = data.arguments; + if (data0 && typeof data0 == "object" && !Array.isArray(data0)) { + for (const key1 in data0) { + const err3 = { + instancePath: instancePath + "/arguments", + schemaPath: "#/$defs/EmptyObject/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + } else { + const err4 = { + instancePath: instancePath + "/arguments", + schemaPath: "#/$defs/EmptyObject/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + } + if (data.constant !== undefined) { + if (data.constant !== null) { + const err5 = { + instancePath: instancePath + "/constant", + schemaPath: "#/properties/constant/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + } + if (data.expression !== undefined) { + let data2 = data.expression; + if (typeof data2 === "string") { + if (func3(data2) < 1) { + const err6 = { + instancePath: instancePath + "/expression", + schemaPath: "#/properties/expression/minLength", + keyword: "minLength", + params: { limit: 1 }, + message: "must NOT have fewer than 1 characters", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + } else { + const err7 = { + instancePath: instancePath + "/expression", + schemaPath: "#/properties/expression/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } + } + if (data.function !== undefined) { + if (data.function !== null) { + const err8 = { + instancePath: instancePath + "/function", + schemaPath: "#/properties/function/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } + } + if (data.inputs !== undefined) { + let data4 = data.inputs; + if (Array.isArray(data4)) { + const len0 = data4.length; + for (let i0 = 0; i0 < len0; i0++) { + if (typeof data4[i0] !== "string") { + const err9 = { + instancePath: instancePath + "/inputs/" + i0, + schemaPath: "#/properties/inputs/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + } + } else { + const err10 = { + instancePath: instancePath + "/inputs", + schemaPath: "#/properties/inputs/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; + } + } + if (data.kind !== undefined) { + let data6 = data.kind; + if (typeof data6 !== "string") { + const err11 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } + if ("expression" !== data6) { + const err12 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/const", + keyword: "const", + params: { allowedValue: "expression" }, + message: "must be equal to constant", + }; + if (vErrors === null) { + vErrors = [err12]; + } else { + vErrors.push(err12); + } + errors++; + } + } + if (data.metadata !== undefined) { + if ( + !validate305(data.metadata, { + instancePath: instancePath + "/metadata", + parentData: data, + parentDataProperty: "metadata", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); + errors = vErrors.length; + } + } + } else { + const err13 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err13]; + } else { + vErrors.push(err13); + } + errors++; + } + validate314.errors = vErrors; + return errors === 0; +} +validate314.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +const schema231 = { + additionalProperties: false, + properties: { + arguments: { $ref: "#/$defs/EmptyObject" }, + constant: { $ref: "#/$defs/JsonValue" }, + expression: { default: null, title: "Expression", type: "null" }, + function: { default: null, title: "Function", type: "null" }, + inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, + kind: { const: "constant", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + }, + required: ["kind", "constant"], + title: "ConstantTransformation", + type: "object", +}; + +function validate317( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate317.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.kind === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "kind" }, + message: "must have required property '" + "kind" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + if (data.constant === undefined) { + const err1 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "constant" }, + message: "must have required property '" + "constant" + "'", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + for (const key0 in data) { + if (!( + key0 === "arguments" || + key0 === "constant" || + key0 === "expression" || + key0 === "function" || + key0 === "inputs" || + key0 === "kind" || + key0 === "metadata" + )) { + const err2 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + } + if (data.arguments !== undefined) { + let data0 = data.arguments; + if (data0 && typeof data0 == "object" && !Array.isArray(data0)) { + for (const key1 in data0) { + const err3 = { + instancePath: instancePath + "/arguments", + schemaPath: "#/$defs/EmptyObject/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + } else { + const err4 = { + instancePath: instancePath + "/arguments", + schemaPath: "#/$defs/EmptyObject/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + } + if (data.expression !== undefined) { + if (data.expression !== null) { + const err5 = { + instancePath: instancePath + "/expression", + schemaPath: "#/properties/expression/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + } + if (data.function !== undefined) { + if (data.function !== null) { + const err6 = { + instancePath: instancePath + "/function", + schemaPath: "#/properties/function/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + } + if (data.inputs !== undefined) { + let data4 = data.inputs; + if (Array.isArray(data4)) { + const len0 = data4.length; + for (let i0 = 0; i0 < len0; i0++) { + if (typeof data4[i0] !== "string") { + const err7 = { + instancePath: instancePath + "/inputs/" + i0, + schemaPath: "#/properties/inputs/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } + } + } else { + const err8 = { + instancePath: instancePath + "/inputs", + schemaPath: "#/properties/inputs/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } + } + if (data.kind !== undefined) { + let data6 = data.kind; + if (typeof data6 !== "string") { + const err9 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + if ("constant" !== data6) { + const err10 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/const", + keyword: "const", + params: { allowedValue: "constant" }, + message: "must be equal to constant", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; + } + } + if (data.metadata !== undefined) { + if ( + !validate305(data.metadata, { + instancePath: instancePath + "/metadata", + parentData: data, + parentDataProperty: "metadata", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); + errors = vErrors.length; + } + } + } else { + const err11 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } + validate317.errors = vErrors; + return errors === 0; +} +validate317.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +const schema234 = { + additionalProperties: false, + properties: { + arguments: { $ref: "#/$defs/JsonObject" }, + constant: { default: null, title: "Constant", type: "null" }, + expression: { default: null, title: "Expression", type: "null" }, + function: { + pattern: "^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*$", + title: "Function", + type: "string", + }, + inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, + kind: { const: "custom_code", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, }, - $id: "urn:dander:control:contracts:v1:pipeline-graph", - $schema: "https://json-schema.org/draft/2020-12/schema", + required: ["kind", "function"], + title: "CustomCodeTransformation", + type: "object", +}; + +function validate320( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate320.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.kind === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "kind" }, + message: "must have required property '" + "kind" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + if (data.function === undefined) { + const err1 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "function" }, + message: "must have required property '" + "function" + "'", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + for (const key0 in data) { + if (!( + key0 === "arguments" || + key0 === "constant" || + key0 === "expression" || + key0 === "function" || + key0 === "inputs" || + key0 === "kind" || + key0 === "metadata" + )) { + const err2 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + } + if (data.arguments !== undefined) { + if ( + !validate305(data.arguments, { + instancePath: instancePath + "/arguments", + parentData: data, + parentDataProperty: "arguments", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); + errors = vErrors.length; + } + } + if (data.constant !== undefined) { + if (data.constant !== null) { + const err3 = { + instancePath: instancePath + "/constant", + schemaPath: "#/properties/constant/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + } + if (data.expression !== undefined) { + if (data.expression !== null) { + const err4 = { + instancePath: instancePath + "/expression", + schemaPath: "#/properties/expression/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + } + if (data.function !== undefined) { + let data3 = data.function; + if (typeof data3 === "string") { + if (!pattern9.test(data3)) { + const err5 = { + instancePath: instancePath + "/function", + schemaPath: "#/properties/function/pattern", + keyword: "pattern", + params: { pattern: "^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*$" }, + message: + 'must match pattern "' + "^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*$" + '"', + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + } else { + const err6 = { + instancePath: instancePath + "/function", + schemaPath: "#/properties/function/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + } + if (data.inputs !== undefined) { + let data4 = data.inputs; + if (Array.isArray(data4)) { + const len0 = data4.length; + for (let i0 = 0; i0 < len0; i0++) { + if (typeof data4[i0] !== "string") { + const err7 = { + instancePath: instancePath + "/inputs/" + i0, + schemaPath: "#/properties/inputs/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } + } + } else { + const err8 = { + instancePath: instancePath + "/inputs", + schemaPath: "#/properties/inputs/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } + } + if (data.kind !== undefined) { + let data6 = data.kind; + if (typeof data6 !== "string") { + const err9 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + if ("custom_code" !== data6) { + const err10 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/const", + keyword: "const", + params: { allowedValue: "custom_code" }, + message: "must be equal to constant", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; + } + } + if (data.metadata !== undefined) { + if ( + !validate305(data.metadata, { + instancePath: instancePath + "/metadata", + parentData: data, + parentDataProperty: "metadata", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); + errors = vErrors.length; + } + } + } else { + const err11 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } + validate320.errors = vErrors; + return errors === 0; +} +validate320.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +function validate310( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate310.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + const _errs0 = errors; + let valid0 = false; + const _errs1 = errors; + if ( + !validate311(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + ) { + vErrors = vErrors === null ? validate311.errors : vErrors.concat(validate311.errors); + errors = vErrors.length; + } + var _valid0 = _errs1 === errors; + valid0 = valid0 || _valid0; + if (_valid0) { + var props0 = true; + } + const _errs2 = errors; + if ( + !validate314(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + ) { + vErrors = vErrors === null ? validate314.errors : vErrors.concat(validate314.errors); + errors = vErrors.length; + } + var _valid0 = _errs2 === errors; + valid0 = valid0 || _valid0; + if (_valid0) { + if (props0 !== true) { + props0 = true; + } + } + const _errs3 = errors; + if ( + !validate317(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + ) { + vErrors = vErrors === null ? validate317.errors : vErrors.concat(validate317.errors); + errors = vErrors.length; + } + var _valid0 = _errs3 === errors; + valid0 = valid0 || _valid0; + if (_valid0) { + if (props0 !== true) { + props0 = true; + } + } + const _errs4 = errors; + if ( + !validate320(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + ) { + vErrors = vErrors === null ? validate320.errors : vErrors.concat(validate320.errors); + errors = vErrors.length; + } + var _valid0 = _errs4 === errors; + valid0 = valid0 || _valid0; + if (_valid0) { + if (props0 !== true) { + props0 = true; + } + } + if (!valid0) { + const err0 = { + instancePath, + schemaPath: "#/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } else { + errors = _errs0; + if (vErrors !== null) { + if (_errs0) { + vErrors.length = _errs0; + } else { + vErrors = null; + } + } + } + validate310.errors = vErrors; + evaluated0.props = props0; + return errors === 0; +} +validate310.evaluated = { dynamicProps: true, dynamicItems: false }; + +function validate308( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate308.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.target === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "target" }, + message: "must have required property '" + "target" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + for (const key0 in data) { + if (!( + key0 === "metadata" || + key0 === "source" || + key0 === "target" || + key0 === "transformation" + )) { + const err1 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + } + if (data.metadata !== undefined) { + if ( + !validate305(data.metadata, { + instancePath: instancePath + "/metadata", + parentData: data, + parentDataProperty: "metadata", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); + errors = vErrors.length; + } + } + if (data.source !== undefined) { + let data1 = data.source; + const _errs4 = errors; + let valid1 = false; + const _errs5 = errors; + if (typeof data1 !== "string") { + const err2 = { + instancePath: instancePath + "/source", + schemaPath: "#/properties/source/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + var _valid0 = _errs5 === errors; + valid1 = valid1 || _valid0; + const _errs7 = errors; + if (data1 !== null) { + const err3 = { + instancePath: instancePath + "/source", + schemaPath: "#/properties/source/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + var _valid0 = _errs7 === errors; + valid1 = valid1 || _valid0; + if (!valid1) { + const err4 = { + instancePath: instancePath + "/source", + schemaPath: "#/properties/source/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } else { + errors = _errs4; + if (vErrors !== null) { + if (_errs4) { + vErrors.length = _errs4; + } else { + vErrors = null; + } + } + } + } + if (data.target !== undefined) { + if (typeof data.target !== "string") { + const err5 = { + instancePath: instancePath + "/target", + schemaPath: "#/properties/target/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + } + if (data.transformation !== undefined) { + let data3 = data.transformation; + const _errs12 = errors; + let valid2 = false; + const _errs13 = errors; + if ( + !validate310(data3, { + instancePath: instancePath + "/transformation", + parentData: data, + parentDataProperty: "transformation", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate310.errors : vErrors.concat(validate310.errors); + errors = vErrors.length; + } + var _valid1 = _errs13 === errors; + valid2 = valid2 || _valid1; + const _errs14 = errors; + if (data3 !== null) { + const err6 = { + instancePath: instancePath + "/transformation", + schemaPath: "#/properties/transformation/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + var _valid1 = _errs14 === errors; + valid2 = valid2 || _valid1; + if (!valid2) { + const err7 = { + instancePath: instancePath + "/transformation", + schemaPath: "#/properties/transformation/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } else { + errors = _errs12; + if (vErrors !== null) { + if (_errs12) { + vErrors.length = _errs12; + } else { + vErrors = null; + } + } + } + } + } else { + const err8 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } + validate308.errors = vErrors; + return errors === 0; +} +validate308.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +function validate303( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate303.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.from === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "from" }, + message: "must have required property '" + "from" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + if (data.to === undefined) { + const err1 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "to" }, + message: "must have required property '" + "to" + "'", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + for (const key0 in data) { + if (!( + key0 === "from" || + key0 === "join" || + key0 === "mappings" || + key0 === "metadata" || + key0 === "to" + )) { + const err2 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + } + if (data.from !== undefined) { + if (typeof data.from !== "string") { + const err3 = { + instancePath: instancePath + "/from", + schemaPath: "#/properties/from/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + } + if (data.join !== undefined) { + let data1 = data.join; + const _errs5 = errors; + let valid1 = false; + const _errs6 = errors; + if ( + !validate304(data1, { + instancePath: instancePath + "/join", + parentData: data, + parentDataProperty: "join", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate304.errors : vErrors.concat(validate304.errors); + errors = vErrors.length; + } + var _valid0 = _errs6 === errors; + valid1 = valid1 || _valid0; + const _errs7 = errors; + if (data1 !== null) { + const err4 = { + instancePath: instancePath + "/join", + schemaPath: "#/properties/join/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + var _valid0 = _errs7 === errors; + valid1 = valid1 || _valid0; + if (!valid1) { + const err5 = { + instancePath: instancePath + "/join", + schemaPath: "#/properties/join/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } else { + errors = _errs5; + if (vErrors !== null) { + if (_errs5) { + vErrors.length = _errs5; + } else { + vErrors = null; + } + } + } + } + if (data.mappings !== undefined) { + let data2 = data.mappings; + if (Array.isArray(data2)) { + const len0 = data2.length; + for (let i0 = 0; i0 < len0; i0++) { + if ( + !validate308(data2[i0], { + instancePath: instancePath + "/mappings/" + i0, + parentData: data2, + parentDataProperty: i0, + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate308.errors : vErrors.concat(validate308.errors); + errors = vErrors.length; + } + } + } else { + const err6 = { + instancePath: instancePath + "/mappings", + schemaPath: "#/properties/mappings/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + } + if (data.metadata !== undefined) { + if ( + !validate305(data.metadata, { + instancePath: instancePath + "/metadata", + parentData: data, + parentDataProperty: "metadata", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); + errors = vErrors.length; + } + } + if (data.to !== undefined) { + if (typeof data.to !== "string") { + const err7 = { + instancePath: instancePath + "/to", + schemaPath: "#/properties/to/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } + } + } else { + const err8 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } + validate303.errors = vErrors; + return errors === 0; +} +validate303.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +const schema235 = { + anyOf: [ + { $ref: "#/$defs/SourceNodeDocument" }, + { $ref: "#/$defs/TransformNodeDocument" }, + { $ref: "#/$defs/TargetNodeDocument" }, + { $ref: "#/$defs/ExtensionNodeDocument" }, + ], +}; +const schema236 = { additionalProperties: false, - description: "Canonical graph transport whose construction reuses Dander semantic validation.", + not: { required: ["config", "params"] }, properties: { - edges: { items: { $ref: "#/$defs/EdgeDocument" }, title: "Edges", type: "array" }, + config: { $ref: "#/$defs/SourceNodeConfigDocument" }, + cursor: { + anyOf: [{ $ref: "#/$defs/CursorStrategyDocument" }, { type: "null" }], + default: null, + }, + fields: { items: { $ref: "#/$defs/NodeFieldDocument" }, title: "Fields", type: "array" }, + id: { title: "Id", type: "string" }, name: { title: "Name", type: "string" }, - nodes: { items: { $ref: "#/$defs/GraphNodeDocument" }, title: "Nodes", type: "array" }, + params: { + anyOf: [{ $ref: "#/$defs/SourceNodeConfigDocument" }, { type: "null" }], + default: null, + deprecated: true, + "x-dander-canonical-name": "config", + }, trigger: { anyOf: [{ $ref: "#/$defs/TriggerDocument" }, { type: "null" }], default: null }, + type: { const: "source", title: "Type", type: "string" }, + visual: { anyOf: [{ $ref: "#/$defs/NodeVisualDocument" }, { type: "null" }], default: null }, }, - required: ["name"], - title: "PipelineGraphDocument", + required: ["id", "type", "name"], + title: "SourceNodeDocument", type: "object", }; -const schema203 = { - additionalProperties: false, +const schema237 = { + additionalProperties: { $ref: "#/$defs/JsonValue" }, properties: { - from: { title: "From", type: "string" }, - join: { anyOf: [{ $ref: "#/$defs/JoinDocument" }, { type: "null" }], default: null }, - mappings: { items: { $ref: "#/$defs/FieldMappingDocument" }, title: "Mappings", type: "array" }, - metadata: { $ref: "#/$defs/JsonObject" }, - to: { title: "To", type: "string" }, + connector: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Connector" }, + endpoint: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Endpoint" }, + request: { anyOf: [{ $ref: "#/$defs/RequestSpecDocument" }, { type: "null" }], default: null }, }, - required: ["from", "to"], - title: "EdgeDocument", + title: "SourceNodeConfigDocument", type: "object", }; -const schema204 = { +const schema239 = { additionalProperties: false, properties: { - keys: { - items: { $ref: "#/$defs/JoinKeyPairDocument" }, - minItems: 1, - title: "Keys", - type: "array", + body: { + anyOf: [{ $ref: "#/$defs/JsonObject" }, { type: "string" }, { type: "null" }], + default: null, + title: "Body", + }, + headers: { additionalProperties: { type: "string" }, title: "Headers", type: "object" }, + method: { $ref: "#/$defs/HttpMethod", default: "GET" }, + query_params: { + additionalProperties: { type: "string" }, + title: "Query Params", + type: "object", }, - metadata: { $ref: "#/$defs/JsonObject" }, - type: { enum: ["inner", "left", "right", "full"], title: "Type", type: "string" }, }, - required: ["type", "keys"], - title: "JoinDocument", + title: "RequestSpecDocument", type: "object", }; -const schema205 = { - additionalProperties: false, - properties: { - left: { title: "Left", type: "string" }, - right: { title: "Right", type: "string" }, - }, - required: ["left", "right"], - title: "JoinKeyPairDocument", - type: "object", +const schema240 = { + description: + "The closed set of HTTP methods a `RequestSpec` may declare.\n\nA `StrEnum` (matching the `TransformationKind`/`JoinType` convention in `graph.py`) so callers\nget a named, importable type that still serializes to/from its plain string value stably in\nYAML and JSON. An out-of-set value fails validation with a clear error at the Pydantic\nboundary. `HEAD`/`OPTIONS` are intentionally omitted (no source currently needs them); extend\nby adding a member later without touching callers.\n\nAttributes:\n GET: Retrieve a resource. The default method (a simple GET needs no explicit spec).\n POST: Create a resource / submit a query body.\n PUT: Replace a resource.\n PATCH: Partially update a resource.\n DELETE: Remove a resource.", + enum: ["GET", "POST", "PUT", "PATCH", "DELETE"], + title: "HttpMethod", + type: "string", }; -const schema206 = { additionalProperties: { $ref: "#/$defs/JsonValue" }, type: "object" }; -const schema207 = {}; -function validate291( +function validate331( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate331.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + for (const key0 in data) { + if (!( + key0 === "body" || + key0 === "headers" || + key0 === "method" || + key0 === "query_params" + )) { + const err0 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + } + if (data.body !== undefined) { + let data0 = data.body; + const _errs3 = errors; + let valid1 = false; + const _errs4 = errors; + if ( + !validate305(data0, { + instancePath: instancePath + "/body", + parentData: data, + parentDataProperty: "body", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); + errors = vErrors.length; + } + var _valid0 = _errs4 === errors; + valid1 = valid1 || _valid0; + const _errs5 = errors; + if (typeof data0 !== "string") { + const err1 = { + instancePath: instancePath + "/body", + schemaPath: "#/properties/body/anyOf/1/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + var _valid0 = _errs5 === errors; + valid1 = valid1 || _valid0; + const _errs7 = errors; + if (data0 !== null) { + const err2 = { + instancePath: instancePath + "/body", + schemaPath: "#/properties/body/anyOf/2/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + var _valid0 = _errs7 === errors; + valid1 = valid1 || _valid0; + if (!valid1) { + const err3 = { + instancePath: instancePath + "/body", + schemaPath: "#/properties/body/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } else { + errors = _errs3; + if (vErrors !== null) { + if (_errs3) { + vErrors.length = _errs3; + } else { + vErrors = null; + } + } + } + } + if (data.headers !== undefined) { + let data1 = data.headers; + if (data1 && typeof data1 == "object" && !Array.isArray(data1)) { + for (const key1 in data1) { + if (typeof data1[key1] !== "string") { + const err4 = { + instancePath: + instancePath + "/headers/" + key1.replace(/~/g, "~0").replace(/\//g, "~1"), + schemaPath: "#/properties/headers/additionalProperties/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + } + } else { + const err5 = { + instancePath: instancePath + "/headers", + schemaPath: "#/properties/headers/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + } + if (data.method !== undefined) { + let data3 = data.method; + if (typeof data3 !== "string") { + const err6 = { + instancePath: instancePath + "/method", + schemaPath: "#/$defs/HttpMethod/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + if (!( + data3 === "GET" || + data3 === "POST" || + data3 === "PUT" || + data3 === "PATCH" || + data3 === "DELETE" + )) { + const err7 = { + instancePath: instancePath + "/method", + schemaPath: "#/$defs/HttpMethod/enum", + keyword: "enum", + params: { allowedValues: schema240.enum }, + message: "must be equal to one of the allowed values", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } + } + if (data.query_params !== undefined) { + let data4 = data.query_params; + if (data4 && typeof data4 == "object" && !Array.isArray(data4)) { + for (const key2 in data4) { + if (typeof data4[key2] !== "string") { + const err8 = { + instancePath: + instancePath + "/query_params/" + key2.replace(/~/g, "~0").replace(/\//g, "~1"), + schemaPath: "#/properties/query_params/additionalProperties/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } + } + } else { + const err9 = { + instancePath: instancePath + "/query_params", + schemaPath: "#/properties/query_params/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + } + } else { + const err10 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; + } + validate331.errors = vErrors; + return errors === 0; +} +validate331.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +function validate330( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate291.evaluated; + const evaluated0 = validate330.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -30839,8 +36947,200 @@ function validate291( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.connector !== undefined) { + let data1 = data.connector; + const _errs4 = errors; + let valid3 = false; + const _errs5 = errors; + if (typeof data1 !== "string") { + const err0 = { + instancePath: instancePath + "/connector", + schemaPath: "#/properties/connector/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + var _valid0 = _errs5 === errors; + valid3 = valid3 || _valid0; + const _errs7 = errors; + if (data1 !== null) { + const err1 = { + instancePath: instancePath + "/connector", + schemaPath: "#/properties/connector/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + var _valid0 = _errs7 === errors; + valid3 = valid3 || _valid0; + if (!valid3) { + const err2 = { + instancePath: instancePath + "/connector", + schemaPath: "#/properties/connector/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } else { + errors = _errs4; + if (vErrors !== null) { + if (_errs4) { + vErrors.length = _errs4; + } else { + vErrors = null; + } + } + } + } + if (data.endpoint !== undefined) { + let data2 = data.endpoint; + const _errs10 = errors; + let valid4 = false; + const _errs11 = errors; + if (typeof data2 !== "string") { + const err3 = { + instancePath: instancePath + "/endpoint", + schemaPath: "#/properties/endpoint/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + var _valid1 = _errs11 === errors; + valid4 = valid4 || _valid1; + const _errs13 = errors; + if (data2 !== null) { + const err4 = { + instancePath: instancePath + "/endpoint", + schemaPath: "#/properties/endpoint/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + var _valid1 = _errs13 === errors; + valid4 = valid4 || _valid1; + if (!valid4) { + const err5 = { + instancePath: instancePath + "/endpoint", + schemaPath: "#/properties/endpoint/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } else { + errors = _errs10; + if (vErrors !== null) { + if (_errs10) { + vErrors.length = _errs10; + } else { + vErrors = null; + } + } + } + } + if (data.request !== undefined) { + let data3 = data.request; + const _errs16 = errors; + let valid5 = false; + const _errs17 = errors; + if ( + !validate331(data3, { + instancePath: instancePath + "/request", + parentData: data, + parentDataProperty: "request", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate331.errors : vErrors.concat(validate331.errors); + errors = vErrors.length; + } + var _valid2 = _errs17 === errors; + valid5 = valid5 || _valid2; + const _errs18 = errors; + if (data3 !== null) { + const err6 = { + instancePath: instancePath + "/request", + schemaPath: "#/properties/request/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + var _valid2 = _errs18 === errors; + valid5 = valid5 || _valid2; + if (!valid5) { + const err7 = { + instancePath: instancePath + "/request", + schemaPath: "#/properties/request/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } else { + errors = _errs16; + if (vErrors !== null) { + if (_errs16) { + vErrors.length = _errs16; + } else { + vErrors = null; + } + } + } + } } else { - const err0 = { + const err8 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -30848,24 +37148,37 @@ function validate291( message: "must be object", }; if (vErrors === null) { - vErrors = [err0]; + vErrors = [err8]; } else { - vErrors.push(err0); + vErrors.push(err8); } errors++; } - validate291.errors = vErrors; + validate330.errors = vErrors; return errors === 0; } -validate291.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate330.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +const schema241 = { + additionalProperties: false, + properties: { + field: { minLength: 1, title: "Field", type: "string" }, + kind: { enum: ["timestamp", "sequence", "opaque_token"], title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + params: { $ref: "#/$defs/JsonObject" }, + }, + required: ["field", "kind"], + title: "CursorStrategyDocument", + type: "object", +}; -function validate290( +function validate335( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate290.evaluated; + const evaluated0 = validate335.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -30873,13 +37186,13 @@ function validate290( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.type === undefined) { + if (data.field === undefined) { const err0 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "type" }, - message: "must have required property '" + "type" + "'", + params: { missingProperty: "field" }, + message: "must have required property '" + "field" + "'", }; if (vErrors === null) { vErrors = [err0]; @@ -30888,13 +37201,13 @@ function validate290( } errors++; } - if (data.keys === undefined) { + if (data.kind === undefined) { const err1 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "keys" }, - message: "must have required property '" + "keys" + "'", + params: { missingProperty: "kind" }, + message: "must have required property '" + "kind" + "'", }; if (vErrors === null) { vErrors = [err1]; @@ -30904,7 +37217,7 @@ function validate290( errors++; } for (const key0 in data) { - if (!(key0 === "keys" || key0 === "metadata" || key0 === "type")) { + if (!(key0 === "field" || key0 === "kind" || key0 === "metadata" || key0 === "params")) { const err2 = { instancePath, schemaPath: "#/additionalProperties", @@ -30920,16 +37233,16 @@ function validate290( errors++; } } - if (data.keys !== undefined) { - let data0 = data.keys; - if (Array.isArray(data0)) { - if (data0.length < 1) { + if (data.field !== undefined) { + let data0 = data.field; + if (typeof data0 === "string") { + if (func3(data0) < 1) { const err3 = { - instancePath: instancePath + "/keys", - schemaPath: "#/properties/keys/minItems", - keyword: "minItems", + instancePath: instancePath + "/field", + schemaPath: "#/properties/field/minLength", + keyword: "minLength", params: { limit: 1 }, - message: "must NOT have fewer than 1 items", + message: "must NOT have fewer than 1 characters", }; if (vErrors === null) { vErrors = [err3]; @@ -30938,172 +37251,85 @@ function validate290( } errors++; } - const len0 = data0.length; - for (let i0 = 0; i0 < len0; i0++) { - let data1 = data0[i0]; - if (data1 && typeof data1 == "object" && !Array.isArray(data1)) { - if (data1.left === undefined) { - const err4 = { - instancePath: instancePath + "/keys/" + i0, - schemaPath: "#/$defs/JoinKeyPairDocument/required", - keyword: "required", - params: { missingProperty: "left" }, - message: "must have required property '" + "left" + "'", - }; - if (vErrors === null) { - vErrors = [err4]; - } else { - vErrors.push(err4); - } - errors++; - } - if (data1.right === undefined) { - const err5 = { - instancePath: instancePath + "/keys/" + i0, - schemaPath: "#/$defs/JoinKeyPairDocument/required", - keyword: "required", - params: { missingProperty: "right" }, - message: "must have required property '" + "right" + "'", - }; - if (vErrors === null) { - vErrors = [err5]; - } else { - vErrors.push(err5); - } - errors++; - } - for (const key1 in data1) { - if (!(key1 === "left" || key1 === "right")) { - const err6 = { - instancePath: instancePath + "/keys/" + i0, - schemaPath: "#/$defs/JoinKeyPairDocument/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key1 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err6]; - } else { - vErrors.push(err6); - } - errors++; - } - } - if (data1.left !== undefined) { - if (typeof data1.left !== "string") { - const err7 = { - instancePath: instancePath + "/keys/" + i0 + "/left", - schemaPath: "#/$defs/JoinKeyPairDocument/properties/left/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; - } - } - if (data1.right !== undefined) { - if (typeof data1.right !== "string") { - const err8 = { - instancePath: instancePath + "/keys/" + i0 + "/right", - schemaPath: "#/$defs/JoinKeyPairDocument/properties/right/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err8]; - } else { - vErrors.push(err8); - } - errors++; - } - } - } else { - const err9 = { - instancePath: instancePath + "/keys/" + i0, - schemaPath: "#/$defs/JoinKeyPairDocument/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", - }; - if (vErrors === null) { - vErrors = [err9]; - } else { - vErrors.push(err9); - } - errors++; - } - } } else { - const err10 = { - instancePath: instancePath + "/keys", - schemaPath: "#/properties/keys/type", + const err4 = { + instancePath: instancePath + "/field", + schemaPath: "#/properties/field/type", keyword: "type", - params: { type: "array" }, - message: "must be array", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err10]; + vErrors = [err4]; } else { - vErrors.push(err10); + vErrors.push(err4); } errors++; } } - if (data.metadata !== undefined) { - if ( - !validate291(data.metadata, { - instancePath: instancePath + "/metadata", - parentData: data, - parentDataProperty: "metadata", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); - errors = vErrors.length; - } - } - if (data.type !== undefined) { - let data5 = data.type; - if (typeof data5 !== "string") { - const err11 = { - instancePath: instancePath + "/type", - schemaPath: "#/properties/type/type", + if (data.kind !== undefined) { + let data1 = data.kind; + if (typeof data1 !== "string") { + const err5 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err11]; + vErrors = [err5]; } else { - vErrors.push(err11); + vErrors.push(err5); } errors++; } - if (!(data5 === "inner" || data5 === "left" || data5 === "right" || data5 === "full")) { - const err12 = { - instancePath: instancePath + "/type", - schemaPath: "#/properties/type/enum", + if (!(data1 === "timestamp" || data1 === "sequence" || data1 === "opaque_token")) { + const err6 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/enum", keyword: "enum", - params: { allowedValues: schema204.properties.type.enum }, + params: { allowedValues: schema241.properties.kind.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { - vErrors = [err12]; + vErrors = [err6]; } else { - vErrors.push(err12); + vErrors.push(err6); } errors++; } } + if (data.metadata !== undefined) { + if ( + !validate305(data.metadata, { + instancePath: instancePath + "/metadata", + parentData: data, + parentDataProperty: "metadata", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); + errors = vErrors.length; + } + } + if (data.params !== undefined) { + if ( + !validate305(data.params, { + instancePath: instancePath + "/params", + parentData: data, + parentDataProperty: "params", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); + errors = vErrors.length; + } + } } else { - const err13 = { + const err7 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -31111,69 +37337,85 @@ function validate290( message: "must be object", }; if (vErrors === null) { - vErrors = [err13]; + vErrors = [err7]; } else { - vErrors.push(err13); + vErrors.push(err7); } errors++; } - validate290.errors = vErrors; + validate335.errors = vErrors; return errors === 0; } -validate290.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate335.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema208 = { +const schema242 = { additionalProperties: false, properties: { - metadata: { $ref: "#/$defs/JsonObject" }, - source: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Source" }, - target: { title: "Target", type: "string" }, - transformation: { - anyOf: [{ $ref: "#/$defs/TransformationDocument" }, { type: "null" }], + cast_to: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Cast To" }, + description: { + anyOf: [{ type: "string" }, { type: "null" }], default: null, + title: "Description", + }, + extensions: { + items: { $ref: "#/$defs/ProviderExtension" }, + title: "Extensions", + type: "array", + }, + metadata: { $ref: "#/$defs/JsonObject" }, + name: { title: "Name", type: "string" }, + nullable: { default: true, title: "Nullable", type: "boolean" }, + tests: { items: { $ref: "#/$defs/FieldTestDocument" }, title: "Tests", type: "array" }, + type: { title: "Type", type: "string" }, + }, + required: ["name", "type"], + title: "NodeFieldDocument", + type: "object", +}; +const schema243 = { + additionalProperties: false, + description: "One deterministic provider-specific schema annotation, never a credential.", + properties: { + name: { title: "Name", type: "string" }, + provider: { title: "Provider", type: "string" }, + value: { + anyOf: [{ type: "string" }, { type: "integer" }, { type: "number" }, { type: "boolean" }], + title: "Value", }, }, - required: ["target"], - title: "FieldMappingDocument", + required: ["provider", "name", "value"], + title: "ProviderExtension", type: "object", }; -const schema209 = { +const schema244 = { anyOf: [ - { $ref: "#/$defs/DirectTransformation" }, - { $ref: "#/$defs/ExpressionTransformation" }, - { $ref: "#/$defs/ConstantTransformation" }, - { $ref: "#/$defs/CustomCodeTransformation" }, + { $ref: "#/$defs/NotNullFieldTest" }, + { $ref: "#/$defs/UniqueFieldTest" }, + { $ref: "#/$defs/AcceptedValuesFieldTest" }, + { $ref: "#/$defs/RelationshipsFieldTest" }, ], }; -const schema210 = { +const schema245 = { additionalProperties: false, properties: { - arguments: { $ref: "#/$defs/EmptyObject" }, - constant: { default: null, title: "Constant", type: "null" }, - expression: { default: null, title: "Expression", type: "null" }, - function: { default: null, title: "Function", type: "null" }, - inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, - kind: { const: "direct", default: "direct", title: "Kind", type: "string" }, + field: { default: null, title: "Field", type: "null" }, + kind: { const: "not_null", title: "Kind", type: "string" }, metadata: { $ref: "#/$defs/JsonObject" }, + to: { default: null, title: "To", type: "null" }, + values: { items: { $ref: "#/$defs/JsonValue" }, maxItems: 0, title: "Values", type: "array" }, }, - title: "DirectTransformation", - type: "object", -}; -const schema211 = { - additionalProperties: false, - description: "A JSON object that must contain no properties.", - properties: {}, - title: "EmptyObject", + required: ["kind"], + title: "NotNullFieldTest", type: "object", }; -function validate297( +function validate342( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate297.evaluated; + const evaluated0 = validate342.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -31181,17 +37423,30 @@ function validate297( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.kind === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "kind" }, + message: "must have required property '" + "kind" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } for (const key0 in data) { if (!( - key0 === "arguments" || - key0 === "constant" || - key0 === "expression" || - key0 === "function" || - key0 === "inputs" || + key0 === "field" || key0 === "kind" || - key0 === "metadata" + key0 === "metadata" || + key0 === "to" || + key0 === "values" )) { - const err0 = { + const err1 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", @@ -31199,38 +37454,21 @@ function validate297( message: "must NOT have additional properties", }; if (vErrors === null) { - vErrors = [err0]; + vErrors = [err1]; } else { - vErrors.push(err0); + vErrors.push(err1); } errors++; } } - if (data.arguments !== undefined) { - let data0 = data.arguments; - if (data0 && typeof data0 == "object" && !Array.isArray(data0)) { - for (const key1 in data0) { - const err1 = { - instancePath: instancePath + "/arguments", - schemaPath: "#/$defs/EmptyObject/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key1 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err1]; - } else { - vErrors.push(err1); - } - errors++; - } - } else { + if (data.field !== undefined) { + if (data.field !== null) { const err2 = { - instancePath: instancePath + "/arguments", - schemaPath: "#/$defs/EmptyObject/type", + instancePath: instancePath + "/field", + schemaPath: "#/properties/field/type", keyword: "type", - params: { type: "object" }, - message: "must be object", + params: { type: "null" }, + message: "must be null", }; if (vErrors === null) { vErrors = [err2]; @@ -31240,14 +37478,15 @@ function validate297( errors++; } } - if (data.constant !== undefined) { - if (data.constant !== null) { + if (data.kind !== undefined) { + let data1 = data.kind; + if (typeof data1 !== "string") { const err3 = { - instancePath: instancePath + "/constant", - schemaPath: "#/properties/constant/type", + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/type", keyword: "type", - params: { type: "null" }, - message: "must be null", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { vErrors = [err3]; @@ -31256,15 +37495,13 @@ function validate297( } errors++; } - } - if (data.expression !== undefined) { - if (data.expression !== null) { + if ("not_null" !== data1) { const err4 = { - instancePath: instancePath + "/expression", - schemaPath: "#/properties/expression/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/const", + keyword: "const", + params: { allowedValue: "not_null" }, + message: "must be equal to constant", }; if (vErrors === null) { vErrors = [err4]; @@ -31274,11 +37511,25 @@ function validate297( errors++; } } - if (data.function !== undefined) { - if (data.function !== null) { + if (data.metadata !== undefined) { + if ( + !validate305(data.metadata, { + instancePath: instancePath + "/metadata", + parentData: data, + parentDataProperty: "metadata", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); + errors = vErrors.length; + } + } + if (data.to !== undefined) { + if (data.to !== null) { const err5 = { - instancePath: instancePath + "/function", - schemaPath: "#/properties/function/type", + instancePath: instancePath + "/to", + schemaPath: "#/properties/to/type", keyword: "type", params: { type: "null" }, message: "must be null", @@ -31291,31 +37542,28 @@ function validate297( errors++; } } - if (data.inputs !== undefined) { - let data4 = data.inputs; + if (data.values !== undefined) { + let data4 = data.values; if (Array.isArray(data4)) { - const len0 = data4.length; - for (let i0 = 0; i0 < len0; i0++) { - if (typeof data4[i0] !== "string") { - const err6 = { - instancePath: instancePath + "/inputs/" + i0, - schemaPath: "#/properties/inputs/items/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err6]; - } else { - vErrors.push(err6); - } - errors++; + if (data4.length > 0) { + const err6 = { + instancePath: instancePath + "/values", + schemaPath: "#/properties/values/maxItems", + keyword: "maxItems", + params: { limit: 0 }, + message: "must NOT have more than 0 items", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); } + errors++; } } else { const err7 = { - instancePath: instancePath + "/inputs", - schemaPath: "#/properties/inputs/type", + instancePath: instancePath + "/values", + schemaPath: "#/properties/values/type", keyword: "type", params: { type: "array" }, message: "must be array", @@ -31328,55 +37576,8 @@ function validate297( errors++; } } - if (data.kind !== undefined) { - let data6 = data.kind; - if (typeof data6 !== "string") { - const err8 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err8]; - } else { - vErrors.push(err8); - } - errors++; - } - if ("direct" !== data6) { - const err9 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/const", - keyword: "const", - params: { allowedValue: "direct" }, - message: "must be equal to constant", - }; - if (vErrors === null) { - vErrors = [err9]; - } else { - vErrors.push(err9); - } - errors++; - } - } - if (data.metadata !== undefined) { - if ( - !validate291(data.metadata, { - instancePath: instancePath + "/metadata", - parentData: data, - parentDataProperty: "metadata", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); - errors = vErrors.length; - } - } } else { - const err10 = { + const err8 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -31384,40 +37585,38 @@ function validate297( message: "must be object", }; if (vErrors === null) { - vErrors = [err10]; + vErrors = [err8]; } else { - vErrors.push(err10); + vErrors.push(err8); } errors++; } - validate297.errors = vErrors; + validate342.errors = vErrors; return errors === 0; } -validate297.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate342.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema212 = { +const schema247 = { additionalProperties: false, properties: { - arguments: { $ref: "#/$defs/EmptyObject" }, - constant: { default: null, title: "Constant", type: "null" }, - expression: { minLength: 1, title: "Expression", type: "string" }, - function: { default: null, title: "Function", type: "null" }, - inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, - kind: { const: "expression", title: "Kind", type: "string" }, + field: { default: null, title: "Field", type: "null" }, + kind: { const: "unique", title: "Kind", type: "string" }, metadata: { $ref: "#/$defs/JsonObject" }, + to: { default: null, title: "To", type: "null" }, + values: { items: { $ref: "#/$defs/JsonValue" }, maxItems: 0, title: "Values", type: "array" }, }, - required: ["kind", "expression"], - title: "ExpressionTransformation", + required: ["kind"], + title: "UniqueFieldTest", type: "object", }; -function validate300( +function validate345( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate300.evaluated; + const evaluated0 = validate345.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -31440,38 +37639,38 @@ function validate300( } errors++; } - if (data.expression === undefined) { - const err1 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "expression" }, - message: "must have required property '" + "expression" + "'", - }; - if (vErrors === null) { - vErrors = [err1]; - } else { - vErrors.push(err1); - } - errors++; - } for (const key0 in data) { if (!( - key0 === "arguments" || - key0 === "constant" || - key0 === "expression" || - key0 === "function" || - key0 === "inputs" || + key0 === "field" || key0 === "kind" || - key0 === "metadata" + key0 === "metadata" || + key0 === "to" || + key0 === "values" )) { - const err2 = { + const err1 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties", }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + } + if (data.field !== undefined) { + if (data.field !== null) { + const err2 = { + instancePath: instancePath + "/field", + schemaPath: "#/properties/field/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; if (vErrors === null) { vErrors = [err2]; } else { @@ -31480,31 +37679,30 @@ function validate300( errors++; } } - if (data.arguments !== undefined) { - let data0 = data.arguments; - if (data0 && typeof data0 == "object" && !Array.isArray(data0)) { - for (const key1 in data0) { - const err3 = { - instancePath: instancePath + "/arguments", - schemaPath: "#/$defs/EmptyObject/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key1 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err3]; - } else { - vErrors.push(err3); - } - errors++; + if (data.kind !== undefined) { + let data1 = data.kind; + if (typeof data1 !== "string") { + const err3 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); } - } else { + errors++; + } + if ("unique" !== data1) { const err4 = { - instancePath: instancePath + "/arguments", - schemaPath: "#/$defs/EmptyObject/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/const", + keyword: "const", + params: { allowedValue: "unique" }, + message: "must be equal to constant", }; if (vErrors === null) { vErrors = [err4]; @@ -31514,11 +37712,25 @@ function validate300( errors++; } } - if (data.constant !== undefined) { - if (data.constant !== null) { + if (data.metadata !== undefined) { + if ( + !validate305(data.metadata, { + instancePath: instancePath + "/metadata", + parentData: data, + parentDataProperty: "metadata", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); + errors = vErrors.length; + } + } + if (data.to !== undefined) { + if (data.to !== null) { const err5 = { - instancePath: instancePath + "/constant", - schemaPath: "#/properties/constant/type", + instancePath: instancePath + "/to", + schemaPath: "#/properties/to/type", keyword: "type", params: { type: "null" }, message: "must be null", @@ -31531,16 +37743,16 @@ function validate300( errors++; } } - if (data.expression !== undefined) { - let data2 = data.expression; - if (typeof data2 === "string") { - if (func2(data2) < 1) { + if (data.values !== undefined) { + let data4 = data.values; + if (Array.isArray(data4)) { + if (data4.length > 0) { const err6 = { - instancePath: instancePath + "/expression", - schemaPath: "#/properties/expression/minLength", - keyword: "minLength", - params: { limit: 1 }, - message: "must NOT have fewer than 1 characters", + instancePath: instancePath + "/values", + schemaPath: "#/properties/values/maxItems", + keyword: "maxItems", + params: { limit: 0 }, + message: "must NOT have more than 0 items", }; if (vErrors === null) { vErrors = [err6]; @@ -31551,123 +37763,22 @@ function validate300( } } else { const err7 = { - instancePath: instancePath + "/expression", - schemaPath: "#/properties/expression/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; - } - } - if (data.function !== undefined) { - if (data.function !== null) { - const err8 = { - instancePath: instancePath + "/function", - schemaPath: "#/properties/function/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err8]; - } else { - vErrors.push(err8); - } - errors++; - } - } - if (data.inputs !== undefined) { - let data4 = data.inputs; - if (Array.isArray(data4)) { - const len0 = data4.length; - for (let i0 = 0; i0 < len0; i0++) { - if (typeof data4[i0] !== "string") { - const err9 = { - instancePath: instancePath + "/inputs/" + i0, - schemaPath: "#/properties/inputs/items/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err9]; - } else { - vErrors.push(err9); - } - errors++; - } - } - } else { - const err10 = { - instancePath: instancePath + "/inputs", - schemaPath: "#/properties/inputs/type", + instancePath: instancePath + "/values", + schemaPath: "#/properties/values/type", keyword: "type", params: { type: "array" }, message: "must be array", }; if (vErrors === null) { - vErrors = [err10]; - } else { - vErrors.push(err10); - } - errors++; - } - } - if (data.kind !== undefined) { - let data6 = data.kind; - if (typeof data6 !== "string") { - const err11 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err11]; - } else { - vErrors.push(err11); - } - errors++; - } - if ("expression" !== data6) { - const err12 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/const", - keyword: "const", - params: { allowedValue: "expression" }, - message: "must be equal to constant", - }; - if (vErrors === null) { - vErrors = [err12]; + vErrors = [err7]; } else { - vErrors.push(err12); + vErrors.push(err7); } errors++; } } - if (data.metadata !== undefined) { - if ( - !validate291(data.metadata, { - instancePath: instancePath + "/metadata", - parentData: data, - parentDataProperty: "metadata", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); - errors = vErrors.length; - } - } } else { - const err13 = { + const err8 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -31675,40 +37786,38 @@ function validate300( message: "must be object", }; if (vErrors === null) { - vErrors = [err13]; + vErrors = [err8]; } else { - vErrors.push(err13); + vErrors.push(err8); } errors++; } - validate300.errors = vErrors; + validate345.errors = vErrors; return errors === 0; } -validate300.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate345.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema214 = { +const schema249 = { additionalProperties: false, properties: { - arguments: { $ref: "#/$defs/EmptyObject" }, - constant: { $ref: "#/$defs/JsonValue" }, - expression: { default: null, title: "Expression", type: "null" }, - function: { default: null, title: "Function", type: "null" }, - inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, - kind: { const: "constant", title: "Kind", type: "string" }, + field: { default: null, title: "Field", type: "null" }, + kind: { const: "accepted_values", title: "Kind", type: "string" }, metadata: { $ref: "#/$defs/JsonObject" }, + to: { default: null, title: "To", type: "null" }, + values: { items: { $ref: "#/$defs/JsonValue" }, minItems: 1, title: "Values", type: "array" }, }, - required: ["kind", "constant"], - title: "ConstantTransformation", + required: ["kind", "values"], + title: "AcceptedValuesFieldTest", type: "object", }; -function validate303( +function validate348( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate303.evaluated; + const evaluated0 = validate348.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -31731,13 +37840,13 @@ function validate303( } errors++; } - if (data.constant === undefined) { + if (data.values === undefined) { const err1 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "constant" }, - message: "must have required property '" + "constant" + "'", + params: { missingProperty: "values" }, + message: "must have required property '" + "values" + "'", }; if (vErrors === null) { vErrors = [err1]; @@ -31748,13 +37857,11 @@ function validate303( } for (const key0 in data) { if (!( - key0 === "arguments" || - key0 === "constant" || - key0 === "expression" || - key0 === "function" || - key0 === "inputs" || + key0 === "field" || key0 === "kind" || - key0 === "metadata" + key0 === "metadata" || + key0 === "to" || + key0 === "values" )) { const err2 = { instancePath, @@ -31771,31 +37878,32 @@ function validate303( errors++; } } - if (data.arguments !== undefined) { - let data0 = data.arguments; - if (data0 && typeof data0 == "object" && !Array.isArray(data0)) { - for (const key1 in data0) { - const err3 = { - instancePath: instancePath + "/arguments", - schemaPath: "#/$defs/EmptyObject/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key1 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err3]; - } else { - vErrors.push(err3); - } - errors++; + if (data.field !== undefined) { + if (data.field !== null) { + const err3 = { + instancePath: instancePath + "/field", + schemaPath: "#/properties/field/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); } - } else { + errors++; + } + } + if (data.kind !== undefined) { + let data1 = data.kind; + if (typeof data1 !== "string") { const err4 = { - instancePath: instancePath + "/arguments", - schemaPath: "#/$defs/EmptyObject/type", + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/type", keyword: "type", - params: { type: "object" }, - message: "must be object", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { vErrors = [err4]; @@ -31804,15 +37912,13 @@ function validate303( } errors++; } - } - if (data.expression !== undefined) { - if (data.expression !== null) { + if ("accepted_values" !== data1) { const err5 = { - instancePath: instancePath + "/expression", - schemaPath: "#/properties/expression/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/const", + keyword: "const", + params: { allowedValue: "accepted_values" }, + message: "must be equal to constant", }; if (vErrors === null) { vErrors = [err5]; @@ -31822,11 +37928,25 @@ function validate303( errors++; } } - if (data.function !== undefined) { - if (data.function !== null) { + if (data.metadata !== undefined) { + if ( + !validate305(data.metadata, { + instancePath: instancePath + "/metadata", + parentData: data, + parentDataProperty: "metadata", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); + errors = vErrors.length; + } + } + if (data.to !== undefined) { + if (data.to !== null) { const err6 = { - instancePath: instancePath + "/function", - schemaPath: "#/properties/function/type", + instancePath: instancePath + "/to", + schemaPath: "#/properties/to/type", keyword: "type", params: { type: "null" }, message: "must be null", @@ -31839,92 +37959,42 @@ function validate303( errors++; } } - if (data.inputs !== undefined) { - let data4 = data.inputs; + if (data.values !== undefined) { + let data4 = data.values; if (Array.isArray(data4)) { - const len0 = data4.length; - for (let i0 = 0; i0 < len0; i0++) { - if (typeof data4[i0] !== "string") { - const err7 = { - instancePath: instancePath + "/inputs/" + i0, - schemaPath: "#/properties/inputs/items/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; + if (data4.length < 1) { + const err7 = { + instancePath: instancePath + "/values", + schemaPath: "#/properties/values/minItems", + keyword: "minItems", + params: { limit: 1 }, + message: "must NOT have fewer than 1 items", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); } + errors++; } } else { const err8 = { - instancePath: instancePath + "/inputs", - schemaPath: "#/properties/inputs/type", + instancePath: instancePath + "/values", + schemaPath: "#/properties/values/type", keyword: "type", params: { type: "array" }, message: "must be array", }; if (vErrors === null) { - vErrors = [err8]; - } else { - vErrors.push(err8); - } - errors++; - } - } - if (data.kind !== undefined) { - let data6 = data.kind; - if (typeof data6 !== "string") { - const err9 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err9]; - } else { - vErrors.push(err9); - } - errors++; - } - if ("constant" !== data6) { - const err10 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/const", - keyword: "const", - params: { allowedValue: "constant" }, - message: "must be equal to constant", - }; - if (vErrors === null) { - vErrors = [err10]; - } else { - vErrors.push(err10); - } - errors++; - } - } - if (data.metadata !== undefined) { - if ( - !validate291(data.metadata, { - instancePath: instancePath + "/metadata", - parentData: data, - parentDataProperty: "metadata", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); - errors = vErrors.length; + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; } } } else { - const err11 = { + const err9 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -31932,44 +38002,38 @@ function validate303( message: "must be object", }; if (vErrors === null) { - vErrors = [err11]; + vErrors = [err9]; } else { - vErrors.push(err11); + vErrors.push(err9); } errors++; } - validate303.errors = vErrors; + validate348.errors = vErrors; return errors === 0; } -validate303.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate348.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema217 = { +const schema251 = { additionalProperties: false, properties: { - arguments: { $ref: "#/$defs/JsonObject" }, - constant: { default: null, title: "Constant", type: "null" }, - expression: { default: null, title: "Expression", type: "null" }, - function: { - pattern: "^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*$", - title: "Function", - type: "string", - }, - inputs: { items: { type: "string" }, title: "Inputs", type: "array" }, - kind: { const: "custom_code", title: "Kind", type: "string" }, + field: { minLength: 1, title: "Field", type: "string" }, + kind: { const: "relationships", title: "Kind", type: "string" }, metadata: { $ref: "#/$defs/JsonObject" }, + to: { minLength: 1, title: "To", type: "string" }, + values: { items: { $ref: "#/$defs/JsonValue" }, maxItems: 0, title: "Values", type: "array" }, }, - required: ["kind", "function"], - title: "CustomCodeTransformation", + required: ["kind", "to", "field"], + title: "RelationshipsFieldTest", type: "object", }; -function validate306( +function validate351( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate306.evaluated; + const evaluated0 = validate351.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -31992,13 +38056,13 @@ function validate306( } errors++; } - if (data.function === undefined) { + if (data.to === undefined) { const err1 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "function" }, - message: "must have required property '" + "function" + "'", + params: { missingProperty: "to" }, + message: "must have required property '" + "to" + "'", }; if (vErrors === null) { vErrors = [err1]; @@ -32007,54 +38071,36 @@ function validate306( } errors++; } + if (data.field === undefined) { + const err2 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "field" }, + message: "must have required property '" + "field" + "'", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } for (const key0 in data) { if (!( - key0 === "arguments" || - key0 === "constant" || - key0 === "expression" || - key0 === "function" || - key0 === "inputs" || + key0 === "field" || key0 === "kind" || - key0 === "metadata" + key0 === "metadata" || + key0 === "to" || + key0 === "values" )) { - const err2 = { + const err3 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties", }; - if (vErrors === null) { - vErrors = [err2]; - } else { - vErrors.push(err2); - } - errors++; - } - } - if (data.arguments !== undefined) { - if ( - !validate291(data.arguments, { - instancePath: instancePath + "/arguments", - parentData: data, - parentDataProperty: "arguments", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); - errors = vErrors.length; - } - } - if (data.constant !== undefined) { - if (data.constant !== null) { - const err3 = { - instancePath: instancePath + "/constant", - schemaPath: "#/properties/constant/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; if (vErrors === null) { vErrors = [err3]; } else { @@ -32063,99 +38109,44 @@ function validate306( errors++; } } - if (data.expression !== undefined) { - if (data.expression !== null) { - const err4 = { - instancePath: instancePath + "/expression", - schemaPath: "#/properties/expression/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err4]; - } else { - vErrors.push(err4); - } - errors++; - } - } - if (data.function !== undefined) { - let data3 = data.function; - if (typeof data3 === "string") { - if (!pattern7.test(data3)) { - const err5 = { - instancePath: instancePath + "/function", - schemaPath: "#/properties/function/pattern", - keyword: "pattern", - params: { pattern: "^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*$" }, - message: - 'must match pattern "' + "^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z_][A-Za-z0-9_]*)*$" + '"', + if (data.field !== undefined) { + let data0 = data.field; + if (typeof data0 === "string") { + if (func3(data0) < 1) { + const err4 = { + instancePath: instancePath + "/field", + schemaPath: "#/properties/field/minLength", + keyword: "minLength", + params: { limit: 1 }, + message: "must NOT have fewer than 1 characters", }; if (vErrors === null) { - vErrors = [err5]; + vErrors = [err4]; } else { - vErrors.push(err5); + vErrors.push(err4); } errors++; } } else { - const err6 = { - instancePath: instancePath + "/function", - schemaPath: "#/properties/function/type", + const err5 = { + instancePath: instancePath + "/field", + schemaPath: "#/properties/field/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err6]; - } else { - vErrors.push(err6); - } - errors++; - } - } - if (data.inputs !== undefined) { - let data4 = data.inputs; - if (Array.isArray(data4)) { - const len0 = data4.length; - for (let i0 = 0; i0 < len0; i0++) { - if (typeof data4[i0] !== "string") { - const err7 = { - instancePath: instancePath + "/inputs/" + i0, - schemaPath: "#/properties/inputs/items/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; - } - } - } else { - const err8 = { - instancePath: instancePath + "/inputs", - schemaPath: "#/properties/inputs/type", - keyword: "type", - params: { type: "array" }, - message: "must be array", - }; - if (vErrors === null) { - vErrors = [err8]; + vErrors = [err5]; } else { - vErrors.push(err8); + vErrors.push(err5); } errors++; } } if (data.kind !== undefined) { - let data6 = data.kind; - if (typeof data6 !== "string") { - const err9 = { + let data1 = data.kind; + if (typeof data1 !== "string") { + const err6 = { instancePath: instancePath + "/kind", schemaPath: "#/properties/kind/type", keyword: "type", @@ -32163,31 +38154,31 @@ function validate306( message: "must be string", }; if (vErrors === null) { - vErrors = [err9]; + vErrors = [err6]; } else { - vErrors.push(err9); + vErrors.push(err6); } errors++; } - if ("custom_code" !== data6) { - const err10 = { + if ("relationships" !== data1) { + const err7 = { instancePath: instancePath + "/kind", schemaPath: "#/properties/kind/const", keyword: "const", - params: { allowedValue: "custom_code" }, + params: { allowedValue: "relationships" }, message: "must be equal to constant", }; if (vErrors === null) { - vErrors = [err10]; + vErrors = [err7]; } else { - vErrors.push(err10); + vErrors.push(err7); } errors++; } } if (data.metadata !== undefined) { if ( - !validate291(data.metadata, { + !validate305(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -32195,12 +38186,80 @@ function validate306( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); errors = vErrors.length; } } + if (data.to !== undefined) { + let data3 = data.to; + if (typeof data3 === "string") { + if (func3(data3) < 1) { + const err8 = { + instancePath: instancePath + "/to", + schemaPath: "#/properties/to/minLength", + keyword: "minLength", + params: { limit: 1 }, + message: "must NOT have fewer than 1 characters", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } + } else { + const err9 = { + instancePath: instancePath + "/to", + schemaPath: "#/properties/to/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + } + if (data.values !== undefined) { + let data4 = data.values; + if (Array.isArray(data4)) { + if (data4.length > 0) { + const err10 = { + instancePath: instancePath + "/values", + schemaPath: "#/properties/values/maxItems", + keyword: "maxItems", + params: { limit: 0 }, + message: "must NOT have more than 0 items", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; + } + } else { + const err11 = { + instancePath: instancePath + "/values", + schemaPath: "#/properties/values/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } + } } else { - const err11 = { + const err12 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -32208,24 +38267,24 @@ function validate306( message: "must be object", }; if (vErrors === null) { - vErrors = [err11]; + vErrors = [err12]; } else { - vErrors.push(err11); + vErrors.push(err12); } errors++; } - validate306.errors = vErrors; + validate351.errors = vErrors; return errors === 0; } -validate306.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate351.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate296( +function validate341( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate296.evaluated; + const evaluated0 = validate341.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -32236,9 +38295,9 @@ function validate296( let valid0 = false; const _errs1 = errors; if ( - !validate297(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate342(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate297.errors : vErrors.concat(validate297.errors); + vErrors = vErrors === null ? validate342.errors : vErrors.concat(validate342.errors); errors = vErrors.length; } var _valid0 = _errs1 === errors; @@ -32248,9 +38307,9 @@ function validate296( } const _errs2 = errors; if ( - !validate300(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate345(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate300.errors : vErrors.concat(validate300.errors); + vErrors = vErrors === null ? validate345.errors : vErrors.concat(validate345.errors); errors = vErrors.length; } var _valid0 = _errs2 === errors; @@ -32262,9 +38321,9 @@ function validate296( } const _errs3 = errors; if ( - !validate303(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate348(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate303.errors : vErrors.concat(validate303.errors); + vErrors = vErrors === null ? validate348.errors : vErrors.concat(validate348.errors); errors = vErrors.length; } var _valid0 = _errs3 === errors; @@ -32276,9 +38335,9 @@ function validate296( } const _errs4 = errors; if ( - !validate306(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate351(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate306.errors : vErrors.concat(validate306.errors); + vErrors = vErrors === null ? validate351.errors : vErrors.concat(validate351.errors); errors = vErrors.length; } var _valid0 = _errs4 === errors; @@ -32293,267 +38352,38 @@ function validate296( instancePath, schemaPath: "#/anyOf", keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); - } - errors++; - } else { - errors = _errs0; - if (vErrors !== null) { - if (_errs0) { - vErrors.length = _errs0; - } else { - vErrors = null; - } - } - } - validate296.errors = vErrors; - evaluated0.props = props0; - return errors === 0; -} -validate296.evaluated = { dynamicProps: true, dynamicItems: false }; - -function validate294( - data, - { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, -) { - let vErrors = null; - let errors = 0; - const evaluated0 = validate294.evaluated; - if (evaluated0.dynamicProps) { - evaluated0.props = undefined; - } - if (evaluated0.dynamicItems) { - evaluated0.items = undefined; - } - if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.target === undefined) { - const err0 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "target" }, - message: "must have required property '" + "target" + "'", - }; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); - } - errors++; - } - for (const key0 in data) { - if (!( - key0 === "metadata" || - key0 === "source" || - key0 === "target" || - key0 === "transformation" - )) { - const err1 = { - instancePath, - schemaPath: "#/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key0 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err1]; - } else { - vErrors.push(err1); - } - errors++; - } - } - if (data.metadata !== undefined) { - if ( - !validate291(data.metadata, { - instancePath: instancePath + "/metadata", - parentData: data, - parentDataProperty: "metadata", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); - errors = vErrors.length; - } - } - if (data.source !== undefined) { - let data1 = data.source; - const _errs4 = errors; - let valid1 = false; - const _errs5 = errors; - if (typeof data1 !== "string") { - const err2 = { - instancePath: instancePath + "/source", - schemaPath: "#/properties/source/anyOf/0/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err2]; - } else { - vErrors.push(err2); - } - errors++; - } - var _valid0 = _errs5 === errors; - valid1 = valid1 || _valid0; - const _errs7 = errors; - if (data1 !== null) { - const err3 = { - instancePath: instancePath + "/source", - schemaPath: "#/properties/source/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err3]; - } else { - vErrors.push(err3); - } - errors++; - } - var _valid0 = _errs7 === errors; - valid1 = valid1 || _valid0; - if (!valid1) { - const err4 = { - instancePath: instancePath + "/source", - schemaPath: "#/properties/source/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; - if (vErrors === null) { - vErrors = [err4]; - } else { - vErrors.push(err4); - } - errors++; - } else { - errors = _errs4; - if (vErrors !== null) { - if (_errs4) { - vErrors.length = _errs4; - } else { - vErrors = null; - } - } - } - } - if (data.target !== undefined) { - if (typeof data.target !== "string") { - const err5 = { - instancePath: instancePath + "/target", - schemaPath: "#/properties/target/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err5]; - } else { - vErrors.push(err5); - } - errors++; - } - } - if (data.transformation !== undefined) { - let data3 = data.transformation; - const _errs12 = errors; - let valid2 = false; - const _errs13 = errors; - if ( - !validate296(data3, { - instancePath: instancePath + "/transformation", - parentData: data, - parentDataProperty: "transformation", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate296.errors : vErrors.concat(validate296.errors); - errors = vErrors.length; - } - var _valid1 = _errs13 === errors; - valid2 = valid2 || _valid1; - const _errs14 = errors; - if (data3 !== null) { - const err6 = { - instancePath: instancePath + "/transformation", - schemaPath: "#/properties/transformation/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err6]; - } else { - vErrors.push(err6); - } - errors++; - } - var _valid1 = _errs14 === errors; - valid2 = valid2 || _valid1; - if (!valid2) { - const err7 = { - instancePath: instancePath + "/transformation", - schemaPath: "#/properties/transformation/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; - } else { - errors = _errs12; - if (vErrors !== null) { - if (_errs12) { - vErrors.length = _errs12; - } else { - vErrors = null; - } - } - } - } - } else { - const err8 = { - instancePath, - schemaPath: "#/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", + params: {}, + message: "must match a schema in anyOf", }; if (vErrors === null) { - vErrors = [err8]; + vErrors = [err0]; } else { - vErrors.push(err8); + vErrors.push(err0); } errors++; + } else { + errors = _errs0; + if (vErrors !== null) { + if (_errs0) { + vErrors.length = _errs0; + } else { + vErrors = null; + } + } } - validate294.errors = vErrors; + validate341.errors = vErrors; + evaluated0.props = props0; return errors === 0; } -validate294.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate341.evaluated = { dynamicProps: true, dynamicItems: false }; -function validate289( +function validate339( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate289.evaluated; + const evaluated0 = validate339.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -32561,13 +38391,13 @@ function validate289( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.from === undefined) { + if (data.name === undefined) { const err0 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "from" }, - message: "must have required property '" + "from" + "'", + params: { missingProperty: "name" }, + message: "must have required property '" + "name" + "'", }; if (vErrors === null) { vErrors = [err0]; @@ -32576,13 +38406,13 @@ function validate289( } errors++; } - if (data.to === undefined) { + if (data.type === undefined) { const err1 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "to" }, - message: "must have required property '" + "to" + "'", + params: { missingProperty: "type" }, + message: "must have required property '" + "type" + "'", }; if (vErrors === null) { vErrors = [err1]; @@ -32593,11 +38423,14 @@ function validate289( } for (const key0 in data) { if (!( - key0 === "from" || - key0 === "join" || - key0 === "mappings" || + key0 === "cast_to" || + key0 === "description" || + key0 === "extensions" || key0 === "metadata" || - key0 === "to" + key0 === "name" || + key0 === "nullable" || + key0 === "tests" || + key0 === "type" )) { const err2 = { instancePath, @@ -32614,11 +38447,15 @@ function validate289( errors++; } } - if (data.from !== undefined) { - if (typeof data.from !== "string") { + if (data.cast_to !== undefined) { + let data0 = data.cast_to; + const _errs3 = errors; + let valid1 = false; + const _errs4 = errors; + if (typeof data0 !== "string") { const err3 = { - instancePath: instancePath + "/from", - schemaPath: "#/properties/from/type", + instancePath: instancePath + "/cast_to", + schemaPath: "#/properties/cast_to/anyOf/0/type", keyword: "type", params: { type: "string" }, message: "must be string", @@ -32630,31 +38467,13 @@ function validate289( } errors++; } - } - if (data.join !== undefined) { - let data1 = data.join; - const _errs5 = errors; - let valid1 = false; - const _errs6 = errors; - if ( - !validate290(data1, { - instancePath: instancePath + "/join", - parentData: data, - parentDataProperty: "join", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate290.errors : vErrors.concat(validate290.errors); - errors = vErrors.length; - } - var _valid0 = _errs6 === errors; + var _valid0 = _errs4 === errors; valid1 = valid1 || _valid0; - const _errs7 = errors; - if (data1 !== null) { + const _errs6 = errors; + if (data0 !== null) { const err4 = { - instancePath: instancePath + "/join", - schemaPath: "#/properties/join/anyOf/1/type", + instancePath: instancePath + "/cast_to", + schemaPath: "#/properties/cast_to/anyOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null", @@ -32666,12 +38485,12 @@ function validate289( } errors++; } - var _valid0 = _errs7 === errors; + var _valid0 = _errs6 === errors; valid1 = valid1 || _valid0; if (!valid1) { const err5 = { - instancePath: instancePath + "/join", - schemaPath: "#/properties/join/anyOf", + instancePath: instancePath + "/cast_to", + schemaPath: "#/properties/cast_to/anyOf", keyword: "anyOf", params: {}, message: "must match a schema in anyOf", @@ -32683,41 +38502,28 @@ function validate289( } errors++; } else { - errors = _errs5; + errors = _errs3; if (vErrors !== null) { - if (_errs5) { - vErrors.length = _errs5; + if (_errs3) { + vErrors.length = _errs3; } else { vErrors = null; } } } } - if (data.mappings !== undefined) { - let data2 = data.mappings; - if (Array.isArray(data2)) { - const len0 = data2.length; - for (let i0 = 0; i0 < len0; i0++) { - if ( - !validate294(data2[i0], { - instancePath: instancePath + "/mappings/" + i0, - parentData: data2, - parentDataProperty: i0, - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate294.errors : vErrors.concat(validate294.errors); - errors = vErrors.length; - } - } - } else { + if (data.description !== undefined) { + let data1 = data.description; + const _errs9 = errors; + let valid2 = false; + const _errs10 = errors; + if (typeof data1 !== "string") { const err6 = { - instancePath: instancePath + "/mappings", - schemaPath: "#/properties/mappings/type", + instancePath: instancePath + "/description", + schemaPath: "#/properties/description/anyOf/0/type", keyword: "type", - params: { type: "array" }, - message: "must be array", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { vErrors = [err6]; @@ -32726,29 +38532,16 @@ function validate289( } errors++; } - } - if (data.metadata !== undefined) { - if ( - !validate291(data.metadata, { - instancePath: instancePath + "/metadata", - parentData: data, - parentDataProperty: "metadata", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); - errors = vErrors.length; - } - } - if (data.to !== undefined) { - if (typeof data.to !== "string") { + var _valid1 = _errs10 === errors; + valid2 = valid2 || _valid1; + const _errs12 = errors; + if (data1 !== null) { const err7 = { - instancePath: instancePath + "/to", - schemaPath: "#/properties/to/type", + instancePath: instancePath + "/description", + schemaPath: "#/properties/description/anyOf/1/type", keyword: "type", - params: { type: "string" }, - message: "must be string", + params: { type: "null" }, + message: "must be null", }; if (vErrors === null) { vErrors = [err7]; @@ -32757,329 +38550,370 @@ function validate289( } errors++; } + var _valid1 = _errs12 === errors; + valid2 = valid2 || _valid1; + if (!valid2) { + const err8 = { + instancePath: instancePath + "/description", + schemaPath: "#/properties/description/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } else { + errors = _errs9; + if (vErrors !== null) { + if (_errs9) { + vErrors.length = _errs9; + } else { + vErrors = null; + } + } + } } - } else { - const err8 = { - instancePath, - schemaPath: "#/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", - }; - if (vErrors === null) { - vErrors = [err8]; - } else { - vErrors.push(err8); - } - errors++; - } - validate289.errors = vErrors; - return errors === 0; -} -validate289.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -const schema218 = { - anyOf: [ - { $ref: "#/$defs/SourceNodeDocument" }, - { $ref: "#/$defs/TransformNodeDocument" }, - { $ref: "#/$defs/TargetNodeDocument" }, - { $ref: "#/$defs/ExtensionNodeDocument" }, - ], -}; -const schema219 = { - additionalProperties: false, - not: { required: ["config", "params"] }, - properties: { - config: { $ref: "#/$defs/SourceNodeConfigDocument" }, - cursor: { - anyOf: [{ $ref: "#/$defs/CursorStrategyDocument" }, { type: "null" }], - default: null, - }, - fields: { items: { $ref: "#/$defs/NodeFieldDocument" }, title: "Fields", type: "array" }, - id: { title: "Id", type: "string" }, - name: { title: "Name", type: "string" }, - params: { - anyOf: [{ $ref: "#/$defs/SourceNodeConfigDocument" }, { type: "null" }], - default: null, - deprecated: true, - "x-dander-canonical-name": "config", - }, - trigger: { anyOf: [{ $ref: "#/$defs/TriggerDocument" }, { type: "null" }], default: null }, - type: { const: "source", title: "Type", type: "string" }, - visual: { anyOf: [{ $ref: "#/$defs/NodeVisualDocument" }, { type: "null" }], default: null }, - }, - required: ["id", "type", "name"], - title: "SourceNodeDocument", - type: "object", -}; -const schema220 = { - additionalProperties: { $ref: "#/$defs/JsonValue" }, - properties: { - connector: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Connector" }, - endpoint: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Endpoint" }, - request: { anyOf: [{ $ref: "#/$defs/RequestSpecDocument" }, { type: "null" }], default: null }, - }, - title: "SourceNodeConfigDocument", - type: "object", -}; -const schema222 = { - additionalProperties: false, - properties: { - body: { - anyOf: [{ $ref: "#/$defs/JsonObject" }, { type: "string" }, { type: "null" }], - default: null, - title: "Body", - }, - headers: { additionalProperties: { type: "string" }, title: "Headers", type: "object" }, - method: { $ref: "#/$defs/HttpMethod", default: "GET" }, - query_params: { - additionalProperties: { type: "string" }, - title: "Query Params", - type: "object", - }, - }, - title: "RequestSpecDocument", - type: "object", -}; -const schema223 = { - description: - "The closed set of HTTP methods a `RequestSpec` may declare.\n\nA `StrEnum` (matching the `TransformationKind`/`JoinType` convention in `graph.py`) so callers\nget a named, importable type that still serializes to/from its plain string value stably in\nYAML and JSON. An out-of-set value fails validation with a clear error at the Pydantic\nboundary. `HEAD`/`OPTIONS` are intentionally omitted (no source currently needs them); extend\nby adding a member later without touching callers.\n\nAttributes:\n GET: Retrieve a resource. The default method (a simple GET needs no explicit spec).\n POST: Create a resource / submit a query body.\n PUT: Replace a resource.\n PATCH: Partially update a resource.\n DELETE: Remove a resource.", - enum: ["GET", "POST", "PUT", "PATCH", "DELETE"], - title: "HttpMethod", - type: "string", -}; - -function validate317( - data, - { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, -) { - let vErrors = null; - let errors = 0; - const evaluated0 = validate317.evaluated; - if (evaluated0.dynamicProps) { - evaluated0.props = undefined; - } - if (evaluated0.dynamicItems) { - evaluated0.items = undefined; - } - if (data && typeof data == "object" && !Array.isArray(data)) { - for (const key0 in data) { - if (!( - key0 === "body" || - key0 === "headers" || - key0 === "method" || - key0 === "query_params" - )) { - const err0 = { - instancePath, - schemaPath: "#/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key0 }, - message: "must NOT have additional properties", + if (data.extensions !== undefined) { + let data2 = data.extensions; + if (Array.isArray(data2)) { + const len0 = data2.length; + for (let i0 = 0; i0 < len0; i0++) { + let data3 = data2[i0]; + if (data3 && typeof data3 == "object" && !Array.isArray(data3)) { + if (data3.provider === undefined) { + const err9 = { + instancePath: instancePath + "/extensions/" + i0, + schemaPath: "#/$defs/ProviderExtension/required", + keyword: "required", + params: { missingProperty: "provider" }, + message: "must have required property '" + "provider" + "'", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + if (data3.name === undefined) { + const err10 = { + instancePath: instancePath + "/extensions/" + i0, + schemaPath: "#/$defs/ProviderExtension/required", + keyword: "required", + params: { missingProperty: "name" }, + message: "must have required property '" + "name" + "'", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; + } + if (data3.value === undefined) { + const err11 = { + instancePath: instancePath + "/extensions/" + i0, + schemaPath: "#/$defs/ProviderExtension/required", + keyword: "required", + params: { missingProperty: "value" }, + message: "must have required property '" + "value" + "'", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } + for (const key1 in data3) { + if (!(key1 === "name" || key1 === "provider" || key1 === "value")) { + const err12 = { + instancePath: instancePath + "/extensions/" + i0, + schemaPath: "#/$defs/ProviderExtension/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err12]; + } else { + vErrors.push(err12); + } + errors++; + } + } + if (data3.name !== undefined) { + if (typeof data3.name !== "string") { + const err13 = { + instancePath: instancePath + "/extensions/" + i0 + "/name", + schemaPath: "#/$defs/ProviderExtension/properties/name/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err13]; + } else { + vErrors.push(err13); + } + errors++; + } + } + if (data3.provider !== undefined) { + if (typeof data3.provider !== "string") { + const err14 = { + instancePath: instancePath + "/extensions/" + i0 + "/provider", + schemaPath: "#/$defs/ProviderExtension/properties/provider/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err14]; + } else { + vErrors.push(err14); + } + errors++; + } + } + if (data3.value !== undefined) { + let data6 = data3.value; + const _errs25 = errors; + let valid7 = false; + const _errs26 = errors; + if (typeof data6 !== "string") { + const err15 = { + instancePath: instancePath + "/extensions/" + i0 + "/value", + schemaPath: "#/$defs/ProviderExtension/properties/value/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err15]; + } else { + vErrors.push(err15); + } + errors++; + } + var _valid2 = _errs26 === errors; + valid7 = valid7 || _valid2; + const _errs28 = errors; + if (!(typeof data6 == "number" && !(data6 % 1) && !isNaN(data6) && isFinite(data6))) { + const err16 = { + instancePath: instancePath + "/extensions/" + i0 + "/value", + schemaPath: "#/$defs/ProviderExtension/properties/value/anyOf/1/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err16]; + } else { + vErrors.push(err16); + } + errors++; + } + var _valid2 = _errs28 === errors; + valid7 = valid7 || _valid2; + const _errs30 = errors; + if (!(typeof data6 == "number" && isFinite(data6))) { + const err17 = { + instancePath: instancePath + "/extensions/" + i0 + "/value", + schemaPath: "#/$defs/ProviderExtension/properties/value/anyOf/2/type", + keyword: "type", + params: { type: "number" }, + message: "must be number", + }; + if (vErrors === null) { + vErrors = [err17]; + } else { + vErrors.push(err17); + } + errors++; + } + var _valid2 = _errs30 === errors; + valid7 = valid7 || _valid2; + const _errs32 = errors; + if (typeof data6 !== "boolean") { + const err18 = { + instancePath: instancePath + "/extensions/" + i0 + "/value", + schemaPath: "#/$defs/ProviderExtension/properties/value/anyOf/3/type", + keyword: "type", + params: { type: "boolean" }, + message: "must be boolean", + }; + if (vErrors === null) { + vErrors = [err18]; + } else { + vErrors.push(err18); + } + errors++; + } + var _valid2 = _errs32 === errors; + valid7 = valid7 || _valid2; + if (!valid7) { + const err19 = { + instancePath: instancePath + "/extensions/" + i0 + "/value", + schemaPath: "#/$defs/ProviderExtension/properties/value/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err19]; + } else { + vErrors.push(err19); + } + errors++; + } else { + errors = _errs25; + if (vErrors !== null) { + if (_errs25) { + vErrors.length = _errs25; + } else { + vErrors = null; + } + } + } + } + } else { + const err20 = { + instancePath: instancePath + "/extensions/" + i0, + schemaPath: "#/$defs/ProviderExtension/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err20]; + } else { + vErrors.push(err20); + } + errors++; + } + } + } else { + const err21 = { + instancePath: instancePath + "/extensions", + schemaPath: "#/properties/extensions/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", }; if (vErrors === null) { - vErrors = [err0]; + vErrors = [err21]; } else { - vErrors.push(err0); + vErrors.push(err21); } errors++; } } - if (data.body !== undefined) { - let data0 = data.body; - const _errs3 = errors; - let valid1 = false; - const _errs4 = errors; + if (data.metadata !== undefined) { if ( - !validate291(data0, { - instancePath: instancePath + "/body", + !validate305(data.metadata, { + instancePath: instancePath + "/metadata", parentData: data, - parentDataProperty: "body", + parentDataProperty: "metadata", rootData, dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); errors = vErrors.length; } - var _valid0 = _errs4 === errors; - valid1 = valid1 || _valid0; - const _errs5 = errors; - if (typeof data0 !== "string") { - const err1 = { - instancePath: instancePath + "/body", - schemaPath: "#/properties/body/anyOf/1/type", + } + if (data.name !== undefined) { + if (typeof data.name !== "string") { + const err22 = { + instancePath: instancePath + "/name", + schemaPath: "#/properties/name/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err1]; + vErrors = [err22]; } else { - vErrors.push(err1); + vErrors.push(err22); } errors++; } - var _valid0 = _errs5 === errors; - valid1 = valid1 || _valid0; - const _errs7 = errors; - if (data0 !== null) { - const err2 = { - instancePath: instancePath + "/body", - schemaPath: "#/properties/body/anyOf/2/type", + } + if (data.nullable !== undefined) { + if (typeof data.nullable !== "boolean") { + const err23 = { + instancePath: instancePath + "/nullable", + schemaPath: "#/properties/nullable/type", keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err2]; - } else { - vErrors.push(err2); - } - errors++; - } - var _valid0 = _errs7 === errors; - valid1 = valid1 || _valid0; - if (!valid1) { - const err3 = { - instancePath: instancePath + "/body", - schemaPath: "#/properties/body/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", + params: { type: "boolean" }, + message: "must be boolean", }; if (vErrors === null) { - vErrors = [err3]; + vErrors = [err23]; } else { - vErrors.push(err3); + vErrors.push(err23); } errors++; - } else { - errors = _errs3; - if (vErrors !== null) { - if (_errs3) { - vErrors.length = _errs3; - } else { - vErrors = null; - } - } } } - if (data.headers !== undefined) { - let data1 = data.headers; - if (data1 && typeof data1 == "object" && !Array.isArray(data1)) { - for (const key1 in data1) { - if (typeof data1[key1] !== "string") { - const err4 = { - instancePath: - instancePath + "/headers/" + key1.replace(/~/g, "~0").replace(/\//g, "~1"), - schemaPath: "#/properties/headers/additionalProperties/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err4]; - } else { - vErrors.push(err4); - } - errors++; + if (data.tests !== undefined) { + let data10 = data.tests; + if (Array.isArray(data10)) { + const len1 = data10.length; + for (let i1 = 0; i1 < len1; i1++) { + if ( + !validate341(data10[i1], { + instancePath: instancePath + "/tests/" + i1, + parentData: data10, + parentDataProperty: i1, + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate341.errors : vErrors.concat(validate341.errors); + errors = vErrors.length; } } } else { - const err5 = { - instancePath: instancePath + "/headers", - schemaPath: "#/properties/headers/type", + const err24 = { + instancePath: instancePath + "/tests", + schemaPath: "#/properties/tests/type", keyword: "type", - params: { type: "object" }, - message: "must be object", + params: { type: "array" }, + message: "must be array", }; if (vErrors === null) { - vErrors = [err5]; + vErrors = [err24]; } else { - vErrors.push(err5); + vErrors.push(err24); } errors++; } } - if (data.method !== undefined) { - let data3 = data.method; - if (typeof data3 !== "string") { - const err6 = { - instancePath: instancePath + "/method", - schemaPath: "#/$defs/HttpMethod/type", + if (data.type !== undefined) { + if (typeof data.type !== "string") { + const err25 = { + instancePath: instancePath + "/type", + schemaPath: "#/properties/type/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err6]; - } else { - vErrors.push(err6); - } - errors++; - } - if (!( - data3 === "GET" || - data3 === "POST" || - data3 === "PUT" || - data3 === "PATCH" || - data3 === "DELETE" - )) { - const err7 = { - instancePath: instancePath + "/method", - schemaPath: "#/$defs/HttpMethod/enum", - keyword: "enum", - params: { allowedValues: schema223.enum }, - message: "must be equal to one of the allowed values", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; - } - } - if (data.query_params !== undefined) { - let data4 = data.query_params; - if (data4 && typeof data4 == "object" && !Array.isArray(data4)) { - for (const key2 in data4) { - if (typeof data4[key2] !== "string") { - const err8 = { - instancePath: - instancePath + "/query_params/" + key2.replace(/~/g, "~0").replace(/\//g, "~1"), - schemaPath: "#/properties/query_params/additionalProperties/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err8]; - } else { - vErrors.push(err8); - } - errors++; - } - } - } else { - const err9 = { - instancePath: instancePath + "/query_params", - schemaPath: "#/properties/query_params/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", - }; - if (vErrors === null) { - vErrors = [err9]; + vErrors = [err25]; } else { - vErrors.push(err9); + vErrors.push(err25); } errors++; } } } else { - const err10 = { + const err26 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -33087,24 +38921,45 @@ function validate317( message: "must be object", }; if (vErrors === null) { - vErrors = [err10]; + vErrors = [err26]; } else { - vErrors.push(err10); + vErrors.push(err26); } errors++; } - validate317.errors = vErrors; + validate339.errors = vErrors; return errors === 0; } -validate317.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate339.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +const schema253 = { + anyOf: [ + { $ref: "#/$defs/ScheduleTrigger" }, + { $ref: "#/$defs/DependencyTrigger" }, + { $ref: "#/$defs/ManualTrigger" }, + ], +}; +const schema254 = { + additionalProperties: false, + properties: { + cron: { minLength: 1, title: "Cron", type: "string" }, + depends_on: { items: { type: "string" }, maxItems: 0, title: "Depends On", type: "array" }, + event: { default: null, title: "Event", type: "null" }, + kind: { const: "schedule", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + }, + required: ["kind", "cron"], + title: "ScheduleTrigger", + type: "object", +}; -function validate316( +function validate358( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate316.evaluated; + const evaluated0 = validate358.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -33112,53 +38967,50 @@ function validate316( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.connector !== undefined) { - let data1 = data.connector; - const _errs4 = errors; - let valid3 = false; - const _errs5 = errors; - if (typeof data1 !== "string") { - const err0 = { - instancePath: instancePath + "/connector", - schemaPath: "#/properties/connector/anyOf/0/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); - } - errors++; + if (data.kind === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "kind" }, + message: "must have required property '" + "kind" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); } - var _valid0 = _errs5 === errors; - valid3 = valid3 || _valid0; - const _errs7 = errors; - if (data1 !== null) { - const err1 = { - instancePath: instancePath + "/connector", - schemaPath: "#/properties/connector/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err1]; - } else { - vErrors.push(err1); - } - errors++; + errors++; + } + if (data.cron === undefined) { + const err1 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "cron" }, + message: "must have required property '" + "cron" + "'", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); } - var _valid0 = _errs7 === errors; - valid3 = valid3 || _valid0; - if (!valid3) { + errors++; + } + for (const key0 in data) { + if (!( + key0 === "cron" || + key0 === "depends_on" || + key0 === "event" || + key0 === "kind" || + key0 === "metadata" + )) { const err2 = { - instancePath: instancePath + "/connector", - schemaPath: "#/properties/connector/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", }; if (vErrors === null) { vErrors = [err2]; @@ -33166,48 +39018,34 @@ function validate316( vErrors.push(err2); } errors++; - } else { - errors = _errs4; - if (vErrors !== null) { - if (_errs4) { - vErrors.length = _errs4; + } + } + if (data.cron !== undefined) { + let data0 = data.cron; + if (typeof data0 === "string") { + if (func3(data0) < 1) { + const err3 = { + instancePath: instancePath + "/cron", + schemaPath: "#/properties/cron/minLength", + keyword: "minLength", + params: { limit: 1 }, + message: "must NOT have fewer than 1 characters", + }; + if (vErrors === null) { + vErrors = [err3]; } else { - vErrors = null; + vErrors.push(err3); } + errors++; } - } - } - if (data.endpoint !== undefined) { - let data2 = data.endpoint; - const _errs10 = errors; - let valid4 = false; - const _errs11 = errors; - if (typeof data2 !== "string") { - const err3 = { - instancePath: instancePath + "/endpoint", - schemaPath: "#/properties/endpoint/anyOf/0/type", + } else { + const err4 = { + instancePath: instancePath + "/cron", + schemaPath: "#/properties/cron/type", keyword: "type", params: { type: "string" }, message: "must be string", }; - if (vErrors === null) { - vErrors = [err3]; - } else { - vErrors.push(err3); - } - errors++; - } - var _valid1 = _errs11 === errors; - valid4 = valid4 || _valid1; - const _errs13 = errors; - if (data2 !== null) { - const err4 = { - instancePath: instancePath + "/endpoint", - schemaPath: "#/properties/endpoint/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; if (vErrors === null) { vErrors = [err4]; } else { @@ -33215,97 +39053,125 @@ function validate316( } errors++; } - var _valid1 = _errs13 === errors; - valid4 = valid4 || _valid1; - if (!valid4) { - const err5 = { - instancePath: instancePath + "/endpoint", - schemaPath: "#/properties/endpoint/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", + } + if (data.depends_on !== undefined) { + let data1 = data.depends_on; + if (Array.isArray(data1)) { + if (data1.length > 0) { + const err5 = { + instancePath: instancePath + "/depends_on", + schemaPath: "#/properties/depends_on/maxItems", + keyword: "maxItems", + params: { limit: 0 }, + message: "must NOT have more than 0 items", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + const len0 = data1.length; + for (let i0 = 0; i0 < len0; i0++) { + if (typeof data1[i0] !== "string") { + const err6 = { + instancePath: instancePath + "/depends_on/" + i0, + schemaPath: "#/properties/depends_on/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + } + } else { + const err7 = { + instancePath: instancePath + "/depends_on", + schemaPath: "#/properties/depends_on/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", }; if (vErrors === null) { - vErrors = [err5]; + vErrors = [err7]; } else { - vErrors.push(err5); + vErrors.push(err7); } errors++; - } else { - errors = _errs10; - if (vErrors !== null) { - if (_errs10) { - vErrors.length = _errs10; - } else { - vErrors = null; - } - } } } - if (data.request !== undefined) { - let data3 = data.request; - const _errs16 = errors; - let valid5 = false; - const _errs17 = errors; - if ( - !validate317(data3, { - instancePath: instancePath + "/request", - parentData: data, - parentDataProperty: "request", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate317.errors : vErrors.concat(validate317.errors); - errors = vErrors.length; - } - var _valid2 = _errs17 === errors; - valid5 = valid5 || _valid2; - const _errs18 = errors; - if (data3 !== null) { - const err6 = { - instancePath: instancePath + "/request", - schemaPath: "#/properties/request/anyOf/1/type", + if (data.event !== undefined) { + if (data.event !== null) { + const err8 = { + instancePath: instancePath + "/event", + schemaPath: "#/properties/event/type", keyword: "type", params: { type: "null" }, message: "must be null", }; if (vErrors === null) { - vErrors = [err6]; + vErrors = [err8]; } else { - vErrors.push(err6); + vErrors.push(err8); } errors++; } - var _valid2 = _errs18 === errors; - valid5 = valid5 || _valid2; - if (!valid5) { - const err7 = { - instancePath: instancePath + "/request", - schemaPath: "#/properties/request/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", + } + if (data.kind !== undefined) { + let data4 = data.kind; + if (typeof data4 !== "string") { + const err9 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err7]; + vErrors = [err9]; } else { - vErrors.push(err7); + vErrors.push(err9); } errors++; - } else { - errors = _errs16; - if (vErrors !== null) { - if (_errs16) { - vErrors.length = _errs16; - } else { - vErrors = null; - } + } + if ("schedule" !== data4) { + const err10 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/const", + keyword: "const", + params: { allowedValue: "schedule" }, + message: "must be equal to constant", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); } + errors++; + } + } + if (data.metadata !== undefined) { + if ( + !validate305(data.metadata, { + instancePath: instancePath + "/metadata", + parentData: data, + parentDataProperty: "metadata", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); + errors = vErrors.length; } } } else { - const err8 = { + const err11 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -33313,37 +39179,38 @@ function validate316( message: "must be object", }; if (vErrors === null) { - vErrors = [err8]; + vErrors = [err11]; } else { - vErrors.push(err8); + vErrors.push(err11); } errors++; } - validate316.errors = vErrors; + validate358.errors = vErrors; return errors === 0; } -validate316.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate358.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema224 = { +const schema255 = { additionalProperties: false, properties: { - field: { minLength: 1, title: "Field", type: "string" }, - kind: { enum: ["timestamp", "sequence", "opaque_token"], title: "Kind", type: "string" }, + cron: { default: null, title: "Cron", type: "null" }, + depends_on: { items: { type: "string" }, minItems: 1, title: "Depends On", type: "array" }, + event: { default: null, title: "Event", type: "null" }, + kind: { const: "dependency", title: "Kind", type: "string" }, metadata: { $ref: "#/$defs/JsonObject" }, - params: { $ref: "#/$defs/JsonObject" }, }, - required: ["field", "kind"], - title: "CursorStrategyDocument", + required: ["kind", "depends_on"], + title: "DependencyTrigger", type: "object", }; -function validate321( +function validate361( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate321.evaluated; + const evaluated0 = validate361.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -33351,13 +39218,13 @@ function validate321( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.field === undefined) { + if (data.kind === undefined) { const err0 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "field" }, - message: "must have required property '" + "field" + "'", + params: { missingProperty: "kind" }, + message: "must have required property '" + "kind" + "'", }; if (vErrors === null) { vErrors = [err0]; @@ -33366,13 +39233,13 @@ function validate321( } errors++; } - if (data.kind === undefined) { + if (data.depends_on === undefined) { const err1 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "kind" }, - message: "must have required property '" + "kind" + "'", + params: { missingProperty: "depends_on" }, + message: "must have required property '" + "depends_on" + "'", }; if (vErrors === null) { vErrors = [err1]; @@ -33382,7 +39249,13 @@ function validate321( errors++; } for (const key0 in data) { - if (!(key0 === "field" || key0 === "kind" || key0 === "metadata" || key0 === "params")) { + if (!( + key0 === "cron" || + key0 === "depends_on" || + key0 === "event" || + key0 === "kind" || + key0 === "metadata" + )) { const err2 = { instancePath, schemaPath: "#/additionalProperties", @@ -33398,44 +39271,96 @@ function validate321( errors++; } } - if (data.field !== undefined) { - let data0 = data.field; - if (typeof data0 === "string") { - if (func2(data0) < 1) { - const err3 = { - instancePath: instancePath + "/field", - schemaPath: "#/properties/field/minLength", - keyword: "minLength", + if (data.cron !== undefined) { + if (data.cron !== null) { + const err3 = { + instancePath: instancePath + "/cron", + schemaPath: "#/properties/cron/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + } + if (data.depends_on !== undefined) { + let data1 = data.depends_on; + if (Array.isArray(data1)) { + if (data1.length < 1) { + const err4 = { + instancePath: instancePath + "/depends_on", + schemaPath: "#/properties/depends_on/minItems", + keyword: "minItems", params: { limit: 1 }, - message: "must NOT have fewer than 1 characters", + message: "must NOT have fewer than 1 items", }; if (vErrors === null) { - vErrors = [err3]; + vErrors = [err4]; } else { - vErrors.push(err3); + vErrors.push(err4); } errors++; } + const len0 = data1.length; + for (let i0 = 0; i0 < len0; i0++) { + if (typeof data1[i0] !== "string") { + const err5 = { + instancePath: instancePath + "/depends_on/" + i0, + schemaPath: "#/properties/depends_on/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + } } else { - const err4 = { - instancePath: instancePath + "/field", - schemaPath: "#/properties/field/type", + const err6 = { + instancePath: instancePath + "/depends_on", + schemaPath: "#/properties/depends_on/type", keyword: "type", - params: { type: "string" }, - message: "must be string", + params: { type: "array" }, + message: "must be array", }; if (vErrors === null) { - vErrors = [err4]; + vErrors = [err6]; } else { - vErrors.push(err4); + vErrors.push(err6); + } + errors++; + } + } + if (data.event !== undefined) { + if (data.event !== null) { + const err7 = { + instancePath: instancePath + "/event", + schemaPath: "#/properties/event/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); } errors++; } } if (data.kind !== undefined) { - let data1 = data.kind; - if (typeof data1 !== "string") { - const err5 = { + let data4 = data.kind; + if (typeof data4 !== "string") { + const err8 = { instancePath: instancePath + "/kind", schemaPath: "#/properties/kind/type", keyword: "type", @@ -33443,31 +39368,31 @@ function validate321( message: "must be string", }; if (vErrors === null) { - vErrors = [err5]; + vErrors = [err8]; } else { - vErrors.push(err5); + vErrors.push(err8); } errors++; } - if (!(data1 === "timestamp" || data1 === "sequence" || data1 === "opaque_token")) { - const err6 = { + if ("dependency" !== data4) { + const err9 = { instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/enum", - keyword: "enum", - params: { allowedValues: schema224.properties.kind.enum }, - message: "must be equal to one of the allowed values", + schemaPath: "#/properties/kind/const", + keyword: "const", + params: { allowedValue: "dependency" }, + message: "must be equal to constant", }; if (vErrors === null) { - vErrors = [err6]; + vErrors = [err9]; } else { - vErrors.push(err6); + vErrors.push(err9); } errors++; } } if (data.metadata !== undefined) { if ( - !validate291(data.metadata, { + !validate305(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -33475,26 +39400,12 @@ function validate321( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); - errors = vErrors.length; - } - } - if (data.params !== undefined) { - if ( - !validate291(data.params, { - instancePath: instancePath + "/params", - parentData: data, - parentDataProperty: "params", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); errors = vErrors.length; } } } else { - const err7 = { + const err10 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -33502,85 +39413,38 @@ function validate321( message: "must be object", }; if (vErrors === null) { - vErrors = [err7]; + vErrors = [err10]; } else { - vErrors.push(err7); + vErrors.push(err10); } errors++; } - validate321.errors = vErrors; + validate361.errors = vErrors; return errors === 0; } -validate321.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate361.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema225 = { - additionalProperties: false, - properties: { - cast_to: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Cast To" }, - description: { - anyOf: [{ type: "string" }, { type: "null" }], - default: null, - title: "Description", - }, - extensions: { - items: { $ref: "#/$defs/ProviderExtension" }, - title: "Extensions", - type: "array", - }, - metadata: { $ref: "#/$defs/JsonObject" }, - name: { title: "Name", type: "string" }, - nullable: { default: true, title: "Nullable", type: "boolean" }, - tests: { items: { $ref: "#/$defs/FieldTestDocument" }, title: "Tests", type: "array" }, - type: { title: "Type", type: "string" }, - }, - required: ["name", "type"], - title: "NodeFieldDocument", - type: "object", -}; -const schema226 = { - additionalProperties: false, - description: "One deterministic provider-specific schema annotation, never a credential.", - properties: { - name: { title: "Name", type: "string" }, - provider: { title: "Provider", type: "string" }, - value: { - anyOf: [{ type: "string" }, { type: "integer" }, { type: "number" }, { type: "boolean" }], - title: "Value", - }, - }, - required: ["provider", "name", "value"], - title: "ProviderExtension", - type: "object", -}; -const schema227 = { - anyOf: [ - { $ref: "#/$defs/NotNullFieldTest" }, - { $ref: "#/$defs/UniqueFieldTest" }, - { $ref: "#/$defs/AcceptedValuesFieldTest" }, - { $ref: "#/$defs/RelationshipsFieldTest" }, - ], -}; -const schema228 = { +const schema256 = { additionalProperties: false, properties: { - field: { default: null, title: "Field", type: "null" }, - kind: { const: "not_null", title: "Kind", type: "string" }, + cron: { default: null, title: "Cron", type: "null" }, + depends_on: { items: { type: "string" }, maxItems: 0, title: "Depends On", type: "array" }, + event: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Event" }, + kind: { const: "manual", title: "Kind", type: "string" }, metadata: { $ref: "#/$defs/JsonObject" }, - to: { default: null, title: "To", type: "null" }, - values: { items: { $ref: "#/$defs/JsonValue" }, maxItems: 0, title: "Values", type: "array" }, }, required: ["kind"], - title: "NotNullFieldTest", + title: "ManualTrigger", type: "object", }; -function validate328( +function validate364( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate328.evaluated; + const evaluated0 = validate364.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -33605,11 +39469,11 @@ function validate328( } for (const key0 in data) { if (!( - key0 === "field" || + key0 === "cron" || + key0 === "depends_on" || + key0 === "event" || key0 === "kind" || - key0 === "metadata" || - key0 === "to" || - key0 === "values" + key0 === "metadata" )) { const err1 = { instancePath, @@ -33626,11 +39490,11 @@ function validate328( errors++; } } - if (data.field !== undefined) { - if (data.field !== null) { + if (data.cron !== undefined) { + if (data.cron !== null) { const err2 = { - instancePath: instancePath + "/field", - schemaPath: "#/properties/field/type", + instancePath: instancePath + "/cron", + schemaPath: "#/properties/cron/type", keyword: "type", params: { type: "null" }, message: "must be null", @@ -33643,211 +39507,127 @@ function validate328( errors++; } } - if (data.kind !== undefined) { - let data1 = data.kind; - if (typeof data1 !== "string") { - const err3 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err3]; - } else { - vErrors.push(err3); - } - errors++; - } - if ("not_null" !== data1) { - const err4 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/const", - keyword: "const", - params: { allowedValue: "not_null" }, - message: "must be equal to constant", - }; - if (vErrors === null) { - vErrors = [err4]; - } else { - vErrors.push(err4); - } - errors++; - } - } - if (data.metadata !== undefined) { - if ( - !validate291(data.metadata, { - instancePath: instancePath + "/metadata", - parentData: data, - parentDataProperty: "metadata", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); - errors = vErrors.length; - } - } - if (data.to !== undefined) { - if (data.to !== null) { - const err5 = { - instancePath: instancePath + "/to", - schemaPath: "#/properties/to/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err5]; - } else { - vErrors.push(err5); - } - errors++; - } - } - if (data.values !== undefined) { - let data4 = data.values; - if (Array.isArray(data4)) { - if (data4.length > 0) { - const err6 = { - instancePath: instancePath + "/values", - schemaPath: "#/properties/values/maxItems", + if (data.depends_on !== undefined) { + let data1 = data.depends_on; + if (Array.isArray(data1)) { + if (data1.length > 0) { + const err3 = { + instancePath: instancePath + "/depends_on", + schemaPath: "#/properties/depends_on/maxItems", keyword: "maxItems", params: { limit: 0 }, message: "must NOT have more than 0 items", }; if (vErrors === null) { - vErrors = [err6]; + vErrors = [err3]; } else { - vErrors.push(err6); + vErrors.push(err3); } errors++; } + const len0 = data1.length; + for (let i0 = 0; i0 < len0; i0++) { + if (typeof data1[i0] !== "string") { + const err4 = { + instancePath: instancePath + "/depends_on/" + i0, + schemaPath: "#/properties/depends_on/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + } } else { - const err7 = { - instancePath: instancePath + "/values", - schemaPath: "#/properties/values/type", + const err5 = { + instancePath: instancePath + "/depends_on", + schemaPath: "#/properties/depends_on/type", keyword: "type", params: { type: "array" }, message: "must be array", }; if (vErrors === null) { - vErrors = [err7]; + vErrors = [err5]; } else { - vErrors.push(err7); + vErrors.push(err5); } errors++; } } - } else { - const err8 = { - instancePath, - schemaPath: "#/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", - }; - if (vErrors === null) { - vErrors = [err8]; - } else { - vErrors.push(err8); - } - errors++; - } - validate328.errors = vErrors; - return errors === 0; -} -validate328.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -const schema230 = { - additionalProperties: false, - properties: { - field: { default: null, title: "Field", type: "null" }, - kind: { const: "unique", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - to: { default: null, title: "To", type: "null" }, - values: { items: { $ref: "#/$defs/JsonValue" }, maxItems: 0, title: "Values", type: "array" }, - }, - required: ["kind"], - title: "UniqueFieldTest", - type: "object", -}; - -function validate331( - data, - { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, -) { - let vErrors = null; - let errors = 0; - const evaluated0 = validate331.evaluated; - if (evaluated0.dynamicProps) { - evaluated0.props = undefined; - } - if (evaluated0.dynamicItems) { - evaluated0.items = undefined; - } - if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.kind === undefined) { - const err0 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "kind" }, - message: "must have required property '" + "kind" + "'", - }; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); - } - errors++; - } - for (const key0 in data) { - if (!( - key0 === "field" || - key0 === "kind" || - key0 === "metadata" || - key0 === "to" || - key0 === "values" - )) { - const err1 = { - instancePath, - schemaPath: "#/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key0 }, - message: "must NOT have additional properties", + if (data.event !== undefined) { + let data3 = data.event; + const _errs9 = errors; + let valid3 = false; + const _errs10 = errors; + if (typeof data3 !== "string") { + const err6 = { + instancePath: instancePath + "/event", + schemaPath: "#/properties/event/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err1]; + vErrors = [err6]; } else { - vErrors.push(err1); + vErrors.push(err6); } errors++; } - } - if (data.field !== undefined) { - if (data.field !== null) { - const err2 = { - instancePath: instancePath + "/field", - schemaPath: "#/properties/field/type", + var _valid0 = _errs10 === errors; + valid3 = valid3 || _valid0; + const _errs12 = errors; + if (data3 !== null) { + const err7 = { + instancePath: instancePath + "/event", + schemaPath: "#/properties/event/anyOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null", }; if (vErrors === null) { - vErrors = [err2]; + vErrors = [err7]; } else { - vErrors.push(err2); + vErrors.push(err7); } errors++; } - } - if (data.kind !== undefined) { - let data1 = data.kind; - if (typeof data1 !== "string") { - const err3 = { + var _valid0 = _errs12 === errors; + valid3 = valid3 || _valid0; + if (!valid3) { + const err8 = { + instancePath: instancePath + "/event", + schemaPath: "#/properties/event/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } else { + errors = _errs9; + if (vErrors !== null) { + if (_errs9) { + vErrors.length = _errs9; + } else { + vErrors = null; + } + } + } + } + if (data.kind !== undefined) { + let data4 = data.kind; + if (typeof data4 !== "string") { + const err9 = { instancePath: instancePath + "/kind", schemaPath: "#/properties/kind/type", keyword: "type", @@ -33855,31 +39635,31 @@ function validate331( message: "must be string", }; if (vErrors === null) { - vErrors = [err3]; + vErrors = [err9]; } else { - vErrors.push(err3); + vErrors.push(err9); } errors++; } - if ("unique" !== data1) { - const err4 = { + if ("manual" !== data4) { + const err10 = { instancePath: instancePath + "/kind", schemaPath: "#/properties/kind/const", keyword: "const", - params: { allowedValue: "unique" }, + params: { allowedValue: "manual" }, message: "must be equal to constant", }; if (vErrors === null) { - vErrors = [err4]; + vErrors = [err10]; } else { - vErrors.push(err4); + vErrors.push(err10); } errors++; } } if (data.metadata !== undefined) { if ( - !validate291(data.metadata, { + !validate305(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -33887,63 +39667,12 @@ function validate331( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); errors = vErrors.length; } } - if (data.to !== undefined) { - if (data.to !== null) { - const err5 = { - instancePath: instancePath + "/to", - schemaPath: "#/properties/to/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err5]; - } else { - vErrors.push(err5); - } - errors++; - } - } - if (data.values !== undefined) { - let data4 = data.values; - if (Array.isArray(data4)) { - if (data4.length > 0) { - const err6 = { - instancePath: instancePath + "/values", - schemaPath: "#/properties/values/maxItems", - keyword: "maxItems", - params: { limit: 0 }, - message: "must NOT have more than 0 items", - }; - if (vErrors === null) { - vErrors = [err6]; - } else { - vErrors.push(err6); - } - errors++; - } - } else { - const err7 = { - instancePath: instancePath + "/values", - schemaPath: "#/properties/values/type", - keyword: "type", - params: { type: "array" }, - message: "must be array", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; - } - } } else { - const err8 = { + const err11 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -33951,38 +39680,127 @@ function validate331( message: "must be object", }; if (vErrors === null) { - vErrors = [err8]; + vErrors = [err11]; } else { - vErrors.push(err8); + vErrors.push(err11); } errors++; } - validate331.errors = vErrors; + validate364.errors = vErrors; return errors === 0; } -validate331.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate364.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +function validate357( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate357.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + const _errs0 = errors; + let valid0 = false; + const _errs1 = errors; + if ( + !validate358(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + ) { + vErrors = vErrors === null ? validate358.errors : vErrors.concat(validate358.errors); + errors = vErrors.length; + } + var _valid0 = _errs1 === errors; + valid0 = valid0 || _valid0; + if (_valid0) { + var props0 = true; + } + const _errs2 = errors; + if ( + !validate361(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + ) { + vErrors = vErrors === null ? validate361.errors : vErrors.concat(validate361.errors); + errors = vErrors.length; + } + var _valid0 = _errs2 === errors; + valid0 = valid0 || _valid0; + if (_valid0) { + if (props0 !== true) { + props0 = true; + } + } + const _errs3 = errors; + if ( + !validate364(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + ) { + vErrors = vErrors === null ? validate364.errors : vErrors.concat(validate364.errors); + errors = vErrors.length; + } + var _valid0 = _errs3 === errors; + valid0 = valid0 || _valid0; + if (_valid0) { + if (props0 !== true) { + props0 = true; + } + } + if (!valid0) { + const err0 = { + instancePath, + schemaPath: "#/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } else { + errors = _errs0; + if (vErrors !== null) { + if (_errs0) { + vErrors.length = _errs0; + } else { + vErrors = null; + } + } + } + validate357.errors = vErrors; + evaluated0.props = props0; + return errors === 0; +} +validate357.evaluated = { dynamicProps: true, dynamicItems: false }; -const schema232 = { +const schema257 = { additionalProperties: false, properties: { - field: { default: null, title: "Field", type: "null" }, - kind: { const: "accepted_values", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - to: { default: null, title: "To", type: "null" }, - values: { items: { $ref: "#/$defs/JsonValue" }, minItems: 1, title: "Values", type: "array" }, + color: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Color" }, + icon: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Icon" }, + position: { anyOf: [{ $ref: "#/$defs/PositionDocument" }, { type: "null" }], default: null }, }, - required: ["kind", "values"], - title: "AcceptedValuesFieldTest", + title: "NodeVisualDocument", + type: "object", +}; +const schema258 = { + additionalProperties: false, + properties: { x: { title: "X", type: "number" }, y: { title: "Y", type: "number" } }, + required: ["x", "y"], + title: "PositionDocument", type: "object", }; -function validate334( +function validate368( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate334.evaluated; + const evaluated0 = validate368.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -33990,45 +39808,9 @@ function validate334( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.kind === undefined) { - const err0 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "kind" }, - message: "must have required property '" + "kind" + "'", - }; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); - } - errors++; - } - if (data.values === undefined) { - const err1 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "values" }, - message: "must have required property '" + "values" + "'", - }; - if (vErrors === null) { - vErrors = [err1]; - } else { - vErrors.push(err1); - } - errors++; - } for (const key0 in data) { - if (!( - key0 === "field" || - key0 === "kind" || - key0 === "metadata" || - key0 === "to" || - key0 === "values" - )) { - const err2 = { + if (!(key0 === "color" || key0 === "icon" || key0 === "position")) { + const err0 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", @@ -34036,36 +39818,87 @@ function validate334( message: "must NOT have additional properties", }; if (vErrors === null) { - vErrors = [err2]; + vErrors = [err0]; } else { - vErrors.push(err2); + vErrors.push(err0); } errors++; } } - if (data.field !== undefined) { - if (data.field !== null) { - const err3 = { - instancePath: instancePath + "/field", - schemaPath: "#/properties/field/type", + if (data.color !== undefined) { + let data0 = data.color; + const _errs3 = errors; + let valid1 = false; + const _errs4 = errors; + if (typeof data0 !== "string") { + const err1 = { + instancePath: instancePath + "/color", + schemaPath: "#/properties/color/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + var _valid0 = _errs4 === errors; + valid1 = valid1 || _valid0; + const _errs6 = errors; + if (data0 !== null) { + const err2 = { + instancePath: instancePath + "/color", + schemaPath: "#/properties/color/anyOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null", }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + var _valid0 = _errs6 === errors; + valid1 = valid1 || _valid0; + if (!valid1) { + const err3 = { + instancePath: instancePath + "/color", + schemaPath: "#/properties/color/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; if (vErrors === null) { vErrors = [err3]; } else { vErrors.push(err3); } errors++; + } else { + errors = _errs3; + if (vErrors !== null) { + if (_errs3) { + vErrors.length = _errs3; + } else { + vErrors = null; + } + } } } - if (data.kind !== undefined) { - let data1 = data.kind; + if (data.icon !== undefined) { + let data1 = data.icon; + const _errs9 = errors; + let valid2 = false; + const _errs10 = errors; if (typeof data1 !== "string") { const err4 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/type", + instancePath: instancePath + "/icon", + schemaPath: "#/properties/icon/anyOf/0/type", keyword: "type", params: { type: "string" }, message: "must be string", @@ -34077,13 +39910,16 @@ function validate334( } errors++; } - if ("accepted_values" !== data1) { + var _valid1 = _errs10 === errors; + valid2 = valid2 || _valid1; + const _errs12 = errors; + if (data1 !== null) { const err5 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/const", - keyword: "const", - params: { allowedValue: "accepted_values" }, - message: "must be equal to constant", + instancePath: instancePath + "/icon", + schemaPath: "#/properties/icon/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", }; if (vErrors === null) { vErrors = [err5]; @@ -34092,29 +39928,15 @@ function validate334( } errors++; } - } - if (data.metadata !== undefined) { - if ( - !validate291(data.metadata, { - instancePath: instancePath + "/metadata", - parentData: data, - parentDataProperty: "metadata", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); - errors = vErrors.length; - } - } - if (data.to !== undefined) { - if (data.to !== null) { + var _valid1 = _errs12 === errors; + valid2 = valid2 || _valid1; + if (!valid2) { const err6 = { - instancePath: instancePath + "/to", - schemaPath: "#/properties/to/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", + instancePath: instancePath + "/icon", + schemaPath: "#/properties/icon/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", }; if (vErrors === null) { vErrors = [err6]; @@ -34122,18 +39944,30 @@ function validate334( vErrors.push(err6); } errors++; + } else { + errors = _errs9; + if (vErrors !== null) { + if (_errs9) { + vErrors.length = _errs9; + } else { + vErrors = null; + } + } } } - if (data.values !== undefined) { - let data4 = data.values; - if (Array.isArray(data4)) { - if (data4.length < 1) { + if (data.position !== undefined) { + let data2 = data.position; + const _errs15 = errors; + let valid3 = false; + const _errs16 = errors; + if (data2 && typeof data2 == "object" && !Array.isArray(data2)) { + if (data2.x === undefined) { const err7 = { - instancePath: instancePath + "/values", - schemaPath: "#/properties/values/minItems", - keyword: "minItems", - params: { limit: 1 }, - message: "must NOT have fewer than 1 items", + instancePath: instancePath + "/position", + schemaPath: "#/$defs/PositionDocument/required", + keyword: "required", + params: { missingProperty: "x" }, + message: "must have required property '" + "x" + "'", }; if (vErrors === null) { vErrors = [err7]; @@ -34142,24 +39976,136 @@ function validate334( } errors++; } + if (data2.y === undefined) { + const err8 = { + instancePath: instancePath + "/position", + schemaPath: "#/$defs/PositionDocument/required", + keyword: "required", + params: { missingProperty: "y" }, + message: "must have required property '" + "y" + "'", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } + for (const key1 in data2) { + if (!(key1 === "x" || key1 === "y")) { + const err9 = { + instancePath: instancePath + "/position", + schemaPath: "#/$defs/PositionDocument/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + } + if (data2.x !== undefined) { + let data3 = data2.x; + if (!(typeof data3 == "number" && isFinite(data3))) { + const err10 = { + instancePath: instancePath + "/position/x", + schemaPath: "#/$defs/PositionDocument/properties/x/type", + keyword: "type", + params: { type: "number" }, + message: "must be number", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; + } + } + if (data2.y !== undefined) { + let data4 = data2.y; + if (!(typeof data4 == "number" && isFinite(data4))) { + const err11 = { + instancePath: instancePath + "/position/y", + schemaPath: "#/$defs/PositionDocument/properties/y/type", + keyword: "type", + params: { type: "number" }, + message: "must be number", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } + } } else { - const err8 = { - instancePath: instancePath + "/values", - schemaPath: "#/properties/values/type", + const err12 = { + instancePath: instancePath + "/position", + schemaPath: "#/$defs/PositionDocument/type", keyword: "type", - params: { type: "array" }, - message: "must be array", + params: { type: "object" }, + message: "must be object", }; if (vErrors === null) { - vErrors = [err8]; + vErrors = [err12]; } else { - vErrors.push(err8); + vErrors.push(err12); + } + errors++; + } + var _valid2 = _errs16 === errors; + valid3 = valid3 || _valid2; + const _errs24 = errors; + if (data2 !== null) { + const err13 = { + instancePath: instancePath + "/position", + schemaPath: "#/properties/position/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err13]; + } else { + vErrors.push(err13); + } + errors++; + } + var _valid2 = _errs24 === errors; + valid3 = valid3 || _valid2; + if (!valid3) { + const err14 = { + instancePath: instancePath + "/position", + schemaPath: "#/properties/position/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err14]; + } else { + vErrors.push(err14); } errors++; + } else { + errors = _errs15; + if (vErrors !== null) { + if (_errs15) { + vErrors.length = _errs15; + } else { + vErrors = null; + } + } } } } else { - const err9 = { + const err15 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -34167,99 +40113,121 @@ function validate334( message: "must be object", }; if (vErrors === null) { - vErrors = [err9]; + vErrors = [err15]; } else { - vErrors.push(err9); + vErrors.push(err15); } errors++; } - validate334.errors = vErrors; - return errors === 0; -} -validate334.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -const schema234 = { - additionalProperties: false, - properties: { - field: { minLength: 1, title: "Field", type: "string" }, - kind: { const: "relationships", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - to: { minLength: 1, title: "To", type: "string" }, - values: { items: { $ref: "#/$defs/JsonValue" }, maxItems: 0, title: "Values", type: "array" }, - }, - required: ["kind", "to", "field"], - title: "RelationshipsFieldTest", - type: "object", -}; + validate368.errors = vErrors; + return errors === 0; +} +validate368.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate337( +function validate329( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate337.evaluated; + const evaluated0 = validate329.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } if (evaluated0.dynamicItems) { evaluated0.items = undefined; } + const _errs1 = errors; + const _errs2 = errors; if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.kind === undefined) { - const err0 = { + let missing0; + if ( + (data.config === undefined && (missing0 = "config")) || + (data.params === undefined && (missing0 = "params")) + ) { + const err0 = {}; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + } + var valid0 = _errs2 === errors; + if (valid0) { + const err1 = { + instancePath, + schemaPath: "#/not", + keyword: "not", + params: {}, + message: "must NOT be valid", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } else { + errors = _errs1; + if (vErrors !== null) { + if (_errs1) { + vErrors.length = _errs1; + } else { + vErrors = null; + } + } + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.id === undefined) { + const err2 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "kind" }, - message: "must have required property '" + "kind" + "'", + params: { missingProperty: "id" }, + message: "must have required property '" + "id" + "'", }; if (vErrors === null) { - vErrors = [err0]; + vErrors = [err2]; } else { - vErrors.push(err0); + vErrors.push(err2); } errors++; } - if (data.to === undefined) { - const err1 = { + if (data.type === undefined) { + const err3 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "to" }, - message: "must have required property '" + "to" + "'", + params: { missingProperty: "type" }, + message: "must have required property '" + "type" + "'", }; if (vErrors === null) { - vErrors = [err1]; + vErrors = [err3]; } else { - vErrors.push(err1); + vErrors.push(err3); } errors++; } - if (data.field === undefined) { - const err2 = { + if (data.name === undefined) { + const err4 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "field" }, - message: "must have required property '" + "field" + "'", + params: { missingProperty: "name" }, + message: "must have required property '" + "name" + "'", }; if (vErrors === null) { - vErrors = [err2]; + vErrors = [err4]; } else { - vErrors.push(err2); + vErrors.push(err4); } errors++; } for (const key0 in data) { - if (!( - key0 === "field" || - key0 === "kind" || - key0 === "metadata" || - key0 === "to" || - key0 === "values" - )) { - const err3 = { + if (!func1.call(schema236.properties, key0)) { + const err5 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", @@ -34267,288 +40235,476 @@ function validate337( message: "must NOT have additional properties", }; if (vErrors === null) { - vErrors = [err3]; + vErrors = [err5]; } else { - vErrors.push(err3); + vErrors.push(err5); } errors++; } } - if (data.field !== undefined) { - let data0 = data.field; - if (typeof data0 === "string") { - if (func2(data0) < 1) { - const err4 = { - instancePath: instancePath + "/field", - schemaPath: "#/properties/field/minLength", - keyword: "minLength", - params: { limit: 1 }, - message: "must NOT have fewer than 1 characters", - }; - if (vErrors === null) { - vErrors = [err4]; + if (data.config !== undefined) { + if ( + !validate330(data.config, { + instancePath: instancePath + "/config", + parentData: data, + parentDataProperty: "config", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate330.errors : vErrors.concat(validate330.errors); + errors = vErrors.length; + } + } + if (data.cursor !== undefined) { + let data1 = data.cursor; + const _errs6 = errors; + let valid2 = false; + const _errs7 = errors; + if ( + !validate335(data1, { + instancePath: instancePath + "/cursor", + parentData: data, + parentDataProperty: "cursor", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate335.errors : vErrors.concat(validate335.errors); + errors = vErrors.length; + } + var _valid0 = _errs7 === errors; + valid2 = valid2 || _valid0; + const _errs8 = errors; + if (data1 !== null) { + const err6 = { + instancePath: instancePath + "/cursor", + schemaPath: "#/properties/cursor/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + var _valid0 = _errs8 === errors; + valid2 = valid2 || _valid0; + if (!valid2) { + const err7 = { + instancePath: instancePath + "/cursor", + schemaPath: "#/properties/cursor/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } else { + errors = _errs6; + if (vErrors !== null) { + if (_errs6) { + vErrors.length = _errs6; } else { - vErrors.push(err4); + vErrors = null; + } + } + } + } + if (data.fields !== undefined) { + let data2 = data.fields; + if (Array.isArray(data2)) { + const len0 = data2.length; + for (let i0 = 0; i0 < len0; i0++) { + if ( + !validate339(data2[i0], { + instancePath: instancePath + "/fields/" + i0, + parentData: data2, + parentDataProperty: i0, + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate339.errors : vErrors.concat(validate339.errors); + errors = vErrors.length; } - errors++; } } else { - const err5 = { - instancePath: instancePath + "/field", - schemaPath: "#/properties/field/type", + const err8 = { + instancePath: instancePath + "/fields", + schemaPath: "#/properties/fields/type", keyword: "type", - params: { type: "string" }, - message: "must be string", + params: { type: "array" }, + message: "must be array", }; if (vErrors === null) { - vErrors = [err5]; + vErrors = [err8]; } else { - vErrors.push(err5); + vErrors.push(err8); } errors++; } } - if (data.kind !== undefined) { - let data1 = data.kind; - if (typeof data1 !== "string") { - const err6 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/type", + if (data.id !== undefined) { + if (typeof data.id !== "string") { + const err9 = { + instancePath: instancePath + "/id", + schemaPath: "#/properties/id/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err6]; + vErrors = [err9]; } else { - vErrors.push(err6); + vErrors.push(err9); } errors++; } - if ("relationships" !== data1) { - const err7 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/const", - keyword: "const", - params: { allowedValue: "relationships" }, - message: "must be equal to constant", + } + if (data.name !== undefined) { + if (typeof data.name !== "string") { + const err10 = { + instancePath: instancePath + "/name", + schemaPath: "#/properties/name/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err7]; + vErrors = [err10]; } else { - vErrors.push(err7); + vErrors.push(err10); } errors++; } } - if (data.metadata !== undefined) { + if (data.params !== undefined) { + let data6 = data.params; + const _errs18 = errors; + let valid5 = false; + const _errs19 = errors; if ( - !validate291(data.metadata, { - instancePath: instancePath + "/metadata", + !validate330(data6, { + instancePath: instancePath + "/params", parentData: data, - parentDataProperty: "metadata", + parentDataProperty: "params", rootData, dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); + vErrors = vErrors === null ? validate330.errors : vErrors.concat(validate330.errors); errors = vErrors.length; } - } - if (data.to !== undefined) { - let data3 = data.to; - if (typeof data3 === "string") { - if (func2(data3) < 1) { - const err8 = { - instancePath: instancePath + "/to", - schemaPath: "#/properties/to/minLength", - keyword: "minLength", - params: { limit: 1 }, - message: "must NOT have fewer than 1 characters", - }; - if (vErrors === null) { - vErrors = [err8]; + var _valid1 = _errs19 === errors; + valid5 = valid5 || _valid1; + const _errs20 = errors; + if (data6 !== null) { + const err11 = { + instancePath: instancePath + "/params", + schemaPath: "#/properties/params/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } + var _valid1 = _errs20 === errors; + valid5 = valid5 || _valid1; + if (!valid5) { + const err12 = { + instancePath: instancePath + "/params", + schemaPath: "#/properties/params/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err12]; + } else { + vErrors.push(err12); + } + errors++; + } else { + errors = _errs18; + if (vErrors !== null) { + if (_errs18) { + vErrors.length = _errs18; } else { - vErrors.push(err8); + vErrors = null; } - errors++; } - } else { - const err9 = { - instancePath: instancePath + "/to", - schemaPath: "#/properties/to/type", + } + } + if (data.trigger !== undefined) { + let data7 = data.trigger; + const _errs24 = errors; + let valid6 = false; + const _errs25 = errors; + if ( + !validate357(data7, { + instancePath: instancePath + "/trigger", + parentData: data, + parentDataProperty: "trigger", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate357.errors : vErrors.concat(validate357.errors); + errors = vErrors.length; + } + var _valid2 = _errs25 === errors; + valid6 = valid6 || _valid2; + const _errs26 = errors; + if (data7 !== null) { + const err13 = { + instancePath: instancePath + "/trigger", + schemaPath: "#/properties/trigger/anyOf/1/type", keyword: "type", - params: { type: "string" }, - message: "must be string", + params: { type: "null" }, + message: "must be null", }; if (vErrors === null) { - vErrors = [err9]; + vErrors = [err13]; } else { - vErrors.push(err9); + vErrors.push(err13); } errors++; } - } - if (data.values !== undefined) { - let data4 = data.values; - if (Array.isArray(data4)) { - if (data4.length > 0) { - const err10 = { - instancePath: instancePath + "/values", - schemaPath: "#/properties/values/maxItems", - keyword: "maxItems", - params: { limit: 0 }, - message: "must NOT have more than 0 items", - }; - if (vErrors === null) { - vErrors = [err10]; + var _valid2 = _errs26 === errors; + valid6 = valid6 || _valid2; + if (!valid6) { + const err14 = { + instancePath: instancePath + "/trigger", + schemaPath: "#/properties/trigger/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err14]; + } else { + vErrors.push(err14); + } + errors++; + } else { + errors = _errs24; + if (vErrors !== null) { + if (_errs24) { + vErrors.length = _errs24; } else { - vErrors.push(err10); + vErrors = null; } - errors++; } - } else { - const err11 = { - instancePath: instancePath + "/values", - schemaPath: "#/properties/values/type", + } + } + if (data.type !== undefined) { + let data8 = data.type; + if (typeof data8 !== "string") { + const err15 = { + instancePath: instancePath + "/type", + schemaPath: "#/properties/type/type", keyword: "type", - params: { type: "array" }, - message: "must be array", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err11]; + vErrors = [err15]; } else { - vErrors.push(err11); + vErrors.push(err15); + } + errors++; + } + if ("source" !== data8) { + const err16 = { + instancePath: instancePath + "/type", + schemaPath: "#/properties/type/const", + keyword: "const", + params: { allowedValue: "source" }, + message: "must be equal to constant", + }; + if (vErrors === null) { + vErrors = [err16]; + } else { + vErrors.push(err16); } errors++; } } - } else { - const err12 = { - instancePath, - schemaPath: "#/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", - }; - if (vErrors === null) { - vErrors = [err12]; - } else { - vErrors.push(err12); - } - errors++; - } - validate337.errors = vErrors; - return errors === 0; -} -validate337.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -function validate327( - data, - { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, -) { - let vErrors = null; - let errors = 0; - const evaluated0 = validate327.evaluated; - if (evaluated0.dynamicProps) { - evaluated0.props = undefined; - } - if (evaluated0.dynamicItems) { - evaluated0.items = undefined; - } - const _errs0 = errors; - let valid0 = false; - const _errs1 = errors; - if ( - !validate328(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) - ) { - vErrors = vErrors === null ? validate328.errors : vErrors.concat(validate328.errors); - errors = vErrors.length; - } - var _valid0 = _errs1 === errors; - valid0 = valid0 || _valid0; - if (_valid0) { - var props0 = true; - } - const _errs2 = errors; - if ( - !validate331(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) - ) { - vErrors = vErrors === null ? validate331.errors : vErrors.concat(validate331.errors); - errors = vErrors.length; - } - var _valid0 = _errs2 === errors; - valid0 = valid0 || _valid0; - if (_valid0) { - if (props0 !== true) { - props0 = true; - } - } - const _errs3 = errors; - if ( - !validate334(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) - ) { - vErrors = vErrors === null ? validate334.errors : vErrors.concat(validate334.errors); - errors = vErrors.length; - } - var _valid0 = _errs3 === errors; - valid0 = valid0 || _valid0; - if (_valid0) { - if (props0 !== true) { - props0 = true; - } - } - const _errs4 = errors; - if ( - !validate337(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) - ) { - vErrors = vErrors === null ? validate337.errors : vErrors.concat(validate337.errors); - errors = vErrors.length; - } - var _valid0 = _errs4 === errors; - valid0 = valid0 || _valid0; - if (_valid0) { - if (props0 !== true) { - props0 = true; + if (data.visual !== undefined) { + let data9 = data.visual; + const _errs31 = errors; + let valid7 = false; + const _errs32 = errors; + if ( + !validate368(data9, { + instancePath: instancePath + "/visual", + parentData: data, + parentDataProperty: "visual", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate368.errors : vErrors.concat(validate368.errors); + errors = vErrors.length; + } + var _valid3 = _errs32 === errors; + valid7 = valid7 || _valid3; + const _errs33 = errors; + if (data9 !== null) { + const err17 = { + instancePath: instancePath + "/visual", + schemaPath: "#/properties/visual/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err17]; + } else { + vErrors.push(err17); + } + errors++; + } + var _valid3 = _errs33 === errors; + valid7 = valid7 || _valid3; + if (!valid7) { + const err18 = { + instancePath: instancePath + "/visual", + schemaPath: "#/properties/visual/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err18]; + } else { + vErrors.push(err18); + } + errors++; + } else { + errors = _errs31; + if (vErrors !== null) { + if (_errs31) { + vErrors.length = _errs31; + } else { + vErrors = null; + } + } + } } - } - if (!valid0) { - const err0 = { + } else { + const err19 = { instancePath, - schemaPath: "#/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", }; if (vErrors === null) { - vErrors = [err0]; + vErrors = [err19]; } else { - vErrors.push(err0); + vErrors.push(err19); } errors++; - } else { - errors = _errs0; - if (vErrors !== null) { - if (_errs0) { - vErrors.length = _errs0; - } else { - vErrors = null; - } - } } - validate327.errors = vErrors; - evaluated0.props = props0; + validate329.errors = vErrors; return errors === 0; } -validate327.evaluated = { dynamicProps: true, dynamicItems: false }; +validate329.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +const schema259 = { + additionalProperties: false, + not: { required: ["config", "params"] }, + properties: { + config: { $ref: "#/$defs/TransformNodeConfigDocument" }, + cursor: { + anyOf: [{ $ref: "#/$defs/CursorStrategyDocument" }, { type: "null" }], + default: null, + }, + fields: { items: { $ref: "#/$defs/NodeFieldDocument" }, title: "Fields", type: "array" }, + id: { title: "Id", type: "string" }, + name: { title: "Name", type: "string" }, + params: { + anyOf: [{ $ref: "#/$defs/TransformNodeConfigDocument" }, { type: "null" }], + default: null, + deprecated: true, + "x-dander-canonical-name": "config", + }, + trigger: { anyOf: [{ $ref: "#/$defs/TriggerDocument" }, { type: "null" }], default: null }, + type: { const: "transform", title: "Type", type: "string" }, + visual: { anyOf: [{ $ref: "#/$defs/NodeVisualDocument" }, { type: "null" }], default: null }, + }, + required: ["id", "type", "name"], + title: "TransformNodeDocument", + type: "object", +}; +const schema260 = { + additionalProperties: { $ref: "#/$defs/JsonValue" }, + properties: { + join: { anyOf: [{ $ref: "#/$defs/TransformJoinDocument" }, { type: "null" }], default: null }, + operations: { + items: { $ref: "#/$defs/OperationDocument" }, + title: "Operations", + type: "array", + }, + }, + title: "TransformNodeConfigDocument", + type: "object", +}; +const schema262 = { + additionalProperties: false, + properties: { + keys: { + items: { $ref: "#/$defs/ExecutableJoinKeyDocument" }, + minItems: 1, + title: "Keys", + type: "array", + }, + left_input: { minLength: 1, title: "Left Input", type: "string" }, + right_input: { minLength: 1, title: "Right Input", type: "string" }, + type: { $ref: "#/$defs/ExecutableJoinType" }, + }, + required: ["left_input", "right_input", "type", "keys"], + title: "TransformJoinDocument", + type: "object", +}; +const schema263 = { + additionalProperties: false, + properties: { + left: { minLength: 1, title: "Left", type: "string" }, + right: { minLength: 1, title: "Right", type: "string" }, + }, + required: ["left", "right"], + title: "ExecutableJoinKeyDocument", + type: "object", +}; +const schema264 = { + description: "BigQuery join kinds supported by an executable transform node.", + enum: ["inner", "left", "right", "full"], + title: "ExecutableJoinType", + type: "string", +}; -function validate325( +function validate373( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate325.evaluated; + const evaluated0 = validate373.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -34556,13 +40712,13 @@ function validate325( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.name === undefined) { + if (data.left_input === undefined) { const err0 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "name" }, - message: "must have required property '" + "name" + "'", + params: { missingProperty: "left_input" }, + message: "must have required property '" + "left_input" + "'", }; if (vErrors === null) { vErrors = [err0]; @@ -34571,13 +40727,13 @@ function validate325( } errors++; } - if (data.type === undefined) { + if (data.right_input === undefined) { const err1 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "type" }, - message: "must have required property '" + "type" + "'", + params: { missingProperty: "right_input" }, + message: "must have required property '" + "right_input" + "'", }; if (vErrors === null) { vErrors = [err1]; @@ -34586,63 +40742,50 @@ function validate325( } errors++; } + if (data.type === undefined) { + const err2 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "type" }, + message: "must have required property '" + "type" + "'", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + if (data.keys === undefined) { + const err3 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "keys" }, + message: "must have required property '" + "keys" + "'", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } for (const key0 in data) { if (!( - key0 === "cast_to" || - key0 === "description" || - key0 === "extensions" || - key0 === "metadata" || - key0 === "name" || - key0 === "nullable" || - key0 === "tests" || + key0 === "keys" || + key0 === "left_input" || + key0 === "right_input" || key0 === "type" )) { - const err2 = { + const err4 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties", }; - if (vErrors === null) { - vErrors = [err2]; - } else { - vErrors.push(err2); - } - errors++; - } - } - if (data.cast_to !== undefined) { - let data0 = data.cast_to; - const _errs3 = errors; - let valid1 = false; - const _errs4 = errors; - if (typeof data0 !== "string") { - const err3 = { - instancePath: instancePath + "/cast_to", - schemaPath: "#/properties/cast_to/anyOf/0/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err3]; - } else { - vErrors.push(err3); - } - errors++; - } - var _valid0 = _errs4 === errors; - valid1 = valid1 || _valid0; - const _errs6 = errors; - if (data0 !== null) { - const err4 = { - instancePath: instancePath + "/cast_to", - schemaPath: "#/properties/cast_to/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; if (vErrors === null) { vErrors = [err4]; } else { @@ -34650,435 +40793,572 @@ function validate325( } errors++; } - var _valid0 = _errs6 === errors; - valid1 = valid1 || _valid0; - if (!valid1) { - const err5 = { - instancePath: instancePath + "/cast_to", - schemaPath: "#/properties/cast_to/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; - if (vErrors === null) { - vErrors = [err5]; - } else { - vErrors.push(err5); - } - errors++; - } else { - errors = _errs3; - if (vErrors !== null) { - if (_errs3) { - vErrors.length = _errs3; - } else { - vErrors = null; - } - } - } } - if (data.description !== undefined) { - let data1 = data.description; - const _errs9 = errors; - let valid2 = false; - const _errs10 = errors; - if (typeof data1 !== "string") { - const err6 = { - instancePath: instancePath + "/description", - schemaPath: "#/properties/description/anyOf/0/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err6]; - } else { - vErrors.push(err6); - } - errors++; - } - var _valid1 = _errs10 === errors; - valid2 = valid2 || _valid1; - const _errs12 = errors; - if (data1 !== null) { - const err7 = { - instancePath: instancePath + "/description", - schemaPath: "#/properties/description/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; - } - var _valid1 = _errs12 === errors; - valid2 = valid2 || _valid1; - if (!valid2) { - const err8 = { - instancePath: instancePath + "/description", - schemaPath: "#/properties/description/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; - if (vErrors === null) { - vErrors = [err8]; - } else { - vErrors.push(err8); - } - errors++; - } else { - errors = _errs9; - if (vErrors !== null) { - if (_errs9) { - vErrors.length = _errs9; + if (data.keys !== undefined) { + let data0 = data.keys; + if (Array.isArray(data0)) { + if (data0.length < 1) { + const err5 = { + instancePath: instancePath + "/keys", + schemaPath: "#/properties/keys/minItems", + keyword: "minItems", + params: { limit: 1 }, + message: "must NOT have fewer than 1 items", + }; + if (vErrors === null) { + vErrors = [err5]; } else { - vErrors = null; + vErrors.push(err5); } + errors++; } - } - } - if (data.extensions !== undefined) { - let data2 = data.extensions; - if (Array.isArray(data2)) { - const len0 = data2.length; + const len0 = data0.length; for (let i0 = 0; i0 < len0; i0++) { - let data3 = data2[i0]; - if (data3 && typeof data3 == "object" && !Array.isArray(data3)) { - if (data3.provider === undefined) { - const err9 = { - instancePath: instancePath + "/extensions/" + i0, - schemaPath: "#/$defs/ProviderExtension/required", - keyword: "required", - params: { missingProperty: "provider" }, - message: "must have required property '" + "provider" + "'", - }; - if (vErrors === null) { - vErrors = [err9]; - } else { - vErrors.push(err9); - } - errors++; - } - if (data3.name === undefined) { - const err10 = { - instancePath: instancePath + "/extensions/" + i0, - schemaPath: "#/$defs/ProviderExtension/required", + let data1 = data0[i0]; + if (data1 && typeof data1 == "object" && !Array.isArray(data1)) { + if (data1.left === undefined) { + const err6 = { + instancePath: instancePath + "/keys/" + i0, + schemaPath: "#/$defs/ExecutableJoinKeyDocument/required", keyword: "required", - params: { missingProperty: "name" }, - message: "must have required property '" + "name" + "'", + params: { missingProperty: "left" }, + message: "must have required property '" + "left" + "'", }; if (vErrors === null) { - vErrors = [err10]; + vErrors = [err6]; } else { - vErrors.push(err10); + vErrors.push(err6); } errors++; } - if (data3.value === undefined) { - const err11 = { - instancePath: instancePath + "/extensions/" + i0, - schemaPath: "#/$defs/ProviderExtension/required", + if (data1.right === undefined) { + const err7 = { + instancePath: instancePath + "/keys/" + i0, + schemaPath: "#/$defs/ExecutableJoinKeyDocument/required", keyword: "required", - params: { missingProperty: "value" }, - message: "must have required property '" + "value" + "'", + params: { missingProperty: "right" }, + message: "must have required property '" + "right" + "'", }; if (vErrors === null) { - vErrors = [err11]; + vErrors = [err7]; } else { - vErrors.push(err11); + vErrors.push(err7); } errors++; } - for (const key1 in data3) { - if (!(key1 === "name" || key1 === "provider" || key1 === "value")) { - const err12 = { - instancePath: instancePath + "/extensions/" + i0, - schemaPath: "#/$defs/ProviderExtension/additionalProperties", + for (const key1 in data1) { + if (!(key1 === "left" || key1 === "right")) { + const err8 = { + instancePath: instancePath + "/keys/" + i0, + schemaPath: "#/$defs/ExecutableJoinKeyDocument/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key1 }, message: "must NOT have additional properties", }; if (vErrors === null) { - vErrors = [err12]; - } else { - vErrors.push(err12); - } - errors++; - } - } - if (data3.name !== undefined) { - if (typeof data3.name !== "string") { - const err13 = { - instancePath: instancePath + "/extensions/" + i0 + "/name", - schemaPath: "#/$defs/ProviderExtension/properties/name/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err13]; - } else { - vErrors.push(err13); - } - errors++; - } - } - if (data3.provider !== undefined) { - if (typeof data3.provider !== "string") { - const err14 = { - instancePath: instancePath + "/extensions/" + i0 + "/provider", - schemaPath: "#/$defs/ProviderExtension/properties/provider/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err14]; + vErrors = [err8]; } else { - vErrors.push(err14); + vErrors.push(err8); } errors++; } } - if (data3.value !== undefined) { - let data6 = data3.value; - const _errs25 = errors; - let valid7 = false; - const _errs26 = errors; - if (typeof data6 !== "string") { - const err15 = { - instancePath: instancePath + "/extensions/" + i0 + "/value", - schemaPath: "#/$defs/ProviderExtension/properties/value/anyOf/0/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err15]; - } else { - vErrors.push(err15); - } - errors++; - } - var _valid2 = _errs26 === errors; - valid7 = valid7 || _valid2; - const _errs28 = errors; - if (!(typeof data6 == "number" && !(data6 % 1) && !isNaN(data6) && isFinite(data6))) { - const err16 = { - instancePath: instancePath + "/extensions/" + i0 + "/value", - schemaPath: "#/$defs/ProviderExtension/properties/value/anyOf/1/type", - keyword: "type", - params: { type: "integer" }, - message: "must be integer", - }; - if (vErrors === null) { - vErrors = [err16]; - } else { - vErrors.push(err16); - } - errors++; - } - var _valid2 = _errs28 === errors; - valid7 = valid7 || _valid2; - const _errs30 = errors; - if (!(typeof data6 == "number" && isFinite(data6))) { - const err17 = { - instancePath: instancePath + "/extensions/" + i0 + "/value", - schemaPath: "#/$defs/ProviderExtension/properties/value/anyOf/2/type", - keyword: "type", - params: { type: "number" }, - message: "must be number", - }; - if (vErrors === null) { - vErrors = [err17]; - } else { - vErrors.push(err17); - } - errors++; - } - var _valid2 = _errs30 === errors; - valid7 = valid7 || _valid2; - const _errs32 = errors; - if (typeof data6 !== "boolean") { - const err18 = { - instancePath: instancePath + "/extensions/" + i0 + "/value", - schemaPath: "#/$defs/ProviderExtension/properties/value/anyOf/3/type", + if (data1.left !== undefined) { + let data2 = data1.left; + if (typeof data2 === "string") { + if (func3(data2) < 1) { + const err9 = { + instancePath: instancePath + "/keys/" + i0 + "/left", + schemaPath: "#/$defs/ExecutableJoinKeyDocument/properties/left/minLength", + keyword: "minLength", + params: { limit: 1 }, + message: "must NOT have fewer than 1 characters", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + } else { + const err10 = { + instancePath: instancePath + "/keys/" + i0 + "/left", + schemaPath: "#/$defs/ExecutableJoinKeyDocument/properties/left/type", keyword: "type", - params: { type: "boolean" }, - message: "must be boolean", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err18]; + vErrors = [err10]; } else { - vErrors.push(err18); + vErrors.push(err10); } errors++; } - var _valid2 = _errs32 === errors; - valid7 = valid7 || _valid2; - if (!valid7) { - const err19 = { - instancePath: instancePath + "/extensions/" + i0 + "/value", - schemaPath: "#/$defs/ProviderExtension/properties/value/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", + } + if (data1.right !== undefined) { + let data3 = data1.right; + if (typeof data3 === "string") { + if (func3(data3) < 1) { + const err11 = { + instancePath: instancePath + "/keys/" + i0 + "/right", + schemaPath: "#/$defs/ExecutableJoinKeyDocument/properties/right/minLength", + keyword: "minLength", + params: { limit: 1 }, + message: "must NOT have fewer than 1 characters", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } + } else { + const err12 = { + instancePath: instancePath + "/keys/" + i0 + "/right", + schemaPath: "#/$defs/ExecutableJoinKeyDocument/properties/right/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err19]; + vErrors = [err12]; } else { - vErrors.push(err19); + vErrors.push(err12); } errors++; - } else { - errors = _errs25; - if (vErrors !== null) { - if (_errs25) { - vErrors.length = _errs25; - } else { - vErrors = null; - } - } } } } else { - const err20 = { - instancePath: instancePath + "/extensions/" + i0, - schemaPath: "#/$defs/ProviderExtension/type", + const err13 = { + instancePath: instancePath + "/keys/" + i0, + schemaPath: "#/$defs/ExecutableJoinKeyDocument/type", keyword: "type", params: { type: "object" }, message: "must be object", }; if (vErrors === null) { - vErrors = [err20]; + vErrors = [err13]; } else { - vErrors.push(err20); + vErrors.push(err13); } errors++; } } } else { - const err21 = { - instancePath: instancePath + "/extensions", - schemaPath: "#/properties/extensions/type", + const err14 = { + instancePath: instancePath + "/keys", + schemaPath: "#/properties/keys/type", keyword: "type", params: { type: "array" }, message: "must be array", }; if (vErrors === null) { - vErrors = [err21]; + vErrors = [err14]; } else { - vErrors.push(err21); + vErrors.push(err14); } errors++; } } - if (data.metadata !== undefined) { - if ( - !validate291(data.metadata, { - instancePath: instancePath + "/metadata", - parentData: data, - parentDataProperty: "metadata", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); - errors = vErrors.length; + if (data.left_input !== undefined) { + let data4 = data.left_input; + if (typeof data4 === "string") { + if (func3(data4) < 1) { + const err15 = { + instancePath: instancePath + "/left_input", + schemaPath: "#/properties/left_input/minLength", + keyword: "minLength", + params: { limit: 1 }, + message: "must NOT have fewer than 1 characters", + }; + if (vErrors === null) { + vErrors = [err15]; + } else { + vErrors.push(err15); + } + errors++; + } + } else { + const err16 = { + instancePath: instancePath + "/left_input", + schemaPath: "#/properties/left_input/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err16]; + } else { + vErrors.push(err16); + } + errors++; } } - if (data.name !== undefined) { - if (typeof data.name !== "string") { - const err22 = { - instancePath: instancePath + "/name", - schemaPath: "#/properties/name/type", + if (data.right_input !== undefined) { + let data5 = data.right_input; + if (typeof data5 === "string") { + if (func3(data5) < 1) { + const err17 = { + instancePath: instancePath + "/right_input", + schemaPath: "#/properties/right_input/minLength", + keyword: "minLength", + params: { limit: 1 }, + message: "must NOT have fewer than 1 characters", + }; + if (vErrors === null) { + vErrors = [err17]; + } else { + vErrors.push(err17); + } + errors++; + } + } else { + const err18 = { + instancePath: instancePath + "/right_input", + schemaPath: "#/properties/right_input/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err22]; + vErrors = [err18]; } else { - vErrors.push(err22); + vErrors.push(err18); } errors++; } } - if (data.nullable !== undefined) { - if (typeof data.nullable !== "boolean") { - const err23 = { - instancePath: instancePath + "/nullable", - schemaPath: "#/properties/nullable/type", + if (data.type !== undefined) { + let data6 = data.type; + if (typeof data6 !== "string") { + const err19 = { + instancePath: instancePath + "/type", + schemaPath: "#/$defs/ExecutableJoinType/type", keyword: "type", - params: { type: "boolean" }, - message: "must be boolean", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err23]; + vErrors = [err19]; } else { - vErrors.push(err23); + vErrors.push(err19); } errors++; } - } - if (data.tests !== undefined) { - let data10 = data.tests; - if (Array.isArray(data10)) { - const len1 = data10.length; - for (let i1 = 0; i1 < len1; i1++) { - if ( - !validate327(data10[i1], { - instancePath: instancePath + "/tests/" + i1, - parentData: data10, - parentDataProperty: i1, - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate327.errors : vErrors.concat(validate327.errors); - errors = vErrors.length; - } + if (!(data6 === "inner" || data6 === "left" || data6 === "right" || data6 === "full")) { + const err20 = { + instancePath: instancePath + "/type", + schemaPath: "#/$defs/ExecutableJoinType/enum", + keyword: "enum", + params: { allowedValues: schema264.enum }, + message: "must be equal to one of the allowed values", + }; + if (vErrors === null) { + vErrors = [err20]; + } else { + vErrors.push(err20); } + errors++; + } + } + } else { + const err21 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err21]; + } else { + vErrors.push(err21); + } + errors++; + } + validate373.errors = vErrors; + return errors === 0; +} +validate373.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +const schema265 = { + anyOf: [ + { $ref: "#/$defs/TruncateStringOperation" }, + { $ref: "#/$defs/TrimWhitespaceOperation" }, + { $ref: "#/$defs/DefaultValueOperation" }, + { $ref: "#/$defs/FilterRowsOperation" }, + ], +}; +const schema266 = { + additionalProperties: false, + properties: { + kind: { const: "truncate_string", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + params: { $ref: "#/$defs/TruncateStringParamsDocument" }, + }, + required: ["kind", "params"], + title: "TruncateStringOperation", + type: "object", +}; +const schema267 = { + additionalProperties: false, + properties: { + field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" }, + max_length: { minimum: 0, title: "Max Length", type: "integer" }, + }, + required: ["field", "max_length"], + title: "TruncateStringParamsDocument", + type: "object", +}; + +function validate376( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate376.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.kind === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "kind" }, + message: "must have required property '" + "kind" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; } else { - const err24 = { - instancePath: instancePath + "/tests", - schemaPath: "#/properties/tests/type", - keyword: "type", - params: { type: "array" }, - message: "must be array", + vErrors.push(err0); + } + errors++; + } + if (data.params === undefined) { + const err1 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "params" }, + message: "must have required property '" + "params" + "'", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + for (const key0 in data) { + if (!(key0 === "kind" || key0 === "metadata" || key0 === "params")) { + const err2 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", }; if (vErrors === null) { - vErrors = [err24]; + vErrors = [err2]; } else { - vErrors.push(err24); + vErrors.push(err2); } errors++; } } - if (data.type !== undefined) { - if (typeof data.type !== "string") { - const err25 = { - instancePath: instancePath + "/type", - schemaPath: "#/properties/type/type", + if (data.kind !== undefined) { + let data0 = data.kind; + if (typeof data0 !== "string") { + const err3 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err25]; + vErrors = [err3]; } else { - vErrors.push(err25); + vErrors.push(err3); + } + errors++; + } + if ("truncate_string" !== data0) { + const err4 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/const", + keyword: "const", + params: { allowedValue: "truncate_string" }, + message: "must be equal to constant", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + } + if (data.metadata !== undefined) { + if ( + !validate305(data.metadata, { + instancePath: instancePath + "/metadata", + parentData: data, + parentDataProperty: "metadata", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); + errors = vErrors.length; + } + } + if (data.params !== undefined) { + let data2 = data.params; + if (data2 && typeof data2 == "object" && !Array.isArray(data2)) { + if (data2.field === undefined) { + const err5 = { + instancePath: instancePath + "/params", + schemaPath: "#/$defs/TruncateStringParamsDocument/required", + keyword: "required", + params: { missingProperty: "field" }, + message: "must have required property '" + "field" + "'", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + if (data2.max_length === undefined) { + const err6 = { + instancePath: instancePath + "/params", + schemaPath: "#/$defs/TruncateStringParamsDocument/required", + keyword: "required", + params: { missingProperty: "max_length" }, + message: "must have required property '" + "max_length" + "'", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + for (const key1 in data2) { + if (!(key1 === "field" || key1 === "max_length")) { + const err7 = { + instancePath: instancePath + "/params", + schemaPath: "#/$defs/TruncateStringParamsDocument/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } + } + if (data2.field !== undefined) { + let data3 = data2.field; + if (typeof data3 === "string") { + if (!pattern10.test(data3)) { + const err8 = { + instancePath: instancePath + "/params/field", + schemaPath: "#/$defs/TruncateStringParamsDocument/properties/field/pattern", + keyword: "pattern", + params: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$" }, + message: 'must match pattern "' + "^[A-Za-z_][A-Za-z0-9_]*$" + '"', + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } + } else { + const err9 = { + instancePath: instancePath + "/params/field", + schemaPath: "#/$defs/TruncateStringParamsDocument/properties/field/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + } + if (data2.max_length !== undefined) { + let data4 = data2.max_length; + if (!(typeof data4 == "number" && !(data4 % 1) && !isNaN(data4) && isFinite(data4))) { + const err10 = { + instancePath: instancePath + "/params/max_length", + schemaPath: "#/$defs/TruncateStringParamsDocument/properties/max_length/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; + } + if (typeof data4 == "number" && isFinite(data4)) { + if (data4 < 0 || isNaN(data4)) { + const err11 = { + instancePath: instancePath + "/params/max_length", + schemaPath: "#/$defs/TruncateStringParamsDocument/properties/max_length/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } + } + } + } else { + const err12 = { + instancePath: instancePath + "/params", + schemaPath: "#/$defs/TruncateStringParamsDocument/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err12]; + } else { + vErrors.push(err12); } errors++; } } } else { - const err26 = { + const err13 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -35086,45 +41366,43 @@ function validate325( message: "must be object", }; if (vErrors === null) { - vErrors = [err26]; + vErrors = [err13]; } else { - vErrors.push(err26); + vErrors.push(err13); } errors++; } - validate325.errors = vErrors; + validate376.errors = vErrors; return errors === 0; } -validate325.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate376.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema236 = { - anyOf: [ - { $ref: "#/$defs/ScheduleTrigger" }, - { $ref: "#/$defs/DependencyTrigger" }, - { $ref: "#/$defs/ManualTrigger" }, - ], -}; -const schema237 = { +const schema268 = { additionalProperties: false, properties: { - cron: { minLength: 1, title: "Cron", type: "string" }, - depends_on: { items: { type: "string" }, maxItems: 0, title: "Depends On", type: "array" }, - event: { default: null, title: "Event", type: "null" }, - kind: { const: "schedule", title: "Kind", type: "string" }, + kind: { const: "trim_whitespace", title: "Kind", type: "string" }, metadata: { $ref: "#/$defs/JsonObject" }, + params: { $ref: "#/$defs/TrimWhitespaceParamsDocument" }, }, - required: ["kind", "cron"], - title: "ScheduleTrigger", + required: ["kind", "params"], + title: "TrimWhitespaceOperation", + type: "object", +}; +const schema269 = { + additionalProperties: false, + properties: { field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" } }, + required: ["field"], + title: "TrimWhitespaceParamsDocument", type: "object", }; -function validate344( +function validate379( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate344.evaluated; + const evaluated0 = validate379.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -35147,13 +41425,13 @@ function validate344( } errors++; } - if (data.cron === undefined) { + if (data.params === undefined) { const err1 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "cron" }, - message: "must have required property '" + "cron" + "'", + params: { missingProperty: "params" }, + message: "must have required property '" + "params" + "'", }; if (vErrors === null) { vErrors = [err1]; @@ -35163,13 +41441,7 @@ function validate344( errors++; } for (const key0 in data) { - if (!( - key0 === "cron" || - key0 === "depends_on" || - key0 === "event" || - key0 === "kind" || - key0 === "metadata" - )) { + if (!(key0 === "kind" || key0 === "metadata" || key0 === "params")) { const err2 = { instancePath, schemaPath: "#/additionalProperties", @@ -35185,32 +41457,31 @@ function validate344( errors++; } } - if (data.cron !== undefined) { - let data0 = data.cron; - if (typeof data0 === "string") { - if (func2(data0) < 1) { - const err3 = { - instancePath: instancePath + "/cron", - schemaPath: "#/properties/cron/minLength", - keyword: "minLength", - params: { limit: 1 }, - message: "must NOT have fewer than 1 characters", - }; - if (vErrors === null) { - vErrors = [err3]; - } else { - vErrors.push(err3); - } - errors++; - } - } else { - const err4 = { - instancePath: instancePath + "/cron", - schemaPath: "#/properties/cron/type", + if (data.kind !== undefined) { + let data0 = data.kind; + if (typeof data0 !== "string") { + const err3 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/type", keyword: "type", params: { type: "string" }, message: "must be string", }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + if ("trim_whitespace" !== data0) { + const err4 = { + instancePath: instancePath + "/kind", + schemaPath: "#/properties/kind/const", + keyword: "const", + params: { allowedValue: "trim_whitespace" }, + message: "must be equal to constant", + }; if (vErrors === null) { vErrors = [err4]; } else { @@ -35219,16 +41490,30 @@ function validate344( errors++; } } - if (data.depends_on !== undefined) { - let data1 = data.depends_on; - if (Array.isArray(data1)) { - if (data1.length > 0) { + if (data.metadata !== undefined) { + if ( + !validate305(data.metadata, { + instancePath: instancePath + "/metadata", + parentData: data, + parentDataProperty: "metadata", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); + errors = vErrors.length; + } + } + if (data.params !== undefined) { + let data2 = data.params; + if (data2 && typeof data2 == "object" && !Array.isArray(data2)) { + if (data2.field === undefined) { const err5 = { - instancePath: instancePath + "/depends_on", - schemaPath: "#/properties/depends_on/maxItems", - keyword: "maxItems", - params: { limit: 0 }, - message: "must NOT have more than 0 items", + instancePath: instancePath + "/params", + schemaPath: "#/$defs/TrimWhitespaceParamsDocument/required", + keyword: "required", + params: { missingProperty: "field" }, + message: "must have required property '" + "field" + "'", }; if (vErrors === null) { vErrors = [err5]; @@ -35237,61 +41522,183 @@ function validate344( } errors++; } - const len0 = data1.length; - for (let i0 = 0; i0 < len0; i0++) { - if (typeof data1[i0] !== "string") { + for (const key1 in data2) { + if (!(key1 === "field")) { const err6 = { - instancePath: instancePath + "/depends_on/" + i0, - schemaPath: "#/properties/depends_on/items/type", + instancePath: instancePath + "/params", + schemaPath: "#/$defs/TrimWhitespaceParamsDocument/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + } + if (data2.field !== undefined) { + let data3 = data2.field; + if (typeof data3 === "string") { + if (!pattern10.test(data3)) { + const err7 = { + instancePath: instancePath + "/params/field", + schemaPath: "#/$defs/TrimWhitespaceParamsDocument/properties/field/pattern", + keyword: "pattern", + params: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$" }, + message: 'must match pattern "' + "^[A-Za-z_][A-Za-z0-9_]*$" + '"', + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } + } else { + const err8 = { + instancePath: instancePath + "/params/field", + schemaPath: "#/$defs/TrimWhitespaceParamsDocument/properties/field/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err6]; + vErrors = [err8]; } else { - vErrors.push(err6); + vErrors.push(err8); } errors++; } } } else { - const err7 = { - instancePath: instancePath + "/depends_on", - schemaPath: "#/properties/depends_on/type", + const err9 = { + instancePath: instancePath + "/params", + schemaPath: "#/$defs/TrimWhitespaceParamsDocument/type", keyword: "type", - params: { type: "array" }, - message: "must be array", + params: { type: "object" }, + message: "must be object", }; if (vErrors === null) { - vErrors = [err7]; + vErrors = [err9]; } else { - vErrors.push(err7); + vErrors.push(err9); } errors++; } } - if (data.event !== undefined) { - if (data.event !== null) { - const err8 = { - instancePath: instancePath + "/event", - schemaPath: "#/properties/event/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", + } else { + const err10 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; + } + validate379.errors = vErrors; + return errors === 0; +} +validate379.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +const schema270 = { + additionalProperties: false, + properties: { + kind: { const: "default_value", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + params: { $ref: "#/$defs/DefaultValueParamsDocument" }, + }, + required: ["kind", "params"], + title: "DefaultValueOperation", + type: "object", +}; +const schema271 = { + additionalProperties: false, + properties: { + default: { + anyOf: [{ type: "string" }, { type: "integer" }, { type: "number" }, { type: "boolean" }], + title: "Default", + }, + field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" }, + }, + required: ["field", "default"], + title: "DefaultValueParamsDocument", + type: "object", +}; + +function validate382( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate382.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.kind === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "kind" }, + message: "must have required property '" + "kind" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + if (data.params === undefined) { + const err1 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "params" }, + message: "must have required property '" + "params" + "'", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + for (const key0 in data) { + if (!(key0 === "kind" || key0 === "metadata" || key0 === "params")) { + const err2 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", }; if (vErrors === null) { - vErrors = [err8]; + vErrors = [err2]; } else { - vErrors.push(err8); + vErrors.push(err2); } errors++; } } if (data.kind !== undefined) { - let data4 = data.kind; - if (typeof data4 !== "string") { - const err9 = { + let data0 = data.kind; + if (typeof data0 !== "string") { + const err3 = { instancePath: instancePath + "/kind", schemaPath: "#/properties/kind/type", keyword: "type", @@ -35299,31 +41706,31 @@ function validate344( message: "must be string", }; if (vErrors === null) { - vErrors = [err9]; + vErrors = [err3]; } else { - vErrors.push(err9); + vErrors.push(err3); } errors++; } - if ("schedule" !== data4) { - const err10 = { + if ("default_value" !== data0) { + const err4 = { instancePath: instancePath + "/kind", schemaPath: "#/properties/kind/const", keyword: "const", - params: { allowedValue: "schedule" }, + params: { allowedValue: "default_value" }, message: "must be equal to constant", }; if (vErrors === null) { - vErrors = [err10]; + vErrors = [err4]; } else { - vErrors.push(err10); + vErrors.push(err4); } errors++; } } if (data.metadata !== undefined) { if ( - !validate291(data.metadata, { + !validate305(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -35331,12 +41738,213 @@ function validate344( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); errors = vErrors.length; } } + if (data.params !== undefined) { + let data2 = data.params; + if (data2 && typeof data2 == "object" && !Array.isArray(data2)) { + if (data2.field === undefined) { + const err5 = { + instancePath: instancePath + "/params", + schemaPath: "#/$defs/DefaultValueParamsDocument/required", + keyword: "required", + params: { missingProperty: "field" }, + message: "must have required property '" + "field" + "'", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + if (data2.default === undefined) { + const err6 = { + instancePath: instancePath + "/params", + schemaPath: "#/$defs/DefaultValueParamsDocument/required", + keyword: "required", + params: { missingProperty: "default" }, + message: "must have required property '" + "default" + "'", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + for (const key1 in data2) { + if (!(key1 === "default" || key1 === "field")) { + const err7 = { + instancePath: instancePath + "/params", + schemaPath: "#/$defs/DefaultValueParamsDocument/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } + } + if (data2.default !== undefined) { + let data3 = data2.default; + const _errs10 = errors; + let valid3 = false; + const _errs11 = errors; + if (typeof data3 !== "string") { + const err8 = { + instancePath: instancePath + "/params/default", + schemaPath: "#/$defs/DefaultValueParamsDocument/properties/default/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } + var _valid0 = _errs11 === errors; + valid3 = valid3 || _valid0; + const _errs13 = errors; + if (!(typeof data3 == "number" && !(data3 % 1) && !isNaN(data3) && isFinite(data3))) { + const err9 = { + instancePath: instancePath + "/params/default", + schemaPath: "#/$defs/DefaultValueParamsDocument/properties/default/anyOf/1/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + var _valid0 = _errs13 === errors; + valid3 = valid3 || _valid0; + const _errs15 = errors; + if (!(typeof data3 == "number" && isFinite(data3))) { + const err10 = { + instancePath: instancePath + "/params/default", + schemaPath: "#/$defs/DefaultValueParamsDocument/properties/default/anyOf/2/type", + keyword: "type", + params: { type: "number" }, + message: "must be number", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; + } + var _valid0 = _errs15 === errors; + valid3 = valid3 || _valid0; + const _errs17 = errors; + if (typeof data3 !== "boolean") { + const err11 = { + instancePath: instancePath + "/params/default", + schemaPath: "#/$defs/DefaultValueParamsDocument/properties/default/anyOf/3/type", + keyword: "type", + params: { type: "boolean" }, + message: "must be boolean", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } + var _valid0 = _errs17 === errors; + valid3 = valid3 || _valid0; + if (!valid3) { + const err12 = { + instancePath: instancePath + "/params/default", + schemaPath: "#/$defs/DefaultValueParamsDocument/properties/default/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err12]; + } else { + vErrors.push(err12); + } + errors++; + } else { + errors = _errs10; + if (vErrors !== null) { + if (_errs10) { + vErrors.length = _errs10; + } else { + vErrors = null; + } + } + } + } + if (data2.field !== undefined) { + let data4 = data2.field; + if (typeof data4 === "string") { + if (!pattern10.test(data4)) { + const err13 = { + instancePath: instancePath + "/params/field", + schemaPath: "#/$defs/DefaultValueParamsDocument/properties/field/pattern", + keyword: "pattern", + params: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$" }, + message: 'must match pattern "' + "^[A-Za-z_][A-Za-z0-9_]*$" + '"', + }; + if (vErrors === null) { + vErrors = [err13]; + } else { + vErrors.push(err13); + } + errors++; + } + } else { + const err14 = { + instancePath: instancePath + "/params/field", + schemaPath: "#/$defs/DefaultValueParamsDocument/properties/field/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err14]; + } else { + vErrors.push(err14); + } + errors++; + } + } + } else { + const err15 = { + instancePath: instancePath + "/params", + schemaPath: "#/$defs/DefaultValueParamsDocument/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err15]; + } else { + vErrors.push(err15); + } + errors++; + } + } } else { - const err11 = { + const err16 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -35344,38 +41952,95 @@ function validate344( message: "must be object", }; if (vErrors === null) { - vErrors = [err11]; + vErrors = [err16]; } else { - vErrors.push(err11); + vErrors.push(err16); } errors++; } - validate344.errors = vErrors; + validate382.errors = vErrors; return errors === 0; } -validate344.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate382.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema238 = { +const schema272 = { + additionalProperties: false, + properties: { + kind: { const: "filter_rows", title: "Kind", type: "string" }, + metadata: { $ref: "#/$defs/JsonObject" }, + params: { $ref: "#/$defs/FilterRowsParamsDocument" }, + }, + required: ["kind", "params"], + title: "FilterRowsOperation", + type: "object", +}; +const schema273 = { + additionalProperties: false, + properties: { + conditions: { + items: { $ref: "#/$defs/FieldConditionDocument" }, + minItems: 1, + title: "Conditions", + type: "array", + }, + logic: { $ref: "#/$defs/MatchLogic", default: "all" }, + }, + required: ["conditions"], + title: "FilterRowsParamsDocument", + type: "object", +}; +const schema276 = { + description: "How a filter's flat condition list combines.", + enum: ["all", "any"], + title: "MatchLogic", + type: "string", +}; +const schema274 = { additionalProperties: false, properties: { - cron: { default: null, title: "Cron", type: "null" }, - depends_on: { items: { type: "string" }, minItems: 1, title: "Depends On", type: "array" }, - event: { default: null, title: "Event", type: "null" }, - kind: { const: "dependency", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, + field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" }, + op: { $ref: "#/$defs/ComparisonOperator" }, + value: { + anyOf: [ + { type: "string" }, + { type: "integer" }, + { type: "number" }, + { type: "boolean" }, + { + items: { + anyOf: [ + { type: "string" }, + { type: "integer" }, + { type: "number" }, + { type: "boolean" }, + ], + }, + type: "array", + }, + { type: "null" }, + ], + default: null, + title: "Value", + }, }, - required: ["kind", "depends_on"], - title: "DependencyTrigger", + required: ["field", "op"], + title: "FieldConditionDocument", type: "object", }; +const schema275 = { + description: "Closed comparison grammar for ``filter_rows``.", + enum: ["eq", "ne", "gt", "gte", "lt", "lte", "in", "not_in", "is_null", "is_not_null"], + title: "ComparisonOperator", + type: "string", +}; -function validate347( +function validate388( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate347.evaluated; + const evaluated0 = validate388.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -35383,13 +42048,13 @@ function validate347( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.kind === undefined) { + if (data.field === undefined) { const err0 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "kind" }, - message: "must have required property '" + "kind" + "'", + params: { missingProperty: "field" }, + message: "must have required property '" + "field" + "'", }; if (vErrors === null) { vErrors = [err0]; @@ -35398,13 +42063,13 @@ function validate347( } errors++; } - if (data.depends_on === undefined) { + if (data.op === undefined) { const err1 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "depends_on" }, - message: "must have required property '" + "depends_on" + "'", + params: { missingProperty: "op" }, + message: "must have required property '" + "op" + "'", }; if (vErrors === null) { vErrors = [err1]; @@ -35414,13 +42079,7 @@ function validate347( errors++; } for (const key0 in data) { - if (!( - key0 === "cron" || - key0 === "depends_on" || - key0 === "event" || - key0 === "kind" || - key0 === "metadata" - )) { + if (!(key0 === "field" || key0 === "op" || key0 === "value")) { const err2 = { instancePath, schemaPath: "#/additionalProperties", @@ -35436,66 +42095,75 @@ function validate347( errors++; } } - if (data.cron !== undefined) { - if (data.cron !== null) { - const err3 = { - instancePath: instancePath + "/cron", - schemaPath: "#/properties/cron/type", + if (data.field !== undefined) { + let data0 = data.field; + if (typeof data0 === "string") { + if (!pattern10.test(data0)) { + const err3 = { + instancePath: instancePath + "/field", + schemaPath: "#/properties/field/pattern", + keyword: "pattern", + params: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$" }, + message: 'must match pattern "' + "^[A-Za-z_][A-Za-z0-9_]*$" + '"', + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + } else { + const err4 = { + instancePath: instancePath + "/field", + schemaPath: "#/properties/field/type", keyword: "type", - params: { type: "null" }, - message: "must be null", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err3]; + vErrors = [err4]; } else { - vErrors.push(err3); + vErrors.push(err4); } errors++; } } - if (data.depends_on !== undefined) { - let data1 = data.depends_on; - if (Array.isArray(data1)) { - if (data1.length < 1) { - const err4 = { - instancePath: instancePath + "/depends_on", - schemaPath: "#/properties/depends_on/minItems", - keyword: "minItems", - params: { limit: 1 }, - message: "must NOT have fewer than 1 items", - }; - if (vErrors === null) { - vErrors = [err4]; - } else { - vErrors.push(err4); - } - errors++; - } - const len0 = data1.length; - for (let i0 = 0; i0 < len0; i0++) { - if (typeof data1[i0] !== "string") { - const err5 = { - instancePath: instancePath + "/depends_on/" + i0, - schemaPath: "#/properties/depends_on/items/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err5]; - } else { - vErrors.push(err5); - } - errors++; - } + if (data.op !== undefined) { + let data1 = data.op; + if (typeof data1 !== "string") { + const err5 = { + instancePath: instancePath + "/op", + schemaPath: "#/$defs/ComparisonOperator/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); } - } else { + errors++; + } + if (!( + data1 === "eq" || + data1 === "ne" || + data1 === "gt" || + data1 === "gte" || + data1 === "lt" || + data1 === "lte" || + data1 === "in" || + data1 === "not_in" || + data1 === "is_null" || + data1 === "is_not_null" + )) { const err6 = { - instancePath: instancePath + "/depends_on", - schemaPath: "#/properties/depends_on/type", - keyword: "type", - params: { type: "array" }, - message: "must be array", + instancePath: instancePath + "/op", + schemaPath: "#/$defs/ComparisonOperator/enum", + keyword: "enum", + params: { allowedValues: schema275.enum }, + message: "must be equal to one of the allowed values", }; if (vErrors === null) { vErrors = [err6]; @@ -35505,14 +42173,18 @@ function validate347( errors++; } } - if (data.event !== undefined) { - if (data.event !== null) { + if (data.value !== undefined) { + let data2 = data.value; + const _errs8 = errors; + let valid2 = false; + const _errs9 = errors; + if (typeof data2 !== "string") { const err7 = { - instancePath: instancePath + "/event", - schemaPath: "#/properties/event/type", + instancePath: instancePath + "/value", + schemaPath: "#/properties/value/anyOf/0/type", keyword: "type", - params: { type: "null" }, - message: "must be null", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { vErrors = [err7]; @@ -35521,16 +42193,16 @@ function validate347( } errors++; } - } - if (data.kind !== undefined) { - let data4 = data.kind; - if (typeof data4 !== "string") { + var _valid0 = _errs9 === errors; + valid2 = valid2 || _valid0; + const _errs11 = errors; + if (!(typeof data2 == "number" && !(data2 % 1) && !isNaN(data2) && isFinite(data2))) { const err8 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/type", + instancePath: instancePath + "/value", + schemaPath: "#/properties/value/anyOf/1/type", keyword: "type", - params: { type: "string" }, - message: "must be string", + params: { type: "integer" }, + message: "must be integer", }; if (vErrors === null) { vErrors = [err8]; @@ -35539,13 +42211,16 @@ function validate347( } errors++; } - if ("dependency" !== data4) { + var _valid0 = _errs11 === errors; + valid2 = valid2 || _valid0; + const _errs13 = errors; + if (!(typeof data2 == "number" && isFinite(data2))) { const err9 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/const", - keyword: "const", - params: { allowedValue: "dependency" }, - message: "must be equal to constant", + instancePath: instancePath + "/value", + schemaPath: "#/properties/value/anyOf/2/type", + keyword: "type", + params: { type: "number" }, + message: "must be number", }; if (vErrors === null) { vErrors = [err9]; @@ -35554,23 +42229,192 @@ function validate347( } errors++; } - } - if (data.metadata !== undefined) { - if ( - !validate291(data.metadata, { - instancePath: instancePath + "/metadata", - parentData: data, - parentDataProperty: "metadata", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); - errors = vErrors.length; + var _valid0 = _errs13 === errors; + valid2 = valid2 || _valid0; + const _errs15 = errors; + if (typeof data2 !== "boolean") { + const err10 = { + instancePath: instancePath + "/value", + schemaPath: "#/properties/value/anyOf/3/type", + keyword: "type", + params: { type: "boolean" }, + message: "must be boolean", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; + } + var _valid0 = _errs15 === errors; + valid2 = valid2 || _valid0; + const _errs17 = errors; + if (Array.isArray(data2)) { + const len0 = data2.length; + for (let i0 = 0; i0 < len0; i0++) { + let data3 = data2[i0]; + const _errs20 = errors; + let valid5 = false; + const _errs21 = errors; + if (typeof data3 !== "string") { + const err11 = { + instancePath: instancePath + "/value/" + i0, + schemaPath: "#/properties/value/anyOf/4/items/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } + var _valid1 = _errs21 === errors; + valid5 = valid5 || _valid1; + const _errs23 = errors; + if (!(typeof data3 == "number" && !(data3 % 1) && !isNaN(data3) && isFinite(data3))) { + const err12 = { + instancePath: instancePath + "/value/" + i0, + schemaPath: "#/properties/value/anyOf/4/items/anyOf/1/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err12]; + } else { + vErrors.push(err12); + } + errors++; + } + var _valid1 = _errs23 === errors; + valid5 = valid5 || _valid1; + const _errs25 = errors; + if (!(typeof data3 == "number" && isFinite(data3))) { + const err13 = { + instancePath: instancePath + "/value/" + i0, + schemaPath: "#/properties/value/anyOf/4/items/anyOf/2/type", + keyword: "type", + params: { type: "number" }, + message: "must be number", + }; + if (vErrors === null) { + vErrors = [err13]; + } else { + vErrors.push(err13); + } + errors++; + } + var _valid1 = _errs25 === errors; + valid5 = valid5 || _valid1; + const _errs27 = errors; + if (typeof data3 !== "boolean") { + const err14 = { + instancePath: instancePath + "/value/" + i0, + schemaPath: "#/properties/value/anyOf/4/items/anyOf/3/type", + keyword: "type", + params: { type: "boolean" }, + message: "must be boolean", + }; + if (vErrors === null) { + vErrors = [err14]; + } else { + vErrors.push(err14); + } + errors++; + } + var _valid1 = _errs27 === errors; + valid5 = valid5 || _valid1; + if (!valid5) { + const err15 = { + instancePath: instancePath + "/value/" + i0, + schemaPath: "#/properties/value/anyOf/4/items/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err15]; + } else { + vErrors.push(err15); + } + errors++; + } else { + errors = _errs20; + if (vErrors !== null) { + if (_errs20) { + vErrors.length = _errs20; + } else { + vErrors = null; + } + } + } + } + } else { + const err16 = { + instancePath: instancePath + "/value", + schemaPath: "#/properties/value/anyOf/4/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err16]; + } else { + vErrors.push(err16); + } + errors++; + } + var _valid0 = _errs17 === errors; + valid2 = valid2 || _valid0; + const _errs29 = errors; + if (data2 !== null) { + const err17 = { + instancePath: instancePath + "/value", + schemaPath: "#/properties/value/anyOf/5/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err17]; + } else { + vErrors.push(err17); + } + errors++; + } + var _valid0 = _errs29 === errors; + valid2 = valid2 || _valid0; + if (!valid2) { + const err18 = { + instancePath: instancePath + "/value", + schemaPath: "#/properties/value/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err18]; + } else { + vErrors.push(err18); + } + errors++; + } else { + errors = _errs8; + if (vErrors !== null) { + if (_errs8) { + vErrors.length = _errs8; + } else { + vErrors = null; + } + } } } } else { - const err10 = { + const err19 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -35578,38 +42422,24 @@ function validate347( message: "must be object", }; if (vErrors === null) { - vErrors = [err10]; + vErrors = [err19]; } else { - vErrors.push(err10); + vErrors.push(err19); } errors++; } - validate347.errors = vErrors; + validate388.errors = vErrors; return errors === 0; } -validate347.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -const schema239 = { - additionalProperties: false, - properties: { - cron: { default: null, title: "Cron", type: "null" }, - depends_on: { items: { type: "string" }, maxItems: 0, title: "Depends On", type: "array" }, - event: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Event" }, - kind: { const: "manual", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - }, - required: ["kind"], - title: "ManualTrigger", - type: "object", -}; +validate388.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate350( +function validate387( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate350.evaluated; + const evaluated0 = validate387.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -35617,13 +42447,13 @@ function validate350( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.kind === undefined) { + if (data.conditions === undefined) { const err0 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "kind" }, - message: "must have required property '" + "kind" + "'", + params: { missingProperty: "conditions" }, + message: "must have required property '" + "conditions" + "'", }; if (vErrors === null) { vErrors = [err0]; @@ -35633,13 +42463,7 @@ function validate350( errors++; } for (const key0 in data) { - if (!( - key0 === "cron" || - key0 === "depends_on" || - key0 === "event" || - key0 === "kind" || - key0 === "metadata" - )) { + if (!(key0 === "conditions" || key0 === "logic")) { const err1 = { instancePath, schemaPath: "#/additionalProperties", @@ -35655,144 +42479,173 @@ function validate350( errors++; } } - if (data.cron !== undefined) { - if (data.cron !== null) { - const err2 = { - instancePath: instancePath + "/cron", - schemaPath: "#/properties/cron/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err2]; - } else { - vErrors.push(err2); - } - errors++; - } - } - if (data.depends_on !== undefined) { - let data1 = data.depends_on; - if (Array.isArray(data1)) { - if (data1.length > 0) { - const err3 = { - instancePath: instancePath + "/depends_on", - schemaPath: "#/properties/depends_on/maxItems", - keyword: "maxItems", - params: { limit: 0 }, - message: "must NOT have more than 0 items", + if (data.conditions !== undefined) { + let data0 = data.conditions; + if (Array.isArray(data0)) { + if (data0.length < 1) { + const err2 = { + instancePath: instancePath + "/conditions", + schemaPath: "#/properties/conditions/minItems", + keyword: "minItems", + params: { limit: 1 }, + message: "must NOT have fewer than 1 items", }; if (vErrors === null) { - vErrors = [err3]; + vErrors = [err2]; } else { - vErrors.push(err3); + vErrors.push(err2); } errors++; } - const len0 = data1.length; + const len0 = data0.length; for (let i0 = 0; i0 < len0; i0++) { - if (typeof data1[i0] !== "string") { - const err4 = { - instancePath: instancePath + "/depends_on/" + i0, - schemaPath: "#/properties/depends_on/items/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err4]; - } else { - vErrors.push(err4); - } - errors++; + if ( + !validate388(data0[i0], { + instancePath: instancePath + "/conditions/" + i0, + parentData: data0, + parentDataProperty: i0, + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate388.errors : vErrors.concat(validate388.errors); + errors = vErrors.length; } } } else { - const err5 = { - instancePath: instancePath + "/depends_on", - schemaPath: "#/properties/depends_on/type", + const err3 = { + instancePath: instancePath + "/conditions", + schemaPath: "#/properties/conditions/type", keyword: "type", params: { type: "array" }, message: "must be array", }; if (vErrors === null) { - vErrors = [err5]; + vErrors = [err3]; } else { - vErrors.push(err5); + vErrors.push(err3); } errors++; } } - if (data.event !== undefined) { - let data3 = data.event; - const _errs9 = errors; - let valid3 = false; - const _errs10 = errors; - if (typeof data3 !== "string") { - const err6 = { - instancePath: instancePath + "/event", - schemaPath: "#/properties/event/anyOf/0/type", + if (data.logic !== undefined) { + let data2 = data.logic; + if (typeof data2 !== "string") { + const err4 = { + instancePath: instancePath + "/logic", + schemaPath: "#/$defs/MatchLogic/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err6]; + vErrors = [err4]; } else { - vErrors.push(err6); + vErrors.push(err4); } errors++; } - var _valid0 = _errs10 === errors; - valid3 = valid3 || _valid0; - const _errs12 = errors; - if (data3 !== null) { - const err7 = { - instancePath: instancePath + "/event", - schemaPath: "#/properties/event/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", + if (!(data2 === "all" || data2 === "any")) { + const err5 = { + instancePath: instancePath + "/logic", + schemaPath: "#/$defs/MatchLogic/enum", + keyword: "enum", + params: { allowedValues: schema276.enum }, + message: "must be equal to one of the allowed values", }; if (vErrors === null) { - vErrors = [err7]; + vErrors = [err5]; } else { - vErrors.push(err7); + vErrors.push(err5); } errors++; } - var _valid0 = _errs12 === errors; - valid3 = valid3 || _valid0; - if (!valid3) { - const err8 = { - instancePath: instancePath + "/event", - schemaPath: "#/properties/event/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", + } + } else { + const err6 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + validate387.errors = vErrors; + return errors === 0; +} +validate387.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +function validate385( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate385.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.kind === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "kind" }, + message: "must have required property '" + "kind" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + if (data.params === undefined) { + const err1 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "params" }, + message: "must have required property '" + "params" + "'", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + for (const key0 in data) { + if (!(key0 === "kind" || key0 === "metadata" || key0 === "params")) { + const err2 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", }; if (vErrors === null) { - vErrors = [err8]; + vErrors = [err2]; } else { - vErrors.push(err8); + vErrors.push(err2); } errors++; - } else { - errors = _errs9; - if (vErrors !== null) { - if (_errs9) { - vErrors.length = _errs9; - } else { - vErrors = null; - } - } } } if (data.kind !== undefined) { - let data4 = data.kind; - if (typeof data4 !== "string") { - const err9 = { + let data0 = data.kind; + if (typeof data0 !== "string") { + const err3 = { instancePath: instancePath + "/kind", schemaPath: "#/properties/kind/type", keyword: "type", @@ -35800,31 +42653,31 @@ function validate350( message: "must be string", }; if (vErrors === null) { - vErrors = [err9]; + vErrors = [err3]; } else { - vErrors.push(err9); + vErrors.push(err3); } errors++; } - if ("manual" !== data4) { - const err10 = { + if ("filter_rows" !== data0) { + const err4 = { instancePath: instancePath + "/kind", schemaPath: "#/properties/kind/const", keyword: "const", - params: { allowedValue: "manual" }, + params: { allowedValue: "filter_rows" }, message: "must be equal to constant", }; if (vErrors === null) { - vErrors = [err10]; + vErrors = [err4]; } else { - vErrors.push(err10); + vErrors.push(err4); } errors++; } } if (data.metadata !== undefined) { if ( - !validate291(data.metadata, { + !validate305(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -35832,12 +42685,26 @@ function validate350( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); + errors = vErrors.length; + } + } + if (data.params !== undefined) { + if ( + !validate387(data.params, { + instancePath: instancePath + "/params", + parentData: data, + parentDataProperty: "params", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate387.errors : vErrors.concat(validate387.errors); errors = vErrors.length; } } } else { - const err11 = { + const err5 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -35845,24 +42712,24 @@ function validate350( message: "must be object", }; if (vErrors === null) { - vErrors = [err11]; + vErrors = [err5]; } else { - vErrors.push(err11); + vErrors.push(err5); } errors++; } - validate350.errors = vErrors; + validate385.errors = vErrors; return errors === 0; } -validate350.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate385.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate343( +function validate375( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate343.evaluated; + const evaluated0 = validate375.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -35873,9 +42740,9 @@ function validate343( let valid0 = false; const _errs1 = errors; if ( - !validate344(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate376(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate344.errors : vErrors.concat(validate344.errors); + vErrors = vErrors === null ? validate376.errors : vErrors.concat(validate376.errors); errors = vErrors.length; } var _valid0 = _errs1 === errors; @@ -35885,9 +42752,9 @@ function validate343( } const _errs2 = errors; if ( - !validate347(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate379(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate347.errors : vErrors.concat(validate347.errors); + vErrors = vErrors === null ? validate379.errors : vErrors.concat(validate379.errors); errors = vErrors.length; } var _valid0 = _errs2 === errors; @@ -35899,9 +42766,9 @@ function validate343( } const _errs3 = errors; if ( - !validate350(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate382(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate350.errors : vErrors.concat(validate350.errors); + vErrors = vErrors === null ? validate382.errors : vErrors.concat(validate382.errors); errors = vErrors.length; } var _valid0 = _errs3 === errors; @@ -35911,6 +42778,20 @@ function validate343( props0 = true; } } + const _errs4 = errors; + if ( + !validate385(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + ) { + vErrors = vErrors === null ? validate385.errors : vErrors.concat(validate385.errors); + errors = vErrors.length; + } + var _valid0 = _errs4 === errors; + valid0 = valid0 || _valid0; + if (_valid0) { + if (props0 !== true) { + props0 = true; + } + } if (!valid0) { const err0 = { instancePath, @@ -35935,37 +42816,19 @@ function validate343( } } } - validate343.errors = vErrors; + validate375.errors = vErrors; evaluated0.props = props0; return errors === 0; } -validate343.evaluated = { dynamicProps: true, dynamicItems: false }; - -const schema240 = { - additionalProperties: false, - properties: { - color: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Color" }, - icon: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Icon" }, - position: { anyOf: [{ $ref: "#/$defs/PositionDocument" }, { type: "null" }], default: null }, - }, - title: "NodeVisualDocument", - type: "object", -}; -const schema241 = { - additionalProperties: false, - properties: { x: { title: "X", type: "number" }, y: { title: "Y", type: "number" } }, - required: ["x", "y"], - title: "PositionDocument", - type: "object", -}; +validate375.evaluated = { dynamicProps: true, dynamicItems: false }; -function validate354( +function validate372( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate354.evaluated; + const evaluated0 = validate372.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -35973,304 +42836,104 @@ function validate354( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { - for (const key0 in data) { - if (!(key0 === "color" || key0 === "icon" || key0 === "position")) { - const err0 = { - instancePath, - schemaPath: "#/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key0 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); - } - errors++; - } - } - if (data.color !== undefined) { - let data0 = data.color; - const _errs3 = errors; - let valid1 = false; + if (data.join !== undefined) { + let data1 = data.join; const _errs4 = errors; - if (typeof data0 !== "string") { - const err1 = { - instancePath: instancePath + "/color", - schemaPath: "#/properties/color/anyOf/0/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err1]; - } else { - vErrors.push(err1); - } - errors++; + let valid3 = false; + const _errs5 = errors; + if ( + !validate373(data1, { + instancePath: instancePath + "/join", + parentData: data, + parentDataProperty: "join", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate373.errors : vErrors.concat(validate373.errors); + errors = vErrors.length; } - var _valid0 = _errs4 === errors; - valid1 = valid1 || _valid0; + var _valid0 = _errs5 === errors; + valid3 = valid3 || _valid0; const _errs6 = errors; - if (data0 !== null) { - const err2 = { - instancePath: instancePath + "/color", - schemaPath: "#/properties/color/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err2]; - } else { - vErrors.push(err2); - } - errors++; - } - var _valid0 = _errs6 === errors; - valid1 = valid1 || _valid0; - if (!valid1) { - const err3 = { - instancePath: instancePath + "/color", - schemaPath: "#/properties/color/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; - if (vErrors === null) { - vErrors = [err3]; - } else { - vErrors.push(err3); - } - errors++; - } else { - errors = _errs3; - if (vErrors !== null) { - if (_errs3) { - vErrors.length = _errs3; - } else { - vErrors = null; - } - } - } - } - if (data.icon !== undefined) { - let data1 = data.icon; - const _errs9 = errors; - let valid2 = false; - const _errs10 = errors; - if (typeof data1 !== "string") { - const err4 = { - instancePath: instancePath + "/icon", - schemaPath: "#/properties/icon/anyOf/0/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err4]; - } else { - vErrors.push(err4); - } - errors++; - } - var _valid1 = _errs10 === errors; - valid2 = valid2 || _valid1; - const _errs12 = errors; if (data1 !== null) { - const err5 = { - instancePath: instancePath + "/icon", - schemaPath: "#/properties/icon/anyOf/1/type", + const err0 = { + instancePath: instancePath + "/join", + schemaPath: "#/properties/join/anyOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null", }; if (vErrors === null) { - vErrors = [err5]; + vErrors = [err0]; } else { - vErrors.push(err5); + vErrors.push(err0); } errors++; } - var _valid1 = _errs12 === errors; - valid2 = valid2 || _valid1; - if (!valid2) { - const err6 = { - instancePath: instancePath + "/icon", - schemaPath: "#/properties/icon/anyOf", + var _valid0 = _errs6 === errors; + valid3 = valid3 || _valid0; + if (!valid3) { + const err1 = { + instancePath: instancePath + "/join", + schemaPath: "#/properties/join/anyOf", keyword: "anyOf", params: {}, message: "must match a schema in anyOf", }; if (vErrors === null) { - vErrors = [err6]; + vErrors = [err1]; } else { - vErrors.push(err6); + vErrors.push(err1); } errors++; } else { - errors = _errs9; + errors = _errs4; if (vErrors !== null) { - if (_errs9) { - vErrors.length = _errs9; + if (_errs4) { + vErrors.length = _errs4; } else { vErrors = null; } } } } - if (data.position !== undefined) { - let data2 = data.position; - const _errs15 = errors; - let valid3 = false; - const _errs16 = errors; - if (data2 && typeof data2 == "object" && !Array.isArray(data2)) { - if (data2.x === undefined) { - const err7 = { - instancePath: instancePath + "/position", - schemaPath: "#/$defs/PositionDocument/required", - keyword: "required", - params: { missingProperty: "x" }, - message: "must have required property '" + "x" + "'", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; - } - if (data2.y === undefined) { - const err8 = { - instancePath: instancePath + "/position", - schemaPath: "#/$defs/PositionDocument/required", - keyword: "required", - params: { missingProperty: "y" }, - message: "must have required property '" + "y" + "'", - }; - if (vErrors === null) { - vErrors = [err8]; - } else { - vErrors.push(err8); - } - errors++; - } - for (const key1 in data2) { - if (!(key1 === "x" || key1 === "y")) { - const err9 = { - instancePath: instancePath + "/position", - schemaPath: "#/$defs/PositionDocument/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key1 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err9]; - } else { - vErrors.push(err9); - } - errors++; - } - } - if (data2.x !== undefined) { - let data3 = data2.x; - if (!(typeof data3 == "number" && isFinite(data3))) { - const err10 = { - instancePath: instancePath + "/position/x", - schemaPath: "#/$defs/PositionDocument/properties/x/type", - keyword: "type", - params: { type: "number" }, - message: "must be number", - }; - if (vErrors === null) { - vErrors = [err10]; - } else { - vErrors.push(err10); - } - errors++; - } - } - if (data2.y !== undefined) { - let data4 = data2.y; - if (!(typeof data4 == "number" && isFinite(data4))) { - const err11 = { - instancePath: instancePath + "/position/y", - schemaPath: "#/$defs/PositionDocument/properties/y/type", - keyword: "type", - params: { type: "number" }, - message: "must be number", - }; - if (vErrors === null) { - vErrors = [err11]; - } else { - vErrors.push(err11); - } - errors++; - } - } - } else { - const err12 = { - instancePath: instancePath + "/position", - schemaPath: "#/$defs/PositionDocument/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", - }; - if (vErrors === null) { - vErrors = [err12]; - } else { - vErrors.push(err12); - } - errors++; - } - var _valid2 = _errs16 === errors; - valid3 = valid3 || _valid2; - const _errs24 = errors; - if (data2 !== null) { - const err13 = { - instancePath: instancePath + "/position", - schemaPath: "#/properties/position/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err13]; - } else { - vErrors.push(err13); - } - errors++; - } - var _valid2 = _errs24 === errors; - valid3 = valid3 || _valid2; - if (!valid3) { - const err14 = { - instancePath: instancePath + "/position", - schemaPath: "#/properties/position/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", + if (data.operations !== undefined) { + let data2 = data.operations; + if (Array.isArray(data2)) { + const len0 = data2.length; + for (let i0 = 0; i0 < len0; i0++) { + if ( + !validate375(data2[i0], { + instancePath: instancePath + "/operations/" + i0, + parentData: data2, + parentDataProperty: i0, + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate375.errors : vErrors.concat(validate375.errors); + errors = vErrors.length; + } + } + } else { + const err2 = { + instancePath: instancePath + "/operations", + schemaPath: "#/properties/operations/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", }; if (vErrors === null) { - vErrors = [err14]; + vErrors = [err2]; } else { - vErrors.push(err14); + vErrors.push(err2); } errors++; - } else { - errors = _errs15; - if (vErrors !== null) { - if (_errs15) { - vErrors.length = _errs15; - } else { - vErrors = null; - } - } } } } else { - const err15 = { + const err3 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -36278,24 +42941,24 @@ function validate354( message: "must be object", }; if (vErrors === null) { - vErrors = [err15]; + vErrors = [err3]; } else { - vErrors.push(err15); + vErrors.push(err3); } errors++; } - validate354.errors = vErrors; + validate372.errors = vErrors; return errors === 0; } -validate354.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate372.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate315( +function validate371( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate315.evaluated; + const evaluated0 = validate371.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -36391,7 +43054,7 @@ function validate315( errors++; } for (const key0 in data) { - if (!func1.call(schema219.properties, key0)) { + if (!func1.call(schema259.properties, key0)) { const err5 = { instancePath, schemaPath: "#/additionalProperties", @@ -36409,7 +43072,7 @@ function validate315( } if (data.config !== undefined) { if ( - !validate316(data.config, { + !validate372(data.config, { instancePath: instancePath + "/config", parentData: data, parentDataProperty: "config", @@ -36417,7 +43080,7 @@ function validate315( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate316.errors : vErrors.concat(validate316.errors); + vErrors = vErrors === null ? validate372.errors : vErrors.concat(validate372.errors); errors = vErrors.length; } } @@ -36427,7 +43090,7 @@ function validate315( let valid2 = false; const _errs7 = errors; if ( - !validate321(data1, { + !validate335(data1, { instancePath: instancePath + "/cursor", parentData: data, parentDataProperty: "cursor", @@ -36435,7 +43098,7 @@ function validate315( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate321.errors : vErrors.concat(validate321.errors); + vErrors = vErrors === null ? validate335.errors : vErrors.concat(validate335.errors); errors = vErrors.length; } var _valid0 = _errs7 === errors; @@ -36489,7 +43152,7 @@ function validate315( const len0 = data2.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate325(data2[i0], { + !validate339(data2[i0], { instancePath: instancePath + "/fields/" + i0, parentData: data2, parentDataProperty: i0, @@ -36497,7 +43160,7 @@ function validate315( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate325.errors : vErrors.concat(validate325.errors); + vErrors = vErrors === null ? validate339.errors : vErrors.concat(validate339.errors); errors = vErrors.length; } } @@ -36557,7 +43220,7 @@ function validate315( let valid5 = false; const _errs19 = errors; if ( - !validate316(data6, { + !validate372(data6, { instancePath: instancePath + "/params", parentData: data, parentDataProperty: "params", @@ -36565,7 +43228,7 @@ function validate315( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate316.errors : vErrors.concat(validate316.errors); + vErrors = vErrors === null ? validate372.errors : vErrors.concat(validate372.errors); errors = vErrors.length; } var _valid1 = _errs19 === errors; @@ -36619,7 +43282,7 @@ function validate315( let valid6 = false; const _errs25 = errors; if ( - !validate343(data7, { + !validate357(data7, { instancePath: instancePath + "/trigger", parentData: data, parentDataProperty: "trigger", @@ -36627,7 +43290,7 @@ function validate315( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate343.errors : vErrors.concat(validate343.errors); + vErrors = vErrors === null ? validate357.errors : vErrors.concat(validate357.errors); errors = vErrors.length; } var _valid2 = _errs25 === errors; @@ -36692,12 +43355,12 @@ function validate315( } errors++; } - if ("source" !== data8) { + if ("transform" !== data8) { const err16 = { instancePath: instancePath + "/type", schemaPath: "#/properties/type/const", keyword: "const", - params: { allowedValue: "source" }, + params: { allowedValue: "transform" }, message: "must be equal to constant", }; if (vErrors === null) { @@ -36714,7 +43377,7 @@ function validate315( let valid7 = false; const _errs32 = errors; if ( - !validate354(data9, { + !validate368(data9, { instancePath: instancePath + "/visual", parentData: data, parentDataProperty: "visual", @@ -36722,7 +43385,7 @@ function validate315( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate354.errors : vErrors.concat(validate354.errors); + vErrors = vErrors === null ? validate368.errors : vErrors.concat(validate368.errors); errors = vErrors.length; } var _valid3 = _errs32 === errors; @@ -36785,16 +43448,16 @@ function validate315( } errors++; } - validate315.errors = vErrors; + validate371.errors = vErrors; return errors === 0; } -validate315.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate371.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema242 = { +const schema277 = { additionalProperties: false, not: { required: ["config", "params"] }, properties: { - config: { $ref: "#/$defs/TransformNodeConfigDocument" }, + config: { $ref: "#/$defs/TargetNodeConfigDocument" }, cursor: { anyOf: [{ $ref: "#/$defs/CursorStrategyDocument" }, { type: "null" }], default: null, @@ -36803,73 +43466,114 @@ const schema242 = { id: { title: "Id", type: "string" }, name: { title: "Name", type: "string" }, params: { - anyOf: [{ $ref: "#/$defs/TransformNodeConfigDocument" }, { type: "null" }], + anyOf: [{ $ref: "#/$defs/TargetNodeConfigDocument" }, { type: "null" }], default: null, deprecated: true, "x-dander-canonical-name": "config", }, trigger: { anyOf: [{ $ref: "#/$defs/TriggerDocument" }, { type: "null" }], default: null }, - type: { const: "transform", title: "Type", type: "string" }, + type: { const: "target", title: "Type", type: "string" }, visual: { anyOf: [{ $ref: "#/$defs/NodeVisualDocument" }, { type: "null" }], default: null }, }, required: ["id", "type", "name"], - title: "TransformNodeDocument", + title: "TargetNodeDocument", type: "object", }; -const schema243 = { +const schema278 = { additionalProperties: { $ref: "#/$defs/JsonValue" }, properties: { - join: { anyOf: [{ $ref: "#/$defs/TransformJoinDocument" }, { type: "null" }], default: null }, - operations: { - items: { $ref: "#/$defs/OperationDocument" }, - title: "Operations", - type: "array", - }, + writer: { anyOf: [{ $ref: "#/$defs/WriterDocument" }, { type: "null" }], default: null }, }, - title: "TransformNodeConfigDocument", + title: "TargetNodeConfigDocument", type: "object", }; -const schema245 = { +const schema280 = { additionalProperties: false, properties: { - keys: { - items: { $ref: "#/$defs/ExecutableJoinKeyDocument" }, - minItems: 1, - title: "Keys", - type: "array", + clustering: { items: { type: "string" }, maxItems: 4, title: "Clustering", type: "array" }, + cursor_field: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Cursor Field", }, - left_input: { minLength: 1, title: "Left Input", type: "string" }, - right_input: { minLength: 1, title: "Right Input", type: "string" }, - type: { $ref: "#/$defs/ExecutableJoinType" }, + destination: { $ref: "#/$defs/DestinationDocument" }, + max_batch_rows: { + default: 10000, + exclusiveMinimum: 0, + maximum: 100000, + title: "Max Batch Rows", + type: "integer", + }, + partitioning: { + anyOf: [{ $ref: "#/$defs/PartitioningDocument" }, { type: "null" }], + default: null, + }, + schema_evolution: { $ref: "#/$defs/SchemaEvolution", default: "strict" }, + transport: { + default: "load_job", + enum: ["load_job", "storage_write", "copy"], + title: "Transport", + type: "string", + }, + write_mode: { $ref: "#/$defs/WriteMode" }, }, - required: ["left_input", "right_input", "type", "keys"], - title: "TransformJoinDocument", + required: ["write_mode", "destination"], + title: "WriterDocument", type: "object", }; -const schema246 = { +const schema281 = { additionalProperties: false, properties: { - left: { minLength: 1, title: "Left", type: "string" }, - right: { minLength: 1, title: "Right", type: "string" }, + business_key: { items: { type: "string" }, title: "Business Key", type: "array" }, + dataset: { minLength: 1, title: "Dataset", type: "string" }, + project: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Project" }, + table: { minLength: 1, title: "Table", type: "string" }, }, - required: ["left", "right"], - title: "ExecutableJoinKeyDocument", + required: ["dataset", "table"], + title: "DestinationDocument", type: "object", }; -const schema247 = { - description: "BigQuery join kinds supported by an executable transform node.", - enum: ["inner", "left", "right", "full"], - title: "ExecutableJoinType", +const schema284 = { + description: "How a writer handles declared columns absent from an existing target.", + enum: ["strict", "additive"], + title: "SchemaEvolution", + type: "string", +}; +const schema285 = { + description: "Supported load strategies.", + enum: ["scd1", "scd2", "snapshot", "incremental", "replace"], + title: "WriteMode", + type: "string", +}; +const schema282 = { + additionalProperties: false, + properties: { + field: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Field" }, + granularity: { $ref: "#/$defs/PartitioningType", default: "day" }, + require_partition_filter: { + default: false, + title: "Require Partition Filter", + type: "boolean", + }, + }, + title: "PartitioningDocument", + type: "object", +}; +const schema283 = { + description: + "The closed set of time-unit partitioning granularities a `PartitioningSpec` may declare.\n\nA `StrEnum` (matching the `WriteMode`/`TransformationKind`/`JoinType` convention elsewhere in\n`dander.pipeline`), so it serializes to/from its plain string value stably in YAML and JSON;\nan out-of-set value fails validation with a clear `ValidationError`. Scope is deliberately\nlimited to BigQuery time-unit partitioning — integer-range partitioning is a deferred future\nmember (see `steering/02-engineering.md` on avoiding speculative generality).\n\nAttributes:\n HOUR: Hourly partitions.\n DAY: Daily partitions — the common case and BigQuery's default granularity.\n MONTH: Monthly partitions.\n YEAR: Yearly partitions.", + enum: ["hour", "day", "month", "year"], + title: "PartitioningType", type: "string", }; -function validate359( +function validate403( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate359.evaluated; + const evaluated0 = validate403.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -36877,13 +43581,179 @@ function validate359( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.left_input === undefined) { + for (const key0 in data) { + if (!(key0 === "field" || key0 === "granularity" || key0 === "require_partition_filter")) { + const err0 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + } + if (data.field !== undefined) { + let data0 = data.field; + const _errs3 = errors; + let valid1 = false; + const _errs4 = errors; + if (typeof data0 !== "string") { + const err1 = { + instancePath: instancePath + "/field", + schemaPath: "#/properties/field/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + var _valid0 = _errs4 === errors; + valid1 = valid1 || _valid0; + const _errs6 = errors; + if (data0 !== null) { + const err2 = { + instancePath: instancePath + "/field", + schemaPath: "#/properties/field/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + var _valid0 = _errs6 === errors; + valid1 = valid1 || _valid0; + if (!valid1) { + const err3 = { + instancePath: instancePath + "/field", + schemaPath: "#/properties/field/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } else { + errors = _errs3; + if (vErrors !== null) { + if (_errs3) { + vErrors.length = _errs3; + } else { + vErrors = null; + } + } + } + } + if (data.granularity !== undefined) { + let data1 = data.granularity; + if (typeof data1 !== "string") { + const err4 = { + instancePath: instancePath + "/granularity", + schemaPath: "#/$defs/PartitioningType/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + if (!(data1 === "hour" || data1 === "day" || data1 === "month" || data1 === "year")) { + const err5 = { + instancePath: instancePath + "/granularity", + schemaPath: "#/$defs/PartitioningType/enum", + keyword: "enum", + params: { allowedValues: schema283.enum }, + message: "must be equal to one of the allowed values", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + } + if (data.require_partition_filter !== undefined) { + if (typeof data.require_partition_filter !== "boolean") { + const err6 = { + instancePath: instancePath + "/require_partition_filter", + schemaPath: "#/properties/require_partition_filter/type", + keyword: "type", + params: { type: "boolean" }, + message: "must be boolean", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + } + } else { + const err7 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } + validate403.errors = vErrors; + return errors === 0; +} +validate403.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +function validate402( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + let vErrors = null; + let errors = 0; + const evaluated0 = validate402.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.write_mode === undefined) { const err0 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "left_input" }, - message: "must have required property '" + "left_input" + "'", + params: { missingProperty: "write_mode" }, + message: "must have required property '" + "write_mode" + "'", }; if (vErrors === null) { vErrors = [err0]; @@ -36892,13 +43762,13 @@ function validate359( } errors++; } - if (data.right_input === undefined) { + if (data.destination === undefined) { const err1 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "right_input" }, - message: "must have required property '" + "right_input" + "'", + params: { missingProperty: "destination" }, + message: "must have required property '" + "destination" + "'", }; if (vErrors === null) { vErrors = [err1]; @@ -36907,44 +43777,18 @@ function validate359( } errors++; } - if (data.type === undefined) { - const err2 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "type" }, - message: "must have required property '" + "type" + "'", - }; - if (vErrors === null) { - vErrors = [err2]; - } else { - vErrors.push(err2); - } - errors++; - } - if (data.keys === undefined) { - const err3 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "keys" }, - message: "must have required property '" + "keys" + "'", - }; - if (vErrors === null) { - vErrors = [err3]; - } else { - vErrors.push(err3); - } - errors++; - } for (const key0 in data) { if (!( - key0 === "keys" || - key0 === "left_input" || - key0 === "right_input" || - key0 === "type" + key0 === "clustering" || + key0 === "cursor_field" || + key0 === "destination" || + key0 === "max_batch_rows" || + key0 === "partitioning" || + key0 === "schema_evolution" || + key0 === "transport" || + key0 === "write_mode" )) { - const err4 = { + const err2 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", @@ -36952,138 +43796,194 @@ function validate359( message: "must NOT have additional properties", }; if (vErrors === null) { - vErrors = [err4]; + vErrors = [err2]; } else { - vErrors.push(err4); + vErrors.push(err2); } errors++; } } - if (data.keys !== undefined) { - let data0 = data.keys; + if (data.clustering !== undefined) { + let data0 = data.clustering; if (Array.isArray(data0)) { - if (data0.length < 1) { - const err5 = { - instancePath: instancePath + "/keys", - schemaPath: "#/properties/keys/minItems", - keyword: "minItems", - params: { limit: 1 }, - message: "must NOT have fewer than 1 items", + if (data0.length > 4) { + const err3 = { + instancePath: instancePath + "/clustering", + schemaPath: "#/properties/clustering/maxItems", + keyword: "maxItems", + params: { limit: 4 }, + message: "must NOT have more than 4 items", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + const len0 = data0.length; + for (let i0 = 0; i0 < len0; i0++) { + if (typeof data0[i0] !== "string") { + const err4 = { + instancePath: instancePath + "/clustering/" + i0, + schemaPath: "#/properties/clustering/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + } + } else { + const err5 = { + instancePath: instancePath + "/clustering", + schemaPath: "#/properties/clustering/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + } + if (data.cursor_field !== undefined) { + let data2 = data.cursor_field; + const _errs7 = errors; + let valid3 = false; + const _errs8 = errors; + if (typeof data2 !== "string") { + const err6 = { + instancePath: instancePath + "/cursor_field", + schemaPath: "#/properties/cursor_field/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + var _valid0 = _errs8 === errors; + valid3 = valid3 || _valid0; + const _errs10 = errors; + if (data2 !== null) { + const err7 = { + instancePath: instancePath + "/cursor_field", + schemaPath: "#/properties/cursor_field/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } + var _valid0 = _errs10 === errors; + valid3 = valid3 || _valid0; + if (!valid3) { + const err8 = { + instancePath: instancePath + "/cursor_field", + schemaPath: "#/properties/cursor_field/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } else { + errors = _errs7; + if (vErrors !== null) { + if (_errs7) { + vErrors.length = _errs7; + } else { + vErrors = null; + } + } + } + } + if (data.destination !== undefined) { + let data3 = data.destination; + if (data3 && typeof data3 == "object" && !Array.isArray(data3)) { + if (data3.dataset === undefined) { + const err9 = { + instancePath: instancePath + "/destination", + schemaPath: "#/$defs/DestinationDocument/required", + keyword: "required", + params: { missingProperty: "dataset" }, + message: "must have required property '" + "dataset" + "'", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + if (data3.table === undefined) { + const err10 = { + instancePath: instancePath + "/destination", + schemaPath: "#/$defs/DestinationDocument/required", + keyword: "required", + params: { missingProperty: "table" }, + message: "must have required property '" + "table" + "'", }; if (vErrors === null) { - vErrors = [err5]; + vErrors = [err10]; } else { - vErrors.push(err5); + vErrors.push(err10); } errors++; } - const len0 = data0.length; - for (let i0 = 0; i0 < len0; i0++) { - let data1 = data0[i0]; - if (data1 && typeof data1 == "object" && !Array.isArray(data1)) { - if (data1.left === undefined) { - const err6 = { - instancePath: instancePath + "/keys/" + i0, - schemaPath: "#/$defs/ExecutableJoinKeyDocument/required", - keyword: "required", - params: { missingProperty: "left" }, - message: "must have required property '" + "left" + "'", - }; - if (vErrors === null) { - vErrors = [err6]; - } else { - vErrors.push(err6); - } - errors++; - } - if (data1.right === undefined) { - const err7 = { - instancePath: instancePath + "/keys/" + i0, - schemaPath: "#/$defs/ExecutableJoinKeyDocument/required", - keyword: "required", - params: { missingProperty: "right" }, - message: "must have required property '" + "right" + "'", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; - } - for (const key1 in data1) { - if (!(key1 === "left" || key1 === "right")) { - const err8 = { - instancePath: instancePath + "/keys/" + i0, - schemaPath: "#/$defs/ExecutableJoinKeyDocument/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key1 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err8]; - } else { - vErrors.push(err8); - } - errors++; - } - } - if (data1.left !== undefined) { - let data2 = data1.left; - if (typeof data2 === "string") { - if (func2(data2) < 1) { - const err9 = { - instancePath: instancePath + "/keys/" + i0 + "/left", - schemaPath: "#/$defs/ExecutableJoinKeyDocument/properties/left/minLength", - keyword: "minLength", - params: { limit: 1 }, - message: "must NOT have fewer than 1 characters", - }; - if (vErrors === null) { - vErrors = [err9]; - } else { - vErrors.push(err9); - } - errors++; - } - } else { - const err10 = { - instancePath: instancePath + "/keys/" + i0 + "/left", - schemaPath: "#/$defs/ExecutableJoinKeyDocument/properties/left/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err10]; - } else { - vErrors.push(err10); - } - errors++; - } + for (const key1 in data3) { + if (!( + key1 === "business_key" || + key1 === "dataset" || + key1 === "project" || + key1 === "table" + )) { + const err11 = { + instancePath: instancePath + "/destination", + schemaPath: "#/$defs/DestinationDocument/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); } - if (data1.right !== undefined) { - let data3 = data1.right; - if (typeof data3 === "string") { - if (func2(data3) < 1) { - const err11 = { - instancePath: instancePath + "/keys/" + i0 + "/right", - schemaPath: "#/$defs/ExecutableJoinKeyDocument/properties/right/minLength", - keyword: "minLength", - params: { limit: 1 }, - message: "must NOT have fewer than 1 characters", - }; - if (vErrors === null) { - vErrors = [err11]; - } else { - vErrors.push(err11); - } - errors++; - } - } else { + errors++; + } + } + if (data3.business_key !== undefined) { + let data4 = data3.business_key; + if (Array.isArray(data4)) { + const len1 = data4.length; + for (let i1 = 0; i1 < len1; i1++) { + if (typeof data4[i1] !== "string") { const err12 = { - instancePath: instancePath + "/keys/" + i0 + "/right", - schemaPath: "#/$defs/ExecutableJoinKeyDocument/properties/right/type", + instancePath: instancePath + "/destination/business_key/" + i1, + schemaPath: "#/$defs/DestinationDocument/properties/business_key/items/type", keyword: "type", params: { type: "string" }, message: "must be string", @@ -37098,11 +43998,11 @@ function validate359( } } else { const err13 = { - instancePath: instancePath + "/keys/" + i0, - schemaPath: "#/$defs/ExecutableJoinKeyDocument/type", + instancePath: instancePath + "/destination/business_key", + schemaPath: "#/$defs/DestinationDocument/properties/business_key/type", keyword: "type", - params: { type: "object" }, - message: "must be object", + params: { type: "array" }, + message: "must be array", }; if (vErrors === null) { vErrors = [err13]; @@ -37112,418 +44012,374 @@ function validate359( errors++; } } + if (data3.dataset !== undefined) { + let data6 = data3.dataset; + if (typeof data6 === "string") { + if (func3(data6) < 1) { + const err14 = { + instancePath: instancePath + "/destination/dataset", + schemaPath: "#/$defs/DestinationDocument/properties/dataset/minLength", + keyword: "minLength", + params: { limit: 1 }, + message: "must NOT have fewer than 1 characters", + }; + if (vErrors === null) { + vErrors = [err14]; + } else { + vErrors.push(err14); + } + errors++; + } + } else { + const err15 = { + instancePath: instancePath + "/destination/dataset", + schemaPath: "#/$defs/DestinationDocument/properties/dataset/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err15]; + } else { + vErrors.push(err15); + } + errors++; + } + } + if (data3.project !== undefined) { + let data7 = data3.project; + const _errs23 = errors; + let valid8 = false; + const _errs24 = errors; + if (typeof data7 !== "string") { + const err16 = { + instancePath: instancePath + "/destination/project", + schemaPath: "#/$defs/DestinationDocument/properties/project/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err16]; + } else { + vErrors.push(err16); + } + errors++; + } + var _valid1 = _errs24 === errors; + valid8 = valid8 || _valid1; + const _errs26 = errors; + if (data7 !== null) { + const err17 = { + instancePath: instancePath + "/destination/project", + schemaPath: "#/$defs/DestinationDocument/properties/project/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err17]; + } else { + vErrors.push(err17); + } + errors++; + } + var _valid1 = _errs26 === errors; + valid8 = valid8 || _valid1; + if (!valid8) { + const err18 = { + instancePath: instancePath + "/destination/project", + schemaPath: "#/$defs/DestinationDocument/properties/project/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err18]; + } else { + vErrors.push(err18); + } + errors++; + } else { + errors = _errs23; + if (vErrors !== null) { + if (_errs23) { + vErrors.length = _errs23; + } else { + vErrors = null; + } + } + } + } + if (data3.table !== undefined) { + let data8 = data3.table; + if (typeof data8 === "string") { + if (func3(data8) < 1) { + const err19 = { + instancePath: instancePath + "/destination/table", + schemaPath: "#/$defs/DestinationDocument/properties/table/minLength", + keyword: "minLength", + params: { limit: 1 }, + message: "must NOT have fewer than 1 characters", + }; + if (vErrors === null) { + vErrors = [err19]; + } else { + vErrors.push(err19); + } + errors++; + } + } else { + const err20 = { + instancePath: instancePath + "/destination/table", + schemaPath: "#/$defs/DestinationDocument/properties/table/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err20]; + } else { + vErrors.push(err20); + } + errors++; + } + } } else { - const err14 = { - instancePath: instancePath + "/keys", - schemaPath: "#/properties/keys/type", + const err21 = { + instancePath: instancePath + "/destination", + schemaPath: "#/$defs/DestinationDocument/type", keyword: "type", - params: { type: "array" }, - message: "must be array", + params: { type: "object" }, + message: "must be object", }; if (vErrors === null) { - vErrors = [err14]; + vErrors = [err21]; } else { - vErrors.push(err14); + vErrors.push(err21); } errors++; } } - if (data.left_input !== undefined) { - let data4 = data.left_input; - if (typeof data4 === "string") { - if (func2(data4) < 1) { - const err15 = { - instancePath: instancePath + "/left_input", - schemaPath: "#/properties/left_input/minLength", - keyword: "minLength", - params: { limit: 1 }, - message: "must NOT have fewer than 1 characters", - }; - if (vErrors === null) { - vErrors = [err15]; - } else { - vErrors.push(err15); - } - errors++; - } - } else { - const err16 = { - instancePath: instancePath + "/left_input", - schemaPath: "#/properties/left_input/type", + if (data.max_batch_rows !== undefined) { + let data9 = data.max_batch_rows; + if (!(typeof data9 == "number" && !(data9 % 1) && !isNaN(data9) && isFinite(data9))) { + const err22 = { + instancePath: instancePath + "/max_batch_rows", + schemaPath: "#/properties/max_batch_rows/type", keyword: "type", - params: { type: "string" }, - message: "must be string", + params: { type: "integer" }, + message: "must be integer", }; if (vErrors === null) { - vErrors = [err16]; + vErrors = [err22]; } else { - vErrors.push(err16); + vErrors.push(err22); } errors++; } - } - if (data.right_input !== undefined) { - let data5 = data.right_input; - if (typeof data5 === "string") { - if (func2(data5) < 1) { - const err17 = { - instancePath: instancePath + "/right_input", - schemaPath: "#/properties/right_input/minLength", - keyword: "minLength", - params: { limit: 1 }, - message: "must NOT have fewer than 1 characters", + if (typeof data9 == "number" && isFinite(data9)) { + if (data9 > 100000 || isNaN(data9)) { + const err23 = { + instancePath: instancePath + "/max_batch_rows", + schemaPath: "#/properties/max_batch_rows/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 100000 }, + message: "must be <= 100000", }; if (vErrors === null) { - vErrors = [err17]; + vErrors = [err23]; } else { - vErrors.push(err17); + vErrors.push(err23); } errors++; } - } else { - const err18 = { - instancePath: instancePath + "/right_input", - schemaPath: "#/properties/right_input/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err18]; - } else { - vErrors.push(err18); + if (data9 <= 0 || isNaN(data9)) { + const err24 = { + instancePath: instancePath + "/max_batch_rows", + schemaPath: "#/properties/max_batch_rows/exclusiveMinimum", + keyword: "exclusiveMinimum", + params: { comparison: ">", limit: 0 }, + message: "must be > 0", + }; + if (vErrors === null) { + vErrors = [err24]; + } else { + vErrors.push(err24); + } + errors++; } - errors++; } } - if (data.type !== undefined) { - let data6 = data.type; - if (typeof data6 !== "string") { - const err19 = { - instancePath: instancePath + "/type", - schemaPath: "#/$defs/ExecutableJoinType/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err19]; - } else { - vErrors.push(err19); - } - errors++; + if (data.partitioning !== undefined) { + let data10 = data.partitioning; + const _errs33 = errors; + let valid9 = false; + const _errs34 = errors; + if ( + !validate403(data10, { + instancePath: instancePath + "/partitioning", + parentData: data, + parentDataProperty: "partitioning", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate403.errors : vErrors.concat(validate403.errors); + errors = vErrors.length; } - if (!(data6 === "inner" || data6 === "left" || data6 === "right" || data6 === "full")) { - const err20 = { - instancePath: instancePath + "/type", - schemaPath: "#/$defs/ExecutableJoinType/enum", - keyword: "enum", - params: { allowedValues: schema247.enum }, - message: "must be equal to one of the allowed values", + var _valid2 = _errs34 === errors; + valid9 = valid9 || _valid2; + const _errs35 = errors; + if (data10 !== null) { + const err25 = { + instancePath: instancePath + "/partitioning", + schemaPath: "#/properties/partitioning/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", }; if (vErrors === null) { - vErrors = [err20]; + vErrors = [err25]; } else { - vErrors.push(err20); + vErrors.push(err25); } errors++; } - } - } else { - const err21 = { - instancePath, - schemaPath: "#/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", - }; - if (vErrors === null) { - vErrors = [err21]; - } else { - vErrors.push(err21); - } - errors++; - } - validate359.errors = vErrors; - return errors === 0; -} -validate359.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -const schema248 = { - anyOf: [ - { $ref: "#/$defs/TruncateStringOperation" }, - { $ref: "#/$defs/TrimWhitespaceOperation" }, - { $ref: "#/$defs/DefaultValueOperation" }, - { $ref: "#/$defs/FilterRowsOperation" }, - ], -}; -const schema249 = { - additionalProperties: false, - properties: { - kind: { const: "truncate_string", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - params: { $ref: "#/$defs/TruncateStringParamsDocument" }, - }, - required: ["kind", "params"], - title: "TruncateStringOperation", - type: "object", -}; -const schema250 = { - additionalProperties: false, - properties: { - field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" }, - max_length: { minimum: 0, title: "Max Length", type: "integer" }, - }, - required: ["field", "max_length"], - title: "TruncateStringParamsDocument", - type: "object", -}; - -function validate362( - data, - { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, -) { - let vErrors = null; - let errors = 0; - const evaluated0 = validate362.evaluated; - if (evaluated0.dynamicProps) { - evaluated0.props = undefined; - } - if (evaluated0.dynamicItems) { - evaluated0.items = undefined; - } - if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.kind === undefined) { - const err0 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "kind" }, - message: "must have required property '" + "kind" + "'", - }; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); - } - errors++; - } - if (data.params === undefined) { - const err1 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "params" }, - message: "must have required property '" + "params" + "'", - }; - if (vErrors === null) { - vErrors = [err1]; + var _valid2 = _errs35 === errors; + valid9 = valid9 || _valid2; + if (!valid9) { + const err26 = { + instancePath: instancePath + "/partitioning", + schemaPath: "#/properties/partitioning/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err26]; + } else { + vErrors.push(err26); + } + errors++; } else { - vErrors.push(err1); + errors = _errs33; + if (vErrors !== null) { + if (_errs33) { + vErrors.length = _errs33; + } else { + vErrors = null; + } + } } - errors++; } - for (const key0 in data) { - if (!(key0 === "kind" || key0 === "metadata" || key0 === "params")) { - const err2 = { - instancePath, - schemaPath: "#/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key0 }, - message: "must NOT have additional properties", + if (data.schema_evolution !== undefined) { + let data11 = data.schema_evolution; + if (typeof data11 !== "string") { + const err27 = { + instancePath: instancePath + "/schema_evolution", + schemaPath: "#/$defs/SchemaEvolution/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err2]; + vErrors = [err27]; } else { - vErrors.push(err2); + vErrors.push(err27); + } + errors++; + } + if (!(data11 === "strict" || data11 === "additive")) { + const err28 = { + instancePath: instancePath + "/schema_evolution", + schemaPath: "#/$defs/SchemaEvolution/enum", + keyword: "enum", + params: { allowedValues: schema284.enum }, + message: "must be equal to one of the allowed values", + }; + if (vErrors === null) { + vErrors = [err28]; + } else { + vErrors.push(err28); } errors++; } } - if (data.kind !== undefined) { - let data0 = data.kind; - if (typeof data0 !== "string") { - const err3 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/type", + if (data.transport !== undefined) { + let data12 = data.transport; + if (typeof data12 !== "string") { + const err29 = { + instancePath: instancePath + "/transport", + schemaPath: "#/properties/transport/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err3]; + vErrors = [err29]; } else { - vErrors.push(err3); + vErrors.push(err29); } errors++; } - if ("truncate_string" !== data0) { - const err4 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/const", - keyword: "const", - params: { allowedValue: "truncate_string" }, - message: "must be equal to constant", + if (!(data12 === "load_job" || data12 === "storage_write" || data12 === "copy")) { + const err30 = { + instancePath: instancePath + "/transport", + schemaPath: "#/properties/transport/enum", + keyword: "enum", + params: { allowedValues: schema280.properties.transport.enum }, + message: "must be equal to one of the allowed values", }; if (vErrors === null) { - vErrors = [err4]; + vErrors = [err30]; } else { - vErrors.push(err4); + vErrors.push(err30); } errors++; } } - if (data.metadata !== undefined) { - if ( - !validate291(data.metadata, { - instancePath: instancePath + "/metadata", - parentData: data, - parentDataProperty: "metadata", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); - errors = vErrors.length; - } - } - if (data.params !== undefined) { - let data2 = data.params; - if (data2 && typeof data2 == "object" && !Array.isArray(data2)) { - if (data2.field === undefined) { - const err5 = { - instancePath: instancePath + "/params", - schemaPath: "#/$defs/TruncateStringParamsDocument/required", - keyword: "required", - params: { missingProperty: "field" }, - message: "must have required property '" + "field" + "'", - }; - if (vErrors === null) { - vErrors = [err5]; - } else { - vErrors.push(err5); - } - errors++; - } - if (data2.max_length === undefined) { - const err6 = { - instancePath: instancePath + "/params", - schemaPath: "#/$defs/TruncateStringParamsDocument/required", - keyword: "required", - params: { missingProperty: "max_length" }, - message: "must have required property '" + "max_length" + "'", - }; - if (vErrors === null) { - vErrors = [err6]; - } else { - vErrors.push(err6); - } - errors++; - } - for (const key1 in data2) { - if (!(key1 === "field" || key1 === "max_length")) { - const err7 = { - instancePath: instancePath + "/params", - schemaPath: "#/$defs/TruncateStringParamsDocument/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key1 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; - } - } - if (data2.field !== undefined) { - let data3 = data2.field; - if (typeof data3 === "string") { - if (!pattern8.test(data3)) { - const err8 = { - instancePath: instancePath + "/params/field", - schemaPath: "#/$defs/TruncateStringParamsDocument/properties/field/pattern", - keyword: "pattern", - params: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$" }, - message: 'must match pattern "' + "^[A-Za-z_][A-Za-z0-9_]*$" + '"', - }; - if (vErrors === null) { - vErrors = [err8]; - } else { - vErrors.push(err8); - } - errors++; - } - } else { - const err9 = { - instancePath: instancePath + "/params/field", - schemaPath: "#/$defs/TruncateStringParamsDocument/properties/field/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err9]; - } else { - vErrors.push(err9); - } - errors++; - } - } - if (data2.max_length !== undefined) { - let data4 = data2.max_length; - if (!(typeof data4 == "number" && !(data4 % 1) && !isNaN(data4) && isFinite(data4))) { - const err10 = { - instancePath: instancePath + "/params/max_length", - schemaPath: "#/$defs/TruncateStringParamsDocument/properties/max_length/type", - keyword: "type", - params: { type: "integer" }, - message: "must be integer", - }; - if (vErrors === null) { - vErrors = [err10]; - } else { - vErrors.push(err10); - } - errors++; - } - if (typeof data4 == "number" && isFinite(data4)) { - if (data4 < 0 || isNaN(data4)) { - const err11 = { - instancePath: instancePath + "/params/max_length", - schemaPath: "#/$defs/TruncateStringParamsDocument/properties/max_length/minimum", - keyword: "minimum", - params: { comparison: ">=", limit: 0 }, - message: "must be >= 0", - }; - if (vErrors === null) { - vErrors = [err11]; - } else { - vErrors.push(err11); - } - errors++; - } - } - } - } else { - const err12 = { - instancePath: instancePath + "/params", - schemaPath: "#/$defs/TruncateStringParamsDocument/type", + if (data.write_mode !== undefined) { + let data13 = data.write_mode; + if (typeof data13 !== "string") { + const err31 = { + instancePath: instancePath + "/write_mode", + schemaPath: "#/$defs/WriteMode/type", keyword: "type", - params: { type: "object" }, - message: "must be object", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err12]; + vErrors = [err31]; } else { - vErrors.push(err12); + vErrors.push(err31); + } + errors++; + } + if (!( + data13 === "scd1" || + data13 === "scd2" || + data13 === "snapshot" || + data13 === "incremental" || + data13 === "replace" + )) { + const err32 = { + instancePath: instancePath + "/write_mode", + schemaPath: "#/$defs/WriteMode/enum", + keyword: "enum", + params: { allowedValues: schema285.enum }, + message: "must be equal to one of the allowed values", + }; + if (vErrors === null) { + vErrors = [err32]; + } else { + vErrors.push(err32); } errors++; } } } else { - const err13 = { + const err33 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -37531,43 +44387,24 @@ function validate362( message: "must be object", }; if (vErrors === null) { - vErrors = [err13]; + vErrors = [err33]; } else { - vErrors.push(err13); + vErrors.push(err33); } errors++; } - validate362.errors = vErrors; + validate402.errors = vErrors; return errors === 0; } -validate362.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -const schema251 = { - additionalProperties: false, - properties: { - kind: { const: "trim_whitespace", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - params: { $ref: "#/$defs/TrimWhitespaceParamsDocument" }, - }, - required: ["kind", "params"], - title: "TrimWhitespaceOperation", - type: "object", -}; -const schema252 = { - additionalProperties: false, - properties: { field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" } }, - required: ["field"], - title: "TrimWhitespaceParamsDocument", - type: "object", -}; +validate402.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate365( +function validate401( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate365.evaluated; + const evaluated0 = validate401.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -37575,187 +44412,70 @@ function validate365( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.kind === undefined) { - const err0 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "kind" }, - message: "must have required property '" + "kind" + "'", - }; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); - } - errors++; - } - if (data.params === undefined) { - const err1 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "params" }, - message: "must have required property '" + "params" + "'", - }; - if (vErrors === null) { - vErrors = [err1]; - } else { - vErrors.push(err1); - } - errors++; - } - for (const key0 in data) { - if (!(key0 === "kind" || key0 === "metadata" || key0 === "params")) { - const err2 = { - instancePath, - schemaPath: "#/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key0 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err2]; - } else { - vErrors.push(err2); - } - errors++; + if (data.writer !== undefined) { + let data1 = data.writer; + const _errs4 = errors; + let valid3 = false; + const _errs5 = errors; + if ( + !validate402(data1, { + instancePath: instancePath + "/writer", + parentData: data, + parentDataProperty: "writer", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate402.errors : vErrors.concat(validate402.errors); + errors = vErrors.length; } - } - if (data.kind !== undefined) { - let data0 = data.kind; - if (typeof data0 !== "string") { - const err3 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/type", + var _valid0 = _errs5 === errors; + valid3 = valid3 || _valid0; + const _errs6 = errors; + if (data1 !== null) { + const err0 = { + instancePath: instancePath + "/writer", + schemaPath: "#/properties/writer/anyOf/1/type", keyword: "type", - params: { type: "string" }, - message: "must be string", + params: { type: "null" }, + message: "must be null", }; if (vErrors === null) { - vErrors = [err3]; + vErrors = [err0]; } else { - vErrors.push(err3); + vErrors.push(err0); } errors++; } - if ("trim_whitespace" !== data0) { - const err4 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/const", - keyword: "const", - params: { allowedValue: "trim_whitespace" }, - message: "must be equal to constant", + var _valid0 = _errs6 === errors; + valid3 = valid3 || _valid0; + if (!valid3) { + const err1 = { + instancePath: instancePath + "/writer", + schemaPath: "#/properties/writer/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", }; if (vErrors === null) { - vErrors = [err4]; + vErrors = [err1]; } else { - vErrors.push(err4); + vErrors.push(err1); } errors++; - } - } - if (data.metadata !== undefined) { - if ( - !validate291(data.metadata, { - instancePath: instancePath + "/metadata", - parentData: data, - parentDataProperty: "metadata", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); - errors = vErrors.length; - } - } - if (data.params !== undefined) { - let data2 = data.params; - if (data2 && typeof data2 == "object" && !Array.isArray(data2)) { - if (data2.field === undefined) { - const err5 = { - instancePath: instancePath + "/params", - schemaPath: "#/$defs/TrimWhitespaceParamsDocument/required", - keyword: "required", - params: { missingProperty: "field" }, - message: "must have required property '" + "field" + "'", - }; - if (vErrors === null) { - vErrors = [err5]; - } else { - vErrors.push(err5); - } - errors++; - } - for (const key1 in data2) { - if (!(key1 === "field")) { - const err6 = { - instancePath: instancePath + "/params", - schemaPath: "#/$defs/TrimWhitespaceParamsDocument/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key1 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err6]; - } else { - vErrors.push(err6); - } - errors++; - } - } - if (data2.field !== undefined) { - let data3 = data2.field; - if (typeof data3 === "string") { - if (!pattern8.test(data3)) { - const err7 = { - instancePath: instancePath + "/params/field", - schemaPath: "#/$defs/TrimWhitespaceParamsDocument/properties/field/pattern", - keyword: "pattern", - params: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$" }, - message: 'must match pattern "' + "^[A-Za-z_][A-Za-z0-9_]*$" + '"', - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; - } + } else { + errors = _errs4; + if (vErrors !== null) { + if (_errs4) { + vErrors.length = _errs4; } else { - const err8 = { - instancePath: instancePath + "/params/field", - schemaPath: "#/$defs/TrimWhitespaceParamsDocument/properties/field/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err8]; - } else { - vErrors.push(err8); - } - errors++; + vErrors = null; } } - } else { - const err9 = { - instancePath: instancePath + "/params", - schemaPath: "#/$defs/TrimWhitespaceParamsDocument/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", - }; - if (vErrors === null) { - vErrors = [err9]; - } else { - vErrors.push(err9); - } - errors++; } } } else { - const err10 = { + const err2 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -37763,89 +44483,121 @@ function validate365( message: "must be object", }; if (vErrors === null) { - vErrors = [err10]; + vErrors = [err2]; } else { - vErrors.push(err10); + vErrors.push(err2); } errors++; } - validate365.errors = vErrors; + validate401.errors = vErrors; return errors === 0; } -validate365.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -const schema253 = { - additionalProperties: false, - properties: { - kind: { const: "default_value", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - params: { $ref: "#/$defs/DefaultValueParamsDocument" }, - }, - required: ["kind", "params"], - title: "DefaultValueOperation", - type: "object", -}; -const schema254 = { - additionalProperties: false, - properties: { - default: { - anyOf: [{ type: "string" }, { type: "integer" }, { type: "number" }, { type: "boolean" }], - title: "Default", - }, - field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" }, - }, - required: ["field", "default"], - title: "DefaultValueParamsDocument", - type: "object", -}; +validate401.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate368( +function validate400( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate368.evaluated; + const evaluated0 = validate400.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } if (evaluated0.dynamicItems) { evaluated0.items = undefined; } + const _errs1 = errors; + const _errs2 = errors; if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.kind === undefined) { - const err0 = { + let missing0; + if ( + (data.config === undefined && (missing0 = "config")) || + (data.params === undefined && (missing0 = "params")) + ) { + const err0 = {}; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + } + var valid0 = _errs2 === errors; + if (valid0) { + const err1 = { + instancePath, + schemaPath: "#/not", + keyword: "not", + params: {}, + message: "must NOT be valid", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } else { + errors = _errs1; + if (vErrors !== null) { + if (_errs1) { + vErrors.length = _errs1; + } else { + vErrors = null; + } + } + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.id === undefined) { + const err2 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "kind" }, - message: "must have required property '" + "kind" + "'", + params: { missingProperty: "id" }, + message: "must have required property '" + "id" + "'", }; if (vErrors === null) { - vErrors = [err0]; + vErrors = [err2]; } else { - vErrors.push(err0); + vErrors.push(err2); } errors++; } - if (data.params === undefined) { - const err1 = { + if (data.type === undefined) { + const err3 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "params" }, - message: "must have required property '" + "params" + "'", + params: { missingProperty: "type" }, + message: "must have required property '" + "type" + "'", }; if (vErrors === null) { - vErrors = [err1]; + vErrors = [err3]; } else { - vErrors.push(err1); + vErrors.push(err3); + } + errors++; + } + if (data.name === undefined) { + const err4 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "name" }, + message: "must have required property '" + "name" + "'", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); } errors++; } for (const key0 in data) { - if (!(key0 === "kind" || key0 === "metadata" || key0 === "params")) { - const err2 = { + if (!func1.call(schema277.properties, key0)) { + const err5 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", @@ -37853,252 +44605,290 @@ function validate368( message: "must NOT have additional properties", }; if (vErrors === null) { - vErrors = [err2]; + vErrors = [err5]; } else { - vErrors.push(err2); + vErrors.push(err5); } errors++; } } - if (data.kind !== undefined) { - let data0 = data.kind; - if (typeof data0 !== "string") { - const err3 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/type", + if (data.config !== undefined) { + if ( + !validate401(data.config, { + instancePath: instancePath + "/config", + parentData: data, + parentDataProperty: "config", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate401.errors : vErrors.concat(validate401.errors); + errors = vErrors.length; + } + } + if (data.cursor !== undefined) { + let data1 = data.cursor; + const _errs6 = errors; + let valid2 = false; + const _errs7 = errors; + if ( + !validate335(data1, { + instancePath: instancePath + "/cursor", + parentData: data, + parentDataProperty: "cursor", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate335.errors : vErrors.concat(validate335.errors); + errors = vErrors.length; + } + var _valid0 = _errs7 === errors; + valid2 = valid2 || _valid0; + const _errs8 = errors; + if (data1 !== null) { + const err6 = { + instancePath: instancePath + "/cursor", + schemaPath: "#/properties/cursor/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + var _valid0 = _errs8 === errors; + valid2 = valid2 || _valid0; + if (!valid2) { + const err7 = { + instancePath: instancePath + "/cursor", + schemaPath: "#/properties/cursor/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } else { + errors = _errs6; + if (vErrors !== null) { + if (_errs6) { + vErrors.length = _errs6; + } else { + vErrors = null; + } + } + } + } + if (data.fields !== undefined) { + let data2 = data.fields; + if (Array.isArray(data2)) { + const len0 = data2.length; + for (let i0 = 0; i0 < len0; i0++) { + if ( + !validate339(data2[i0], { + instancePath: instancePath + "/fields/" + i0, + parentData: data2, + parentDataProperty: i0, + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate339.errors : vErrors.concat(validate339.errors); + errors = vErrors.length; + } + } + } else { + const err8 = { + instancePath: instancePath + "/fields", + schemaPath: "#/properties/fields/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } + } + if (data.id !== undefined) { + if (typeof data.id !== "string") { + const err9 = { + instancePath: instancePath + "/id", + schemaPath: "#/properties/id/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err3]; + vErrors = [err9]; } else { - vErrors.push(err3); + vErrors.push(err9); } errors++; } - if ("default_value" !== data0) { - const err4 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/const", - keyword: "const", - params: { allowedValue: "default_value" }, - message: "must be equal to constant", + } + if (data.name !== undefined) { + if (typeof data.name !== "string") { + const err10 = { + instancePath: instancePath + "/name", + schemaPath: "#/properties/name/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err4]; + vErrors = [err10]; } else { - vErrors.push(err4); + vErrors.push(err10); } errors++; } } - if (data.metadata !== undefined) { + if (data.params !== undefined) { + let data6 = data.params; + const _errs18 = errors; + let valid5 = false; + const _errs19 = errors; if ( - !validate291(data.metadata, { - instancePath: instancePath + "/metadata", + !validate401(data6, { + instancePath: instancePath + "/params", parentData: data, - parentDataProperty: "metadata", + parentDataProperty: "params", rootData, dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); + vErrors = vErrors === null ? validate401.errors : vErrors.concat(validate401.errors); errors = vErrors.length; } - } - if (data.params !== undefined) { - let data2 = data.params; - if (data2 && typeof data2 == "object" && !Array.isArray(data2)) { - if (data2.field === undefined) { - const err5 = { - instancePath: instancePath + "/params", - schemaPath: "#/$defs/DefaultValueParamsDocument/required", - keyword: "required", - params: { missingProperty: "field" }, - message: "must have required property '" + "field" + "'", - }; - if (vErrors === null) { - vErrors = [err5]; - } else { - vErrors.push(err5); - } - errors++; + var _valid1 = _errs19 === errors; + valid5 = valid5 || _valid1; + const _errs20 = errors; + if (data6 !== null) { + const err11 = { + instancePath: instancePath + "/params", + schemaPath: "#/properties/params/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); } - if (data2.default === undefined) { - const err6 = { - instancePath: instancePath + "/params", - schemaPath: "#/$defs/DefaultValueParamsDocument/required", - keyword: "required", - params: { missingProperty: "default" }, - message: "must have required property '" + "default" + "'", - }; - if (vErrors === null) { - vErrors = [err6]; + errors++; + } + var _valid1 = _errs20 === errors; + valid5 = valid5 || _valid1; + if (!valid5) { + const err12 = { + instancePath: instancePath + "/params", + schemaPath: "#/properties/params/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err12]; + } else { + vErrors.push(err12); + } + errors++; + } else { + errors = _errs18; + if (vErrors !== null) { + if (_errs18) { + vErrors.length = _errs18; } else { - vErrors.push(err6); + vErrors = null; } - errors++; } - for (const key1 in data2) { - if (!(key1 === "default" || key1 === "field")) { - const err7 = { - instancePath: instancePath + "/params", - schemaPath: "#/$defs/DefaultValueParamsDocument/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key1 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; - } + } + } + if (data.trigger !== undefined) { + let data7 = data.trigger; + const _errs24 = errors; + let valid6 = false; + const _errs25 = errors; + if ( + !validate357(data7, { + instancePath: instancePath + "/trigger", + parentData: data, + parentDataProperty: "trigger", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate357.errors : vErrors.concat(validate357.errors); + errors = vErrors.length; + } + var _valid2 = _errs25 === errors; + valid6 = valid6 || _valid2; + const _errs26 = errors; + if (data7 !== null) { + const err13 = { + instancePath: instancePath + "/trigger", + schemaPath: "#/properties/trigger/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err13]; + } else { + vErrors.push(err13); } - if (data2.default !== undefined) { - let data3 = data2.default; - const _errs10 = errors; - let valid3 = false; - const _errs11 = errors; - if (typeof data3 !== "string") { - const err8 = { - instancePath: instancePath + "/params/default", - schemaPath: "#/$defs/DefaultValueParamsDocument/properties/default/anyOf/0/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err8]; - } else { - vErrors.push(err8); - } - errors++; - } - var _valid0 = _errs11 === errors; - valid3 = valid3 || _valid0; - const _errs13 = errors; - if (!(typeof data3 == "number" && !(data3 % 1) && !isNaN(data3) && isFinite(data3))) { - const err9 = { - instancePath: instancePath + "/params/default", - schemaPath: "#/$defs/DefaultValueParamsDocument/properties/default/anyOf/1/type", - keyword: "type", - params: { type: "integer" }, - message: "must be integer", - }; - if (vErrors === null) { - vErrors = [err9]; - } else { - vErrors.push(err9); - } - errors++; - } - var _valid0 = _errs13 === errors; - valid3 = valid3 || _valid0; - const _errs15 = errors; - if (!(typeof data3 == "number" && isFinite(data3))) { - const err10 = { - instancePath: instancePath + "/params/default", - schemaPath: "#/$defs/DefaultValueParamsDocument/properties/default/anyOf/2/type", - keyword: "type", - params: { type: "number" }, - message: "must be number", - }; - if (vErrors === null) { - vErrors = [err10]; - } else { - vErrors.push(err10); - } - errors++; - } - var _valid0 = _errs15 === errors; - valid3 = valid3 || _valid0; - const _errs17 = errors; - if (typeof data3 !== "boolean") { - const err11 = { - instancePath: instancePath + "/params/default", - schemaPath: "#/$defs/DefaultValueParamsDocument/properties/default/anyOf/3/type", - keyword: "type", - params: { type: "boolean" }, - message: "must be boolean", - }; - if (vErrors === null) { - vErrors = [err11]; - } else { - vErrors.push(err11); - } - errors++; - } - var _valid0 = _errs17 === errors; - valid3 = valid3 || _valid0; - if (!valid3) { - const err12 = { - instancePath: instancePath + "/params/default", - schemaPath: "#/$defs/DefaultValueParamsDocument/properties/default/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; - if (vErrors === null) { - vErrors = [err12]; - } else { - vErrors.push(err12); - } - errors++; - } else { - errors = _errs10; - if (vErrors !== null) { - if (_errs10) { - vErrors.length = _errs10; - } else { - vErrors = null; - } - } - } + errors++; + } + var _valid2 = _errs26 === errors; + valid6 = valid6 || _valid2; + if (!valid6) { + const err14 = { + instancePath: instancePath + "/trigger", + schemaPath: "#/properties/trigger/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err14]; + } else { + vErrors.push(err14); } - if (data2.field !== undefined) { - let data4 = data2.field; - if (typeof data4 === "string") { - if (!pattern8.test(data4)) { - const err13 = { - instancePath: instancePath + "/params/field", - schemaPath: "#/$defs/DefaultValueParamsDocument/properties/field/pattern", - keyword: "pattern", - params: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$" }, - message: 'must match pattern "' + "^[A-Za-z_][A-Za-z0-9_]*$" + '"', - }; - if (vErrors === null) { - vErrors = [err13]; - } else { - vErrors.push(err13); - } - errors++; - } + errors++; + } else { + errors = _errs24; + if (vErrors !== null) { + if (_errs24) { + vErrors.length = _errs24; } else { - const err14 = { - instancePath: instancePath + "/params/field", - schemaPath: "#/$defs/DefaultValueParamsDocument/properties/field/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err14]; - } else { - vErrors.push(err14); - } - errors++; + vErrors = null; } } - } else { + } + } + if (data.type !== undefined) { + let data8 = data.type; + if (typeof data8 !== "string") { const err15 = { - instancePath: instancePath + "/params", - schemaPath: "#/$defs/DefaultValueParamsDocument/type", + instancePath: instancePath + "/type", + schemaPath: "#/properties/type/type", keyword: "type", - params: { type: "object" }, - message: "must be object", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { vErrors = [err15]; @@ -38107,9 +44897,86 @@ function validate368( } errors++; } + if ("target" !== data8) { + const err16 = { + instancePath: instancePath + "/type", + schemaPath: "#/properties/type/const", + keyword: "const", + params: { allowedValue: "target" }, + message: "must be equal to constant", + }; + if (vErrors === null) { + vErrors = [err16]; + } else { + vErrors.push(err16); + } + errors++; + } + } + if (data.visual !== undefined) { + let data9 = data.visual; + const _errs31 = errors; + let valid7 = false; + const _errs32 = errors; + if ( + !validate368(data9, { + instancePath: instancePath + "/visual", + parentData: data, + parentDataProperty: "visual", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate368.errors : vErrors.concat(validate368.errors); + errors = vErrors.length; + } + var _valid3 = _errs32 === errors; + valid7 = valid7 || _valid3; + const _errs33 = errors; + if (data9 !== null) { + const err17 = { + instancePath: instancePath + "/visual", + schemaPath: "#/properties/visual/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err17]; + } else { + vErrors.push(err17); + } + errors++; + } + var _valid3 = _errs33 === errors; + valid7 = valid7 || _valid3; + if (!valid7) { + const err18 = { + instancePath: instancePath + "/visual", + schemaPath: "#/properties/visual/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err18]; + } else { + vErrors.push(err18); + } + errors++; + } else { + errors = _errs31; + if (vErrors !== null) { + if (_errs31) { + vErrors.length = _errs31; + } else { + vErrors = null; + } + } + } } } else { - const err16 = { + const err19 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -38117,110 +44984,67 @@ function validate368( message: "must be object", }; if (vErrors === null) { - vErrors = [err16]; + vErrors = [err19]; } else { - vErrors.push(err16); + vErrors.push(err19); } errors++; } - validate368.errors = vErrors; + validate400.errors = vErrors; return errors === 0; } -validate368.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate400.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema255 = { - additionalProperties: false, - properties: { - kind: { const: "filter_rows", title: "Kind", type: "string" }, - metadata: { $ref: "#/$defs/JsonObject" }, - params: { $ref: "#/$defs/FilterRowsParamsDocument" }, - }, - required: ["kind", "params"], - title: "FilterRowsOperation", - type: "object", -}; -const schema256 = { +const schema286 = { additionalProperties: false, + not: { required: ["config", "params"] }, properties: { - conditions: { - items: { $ref: "#/$defs/FieldConditionDocument" }, - minItems: 1, - title: "Conditions", - type: "array", + config: { $ref: "#/$defs/JsonObject" }, + cursor: { + anyOf: [{ $ref: "#/$defs/CursorStrategyDocument" }, { type: "null" }], + default: null, }, - logic: { $ref: "#/$defs/MatchLogic", default: "all" }, - }, - required: ["conditions"], - title: "FilterRowsParamsDocument", - type: "object", -}; -const schema259 = { - description: "How a filter's flat condition list combines.", - enum: ["all", "any"], - title: "MatchLogic", - type: "string", -}; -const schema257 = { - additionalProperties: false, - properties: { - field: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$", title: "Field", type: "string" }, - op: { $ref: "#/$defs/ComparisonOperator" }, - value: { - anyOf: [ - { type: "string" }, - { type: "integer" }, - { type: "number" }, - { type: "boolean" }, - { - items: { - anyOf: [ - { type: "string" }, - { type: "integer" }, - { type: "number" }, - { type: "boolean" }, - ], - }, - type: "array", - }, - { type: "null" }, - ], + fields: { items: { $ref: "#/$defs/NodeFieldDocument" }, title: "Fields", type: "array" }, + id: { title: "Id", type: "string" }, + name: { title: "Name", type: "string" }, + params: { + anyOf: [{ $ref: "#/$defs/JsonObject" }, { type: "null" }], default: null, - title: "Value", + deprecated: true, + "x-dander-canonical-name": "config", }, + trigger: { anyOf: [{ $ref: "#/$defs/TriggerDocument" }, { type: "null" }], default: null }, + type: { $ref: "#/$defs/ExtensionNodeType" }, + visual: { anyOf: [{ $ref: "#/$defs/NodeVisualDocument" }, { type: "null" }], default: null }, }, - required: ["field", "op"], - title: "FieldConditionDocument", + required: ["id", "type", "name"], + title: "ExtensionNodeDocument", type: "object", }; -const schema258 = { - description: "Closed comparison grammar for ``filter_rows``.", - enum: ["eq", "ne", "gt", "gte", "lt", "lte", "in", "not_in", "is_null", "is_not_null"], - title: "ComparisonOperator", - type: "string", -}; +const schema287 = { not: { enum: ["source", "transform", "target"] }, type: "string" }; -function validate374( +function validate413( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate374.evaluated; + const evaluated0 = validate413.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } if (evaluated0.dynamicItems) { evaluated0.items = undefined; } + const _errs1 = errors; + const _errs2 = errors; if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.field === undefined) { - const err0 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "field" }, - message: "must have required property '" + "field" + "'", - }; + let missing0; + if ( + (data.config === undefined && (missing0 = "config")) || + (data.params === undefined && (missing0 = "params")) + ) { + const err0 = {}; if (vErrors === null) { vErrors = [err0]; } else { @@ -38228,648 +45052,481 @@ function validate374( } errors++; } - if (data.op === undefined) { - const err1 = { + } + var valid0 = _errs2 === errors; + if (valid0) { + const err1 = { + instancePath, + schemaPath: "#/not", + keyword: "not", + params: {}, + message: "must NOT be valid", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } else { + errors = _errs1; + if (vErrors !== null) { + if (_errs1) { + vErrors.length = _errs1; + } else { + vErrors = null; + } + } + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.id === undefined) { + const err2 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "op" }, - message: "must have required property '" + "op" + "'", + params: { missingProperty: "id" }, + message: "must have required property '" + "id" + "'", }; if (vErrors === null) { - vErrors = [err1]; + vErrors = [err2]; } else { - vErrors.push(err1); + vErrors.push(err2); } errors++; } - for (const key0 in data) { - if (!(key0 === "field" || key0 === "op" || key0 === "value")) { - const err2 = { - instancePath, - schemaPath: "#/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key0 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err2]; - } else { - vErrors.push(err2); - } - errors++; - } - } - if (data.field !== undefined) { - let data0 = data.field; - if (typeof data0 === "string") { - if (!pattern8.test(data0)) { - const err3 = { - instancePath: instancePath + "/field", - schemaPath: "#/properties/field/pattern", - keyword: "pattern", - params: { pattern: "^[A-Za-z_][A-Za-z0-9_]*$" }, - message: 'must match pattern "' + "^[A-Za-z_][A-Za-z0-9_]*$" + '"', - }; - if (vErrors === null) { - vErrors = [err3]; - } else { - vErrors.push(err3); - } - errors++; - } + if (data.type === undefined) { + const err3 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "type" }, + message: "must have required property '" + "type" + "'", + }; + if (vErrors === null) { + vErrors = [err3]; } else { - const err4 = { - instancePath: instancePath + "/field", - schemaPath: "#/properties/field/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err4]; - } else { - vErrors.push(err4); - } - errors++; - } - } - if (data.op !== undefined) { - let data1 = data.op; - if (typeof data1 !== "string") { - const err5 = { - instancePath: instancePath + "/op", - schemaPath: "#/$defs/ComparisonOperator/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err5]; - } else { - vErrors.push(err5); - } - errors++; - } - if (!( - data1 === "eq" || - data1 === "ne" || - data1 === "gt" || - data1 === "gte" || - data1 === "lt" || - data1 === "lte" || - data1 === "in" || - data1 === "not_in" || - data1 === "is_null" || - data1 === "is_not_null" - )) { - const err6 = { - instancePath: instancePath + "/op", - schemaPath: "#/$defs/ComparisonOperator/enum", - keyword: "enum", - params: { allowedValues: schema258.enum }, - message: "must be equal to one of the allowed values", - }; - if (vErrors === null) { - vErrors = [err6]; - } else { - vErrors.push(err6); - } - errors++; + vErrors.push(err3); } + errors++; } - if (data.value !== undefined) { - let data2 = data.value; - const _errs8 = errors; - let valid2 = false; - const _errs9 = errors; - if (typeof data2 !== "string") { - const err7 = { - instancePath: instancePath + "/value", - schemaPath: "#/properties/value/anyOf/0/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; - } - var _valid0 = _errs9 === errors; - valid2 = valid2 || _valid0; - const _errs11 = errors; - if (!(typeof data2 == "number" && !(data2 % 1) && !isNaN(data2) && isFinite(data2))) { - const err8 = { - instancePath: instancePath + "/value", - schemaPath: "#/properties/value/anyOf/1/type", - keyword: "type", - params: { type: "integer" }, - message: "must be integer", - }; - if (vErrors === null) { - vErrors = [err8]; - } else { - vErrors.push(err8); - } - errors++; - } - var _valid0 = _errs11 === errors; - valid2 = valid2 || _valid0; - const _errs13 = errors; - if (!(typeof data2 == "number" && isFinite(data2))) { - const err9 = { - instancePath: instancePath + "/value", - schemaPath: "#/properties/value/anyOf/2/type", - keyword: "type", - params: { type: "number" }, - message: "must be number", - }; - if (vErrors === null) { - vErrors = [err9]; - } else { - vErrors.push(err9); - } - errors++; - } - var _valid0 = _errs13 === errors; - valid2 = valid2 || _valid0; - const _errs15 = errors; - if (typeof data2 !== "boolean") { - const err10 = { - instancePath: instancePath + "/value", - schemaPath: "#/properties/value/anyOf/3/type", - keyword: "type", - params: { type: "boolean" }, - message: "must be boolean", - }; - if (vErrors === null) { - vErrors = [err10]; - } else { - vErrors.push(err10); - } - errors++; - } - var _valid0 = _errs15 === errors; - valid2 = valid2 || _valid0; - const _errs17 = errors; - if (Array.isArray(data2)) { - const len0 = data2.length; - for (let i0 = 0; i0 < len0; i0++) { - let data3 = data2[i0]; - const _errs20 = errors; - let valid5 = false; - const _errs21 = errors; - if (typeof data3 !== "string") { - const err11 = { - instancePath: instancePath + "/value/" + i0, - schemaPath: "#/properties/value/anyOf/4/items/anyOf/0/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err11]; - } else { - vErrors.push(err11); - } - errors++; - } - var _valid1 = _errs21 === errors; - valid5 = valid5 || _valid1; - const _errs23 = errors; - if (!(typeof data3 == "number" && !(data3 % 1) && !isNaN(data3) && isFinite(data3))) { - const err12 = { - instancePath: instancePath + "/value/" + i0, - schemaPath: "#/properties/value/anyOf/4/items/anyOf/1/type", - keyword: "type", - params: { type: "integer" }, - message: "must be integer", - }; - if (vErrors === null) { - vErrors = [err12]; - } else { - vErrors.push(err12); - } - errors++; - } - var _valid1 = _errs23 === errors; - valid5 = valid5 || _valid1; - const _errs25 = errors; - if (!(typeof data3 == "number" && isFinite(data3))) { - const err13 = { - instancePath: instancePath + "/value/" + i0, - schemaPath: "#/properties/value/anyOf/4/items/anyOf/2/type", - keyword: "type", - params: { type: "number" }, - message: "must be number", - }; - if (vErrors === null) { - vErrors = [err13]; - } else { - vErrors.push(err13); - } - errors++; - } - var _valid1 = _errs25 === errors; - valid5 = valid5 || _valid1; - const _errs27 = errors; - if (typeof data3 !== "boolean") { - const err14 = { - instancePath: instancePath + "/value/" + i0, - schemaPath: "#/properties/value/anyOf/4/items/anyOf/3/type", - keyword: "type", - params: { type: "boolean" }, - message: "must be boolean", - }; - if (vErrors === null) { - vErrors = [err14]; - } else { - vErrors.push(err14); - } - errors++; - } - var _valid1 = _errs27 === errors; - valid5 = valid5 || _valid1; - if (!valid5) { - const err15 = { - instancePath: instancePath + "/value/" + i0, - schemaPath: "#/properties/value/anyOf/4/items/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; - if (vErrors === null) { - vErrors = [err15]; - } else { - vErrors.push(err15); - } - errors++; - } else { - errors = _errs20; - if (vErrors !== null) { - if (_errs20) { - vErrors.length = _errs20; - } else { - vErrors = null; - } - } - } - } + if (data.name === undefined) { + const err4 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "name" }, + message: "must have required property '" + "name" + "'", + }; + if (vErrors === null) { + vErrors = [err4]; } else { - const err16 = { - instancePath: instancePath + "/value", - schemaPath: "#/properties/value/anyOf/4/type", - keyword: "type", - params: { type: "array" }, - message: "must be array", + vErrors.push(err4); + } + errors++; + } + for (const key0 in data) { + if (!func1.call(schema286.properties, key0)) { + const err5 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", }; if (vErrors === null) { - vErrors = [err16]; + vErrors = [err5]; } else { - vErrors.push(err16); + vErrors.push(err5); } errors++; } - var _valid0 = _errs17 === errors; + } + if (data.config !== undefined) { + if ( + !validate305(data.config, { + instancePath: instancePath + "/config", + parentData: data, + parentDataProperty: "config", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); + errors = vErrors.length; + } + } + if (data.cursor !== undefined) { + let data1 = data.cursor; + const _errs6 = errors; + let valid2 = false; + const _errs7 = errors; + if ( + !validate335(data1, { + instancePath: instancePath + "/cursor", + parentData: data, + parentDataProperty: "cursor", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate335.errors : vErrors.concat(validate335.errors); + errors = vErrors.length; + } + var _valid0 = _errs7 === errors; valid2 = valid2 || _valid0; - const _errs29 = errors; - if (data2 !== null) { - const err17 = { - instancePath: instancePath + "/value", - schemaPath: "#/properties/value/anyOf/5/type", + const _errs8 = errors; + if (data1 !== null) { + const err6 = { + instancePath: instancePath + "/cursor", + schemaPath: "#/properties/cursor/anyOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null", }; if (vErrors === null) { - vErrors = [err17]; + vErrors = [err6]; } else { - vErrors.push(err17); + vErrors.push(err6); } errors++; } - var _valid0 = _errs29 === errors; + var _valid0 = _errs8 === errors; valid2 = valid2 || _valid0; if (!valid2) { - const err18 = { - instancePath: instancePath + "/value", - schemaPath: "#/properties/value/anyOf", + const err7 = { + instancePath: instancePath + "/cursor", + schemaPath: "#/properties/cursor/anyOf", keyword: "anyOf", params: {}, message: "must match a schema in anyOf", }; if (vErrors === null) { - vErrors = [err18]; + vErrors = [err7]; } else { - vErrors.push(err18); + vErrors.push(err7); } errors++; } else { - errors = _errs8; + errors = _errs6; if (vErrors !== null) { - if (_errs8) { - vErrors.length = _errs8; + if (_errs6) { + vErrors.length = _errs6; } else { vErrors = null; } } } } - } else { - const err19 = { - instancePath, - schemaPath: "#/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", - }; - if (vErrors === null) { - vErrors = [err19]; - } else { - vErrors.push(err19); - } - errors++; - } - validate374.errors = vErrors; - return errors === 0; -} -validate374.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -function validate373( - data, - { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, -) { - let vErrors = null; - let errors = 0; - const evaluated0 = validate373.evaluated; - if (evaluated0.dynamicProps) { - evaluated0.props = undefined; - } - if (evaluated0.dynamicItems) { - evaluated0.items = undefined; - } - if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.conditions === undefined) { - const err0 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "conditions" }, - message: "must have required property '" + "conditions" + "'", - }; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); - } - errors++; - } - for (const key0 in data) { - if (!(key0 === "conditions" || key0 === "logic")) { - const err1 = { - instancePath, - schemaPath: "#/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key0 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err1]; - } else { - vErrors.push(err1); - } - errors++; - } - } - if (data.conditions !== undefined) { - let data0 = data.conditions; - if (Array.isArray(data0)) { - if (data0.length < 1) { - const err2 = { - instancePath: instancePath + "/conditions", - schemaPath: "#/properties/conditions/minItems", - keyword: "minItems", - params: { limit: 1 }, - message: "must NOT have fewer than 1 items", - }; - if (vErrors === null) { - vErrors = [err2]; - } else { - vErrors.push(err2); - } - errors++; - } - const len0 = data0.length; + if (data.fields !== undefined) { + let data2 = data.fields; + if (Array.isArray(data2)) { + const len0 = data2.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate374(data0[i0], { - instancePath: instancePath + "/conditions/" + i0, - parentData: data0, + !validate339(data2[i0], { + instancePath: instancePath + "/fields/" + i0, + parentData: data2, parentDataProperty: i0, rootData, dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate374.errors : vErrors.concat(validate374.errors); + vErrors = vErrors === null ? validate339.errors : vErrors.concat(validate339.errors); errors = vErrors.length; } } } else { - const err3 = { - instancePath: instancePath + "/conditions", - schemaPath: "#/properties/conditions/type", + const err8 = { + instancePath: instancePath + "/fields", + schemaPath: "#/properties/fields/type", keyword: "type", params: { type: "array" }, message: "must be array", }; if (vErrors === null) { - vErrors = [err3]; + vErrors = [err8]; } else { - vErrors.push(err3); + vErrors.push(err8); } errors++; } } - if (data.logic !== undefined) { - let data2 = data.logic; - if (typeof data2 !== "string") { - const err4 = { - instancePath: instancePath + "/logic", - schemaPath: "#/$defs/MatchLogic/type", + if (data.id !== undefined) { + if (typeof data.id !== "string") { + const err9 = { + instancePath: instancePath + "/id", + schemaPath: "#/properties/id/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err4]; + vErrors = [err9]; } else { - vErrors.push(err4); + vErrors.push(err9); } errors++; } - if (!(data2 === "all" || data2 === "any")) { - const err5 = { - instancePath: instancePath + "/logic", - schemaPath: "#/$defs/MatchLogic/enum", - keyword: "enum", - params: { allowedValues: schema259.enum }, - message: "must be equal to one of the allowed values", + } + if (data.name !== undefined) { + if (typeof data.name !== "string") { + const err10 = { + instancePath: instancePath + "/name", + schemaPath: "#/properties/name/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err5]; + vErrors = [err10]; } else { - vErrors.push(err5); + vErrors.push(err10); } errors++; } } - } else { - const err6 = { - instancePath, - schemaPath: "#/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", - }; - if (vErrors === null) { - vErrors = [err6]; - } else { - vErrors.push(err6); - } - errors++; - } - validate373.errors = vErrors; - return errors === 0; -} -validate373.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -function validate371( - data, - { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, -) { - let vErrors = null; - let errors = 0; - const evaluated0 = validate371.evaluated; - if (evaluated0.dynamicProps) { - evaluated0.props = undefined; - } - if (evaluated0.dynamicItems) { - evaluated0.items = undefined; - } - if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.kind === undefined) { - const err0 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "kind" }, - message: "must have required property '" + "kind" + "'", - }; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); + if (data.params !== undefined) { + let data6 = data.params; + const _errs18 = errors; + let valid5 = false; + const _errs19 = errors; + if ( + !validate305(data6, { + instancePath: instancePath + "/params", + parentData: data, + parentDataProperty: "params", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); + errors = vErrors.length; } - errors++; - } - if (data.params === undefined) { - const err1 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "params" }, - message: "must have required property '" + "params" + "'", - }; - if (vErrors === null) { - vErrors = [err1]; + var _valid1 = _errs19 === errors; + valid5 = valid5 || _valid1; + const _errs20 = errors; + if (data6 !== null) { + const err11 = { + instancePath: instancePath + "/params", + schemaPath: "#/properties/params/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } + var _valid1 = _errs20 === errors; + valid5 = valid5 || _valid1; + if (!valid5) { + const err12 = { + instancePath: instancePath + "/params", + schemaPath: "#/properties/params/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err12]; + } else { + vErrors.push(err12); + } + errors++; } else { - vErrors.push(err1); + errors = _errs18; + if (vErrors !== null) { + if (_errs18) { + vErrors.length = _errs18; + } else { + vErrors = null; + } + } } - errors++; } - for (const key0 in data) { - if (!(key0 === "kind" || key0 === "metadata" || key0 === "params")) { - const err2 = { - instancePath, - schemaPath: "#/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key0 }, - message: "must NOT have additional properties", + if (data.trigger !== undefined) { + let data7 = data.trigger; + const _errs24 = errors; + let valid6 = false; + const _errs25 = errors; + if ( + !validate357(data7, { + instancePath: instancePath + "/trigger", + parentData: data, + parentDataProperty: "trigger", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate357.errors : vErrors.concat(validate357.errors); + errors = vErrors.length; + } + var _valid2 = _errs25 === errors; + valid6 = valid6 || _valid2; + const _errs26 = errors; + if (data7 !== null) { + const err13 = { + instancePath: instancePath + "/trigger", + schemaPath: "#/properties/trigger/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", }; if (vErrors === null) { - vErrors = [err2]; + vErrors = [err13]; } else { - vErrors.push(err2); + vErrors.push(err13); + } + errors++; + } + var _valid2 = _errs26 === errors; + valid6 = valid6 || _valid2; + if (!valid6) { + const err14 = { + instancePath: instancePath + "/trigger", + schemaPath: "#/properties/trigger/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err14]; + } else { + vErrors.push(err14); } errors++; + } else { + errors = _errs24; + if (vErrors !== null) { + if (_errs24) { + vErrors.length = _errs24; + } else { + vErrors = null; + } + } } } - if (data.kind !== undefined) { - let data0 = data.kind; - if (typeof data0 !== "string") { - const err3 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/type", + if (data.type !== undefined) { + let data8 = data.type; + if (typeof data8 !== "string") { + const err15 = { + instancePath: instancePath + "/type", + schemaPath: "#/$defs/ExtensionNodeType/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err3]; + vErrors = [err15]; } else { - vErrors.push(err3); + vErrors.push(err15); } errors++; } - if ("filter_rows" !== data0) { - const err4 = { - instancePath: instancePath + "/kind", - schemaPath: "#/properties/kind/const", - keyword: "const", - params: { allowedValue: "filter_rows" }, - message: "must be equal to constant", + const _errs31 = errors; + const _errs32 = errors; + if (!(data8 === "source" || data8 === "transform" || data8 === "target")) { + const err16 = {}; + if (vErrors === null) { + vErrors = [err16]; + } else { + vErrors.push(err16); + } + errors++; + } + var valid8 = _errs32 === errors; + if (valid8) { + const err17 = { + instancePath: instancePath + "/type", + schemaPath: "#/$defs/ExtensionNodeType/not", + keyword: "not", + params: {}, + message: "must NOT be valid", }; if (vErrors === null) { - vErrors = [err4]; + vErrors = [err17]; } else { - vErrors.push(err4); + vErrors.push(err17); } errors++; + } else { + errors = _errs31; + if (vErrors !== null) { + if (_errs31) { + vErrors.length = _errs31; + } else { + vErrors = null; + } + } } } - if (data.metadata !== undefined) { + if (data.visual !== undefined) { + let data9 = data.visual; + const _errs34 = errors; + let valid9 = false; + const _errs35 = errors; if ( - !validate291(data.metadata, { - instancePath: instancePath + "/metadata", + !validate368(data9, { + instancePath: instancePath + "/visual", parentData: data, - parentDataProperty: "metadata", + parentDataProperty: "visual", rootData, dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); + vErrors = vErrors === null ? validate368.errors : vErrors.concat(validate368.errors); errors = vErrors.length; } - } - if (data.params !== undefined) { - if ( - !validate373(data.params, { - instancePath: instancePath + "/params", - parentData: data, - parentDataProperty: "params", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate373.errors : vErrors.concat(validate373.errors); - errors = vErrors.length; + var _valid3 = _errs35 === errors; + valid9 = valid9 || _valid3; + const _errs36 = errors; + if (data9 !== null) { + const err18 = { + instancePath: instancePath + "/visual", + schemaPath: "#/properties/visual/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err18]; + } else { + vErrors.push(err18); + } + errors++; + } + var _valid3 = _errs36 === errors; + valid9 = valid9 || _valid3; + if (!valid9) { + const err19 = { + instancePath: instancePath + "/visual", + schemaPath: "#/properties/visual/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err19]; + } else { + vErrors.push(err19); + } + errors++; + } else { + errors = _errs34; + if (vErrors !== null) { + if (_errs34) { + vErrors.length = _errs34; + } else { + vErrors = null; + } + } } } } else { - const err5 = { + const err20 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -38877,24 +45534,24 @@ function validate371( message: "must be object", }; if (vErrors === null) { - vErrors = [err5]; + vErrors = [err20]; } else { - vErrors.push(err5); + vErrors.push(err20); } errors++; } - validate371.errors = vErrors; + validate413.errors = vErrors; return errors === 0; } -validate371.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate413.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate361( +function validate328( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate361.evaluated; + const evaluated0 = validate328.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -38905,9 +45562,9 @@ function validate361( let valid0 = false; const _errs1 = errors; if ( - !validate362(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate329(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate362.errors : vErrors.concat(validate362.errors); + vErrors = vErrors === null ? validate329.errors : vErrors.concat(validate329.errors); errors = vErrors.length; } var _valid0 = _errs1 === errors; @@ -38917,9 +45574,9 @@ function validate361( } const _errs2 = errors; if ( - !validate365(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate371(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate365.errors : vErrors.concat(validate365.errors); + vErrors = vErrors === null ? validate371.errors : vErrors.concat(validate371.errors); errors = vErrors.length; } var _valid0 = _errs2 === errors; @@ -38931,9 +45588,9 @@ function validate361( } const _errs3 = errors; if ( - !validate368(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate400(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate368.errors : vErrors.concat(validate368.errors); + vErrors = vErrors === null ? validate400.errors : vErrors.concat(validate400.errors); errors = vErrors.length; } var _valid0 = _errs3 === errors; @@ -38945,9 +45602,9 @@ function validate361( } const _errs4 = errors; if ( - !validate371(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate413(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate371.errors : vErrors.concat(validate371.errors); + vErrors = vErrors === null ? validate413.errors : vErrors.concat(validate413.errors); errors = vErrors.length; } var _valid0 = _errs4 === errors; @@ -38981,19 +45638,19 @@ function validate361( } } } - validate361.errors = vErrors; + validate328.errors = vErrors; evaluated0.props = props0; return errors === 0; } -validate361.evaluated = { dynamicProps: true, dynamicItems: false }; +validate328.evaluated = { dynamicProps: true, dynamicItems: false }; -function validate358( +function validate302( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { - let vErrors = null; + /*# sourceURL="urn:dander:control:contracts:v1:pipeline-graph" */ let vErrors = null; let errors = 0; - const evaluated0 = validate358.evaluated; + const evaluated0 = validate302.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -39001,50 +45658,29 @@ function validate358( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.join !== undefined) { - let data1 = data.join; - const _errs4 = errors; - let valid3 = false; - const _errs5 = errors; - if ( - !validate359(data1, { - instancePath: instancePath + "/join", - parentData: data, - parentDataProperty: "join", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate359.errors : vErrors.concat(validate359.errors); - errors = vErrors.length; - } - var _valid0 = _errs5 === errors; - valid3 = valid3 || _valid0; - const _errs6 = errors; - if (data1 !== null) { - const err0 = { - instancePath: instancePath + "/join", - schemaPath: "#/properties/join/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); - } - errors++; + if (data.name === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "name" }, + message: "must have required property '" + "name" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); } - var _valid0 = _errs6 === errors; - valid3 = valid3 || _valid0; - if (!valid3) { + errors++; + } + for (const key0 in data) { + if (!(key0 === "edges" || key0 === "name" || key0 === "nodes" || key0 === "trigger")) { const err1 = { - instancePath: instancePath + "/join", - schemaPath: "#/properties/join/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", }; if (vErrors === null) { vErrors = [err1]; @@ -39052,39 +45688,30 @@ function validate358( vErrors.push(err1); } errors++; - } else { - errors = _errs4; - if (vErrors !== null) { - if (_errs4) { - vErrors.length = _errs4; - } else { - vErrors = null; - } - } } } - if (data.operations !== undefined) { - let data2 = data.operations; - if (Array.isArray(data2)) { - const len0 = data2.length; + if (data.edges !== undefined) { + let data0 = data.edges; + if (Array.isArray(data0)) { + const len0 = data0.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate361(data2[i0], { - instancePath: instancePath + "/operations/" + i0, - parentData: data2, + !validate303(data0[i0], { + instancePath: instancePath + "/edges/" + i0, + parentData: data0, parentDataProperty: i0, rootData, dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate361.errors : vErrors.concat(validate361.errors); + vErrors = vErrors === null ? validate303.errors : vErrors.concat(validate303.errors); errors = vErrors.length; } } } else { const err2 = { - instancePath: instancePath + "/operations", - schemaPath: "#/properties/operations/type", + instancePath: instancePath + "/edges", + schemaPath: "#/properties/edges/type", keyword: "type", params: { type: "array" }, message: "must be array", @@ -39097,8 +45724,121 @@ function validate358( errors++; } } + if (data.name !== undefined) { + if (typeof data.name !== "string") { + const err3 = { + instancePath: instancePath + "/name", + schemaPath: "#/properties/name/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + } + if (data.nodes !== undefined) { + let data3 = data.nodes; + if (Array.isArray(data3)) { + const len1 = data3.length; + for (let i1 = 0; i1 < len1; i1++) { + if ( + !validate328(data3[i1], { + instancePath: instancePath + "/nodes/" + i1, + parentData: data3, + parentDataProperty: i1, + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate328.errors : vErrors.concat(validate328.errors); + errors = vErrors.length; + } + } + } else { + const err4 = { + instancePath: instancePath + "/nodes", + schemaPath: "#/properties/nodes/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + } + if (data.trigger !== undefined) { + let data5 = data.trigger; + const _errs11 = errors; + let valid5 = false; + const _errs12 = errors; + if ( + !validate357(data5, { + instancePath: instancePath + "/trigger", + parentData: data, + parentDataProperty: "trigger", + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate357.errors : vErrors.concat(validate357.errors); + errors = vErrors.length; + } + var _valid0 = _errs12 === errors; + valid5 = valid5 || _valid0; + const _errs13 = errors; + if (data5 !== null) { + const err5 = { + instancePath: instancePath + "/trigger", + schemaPath: "#/properties/trigger/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + var _valid0 = _errs13 === errors; + valid5 = valid5 || _valid0; + if (!valid5) { + const err6 = { + instancePath: instancePath + "/trigger", + schemaPath: "#/properties/trigger/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } else { + errors = _errs11; + if (vErrors !== null) { + if (_errs11) { + vErrors.length = _errs11; + } else { + vErrors = null; + } + } + } + } } else { - const err3 = { + const err7 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -39106,121 +45846,150 @@ function validate358( message: "must be object", }; if (vErrors === null) { - vErrors = [err3]; + vErrors = [err7]; } else { - vErrors.push(err3); + vErrors.push(err7); } errors++; } - validate358.errors = vErrors; + validate302.errors = vErrors; return errors === 0; } -validate358.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate302.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate357( +export const validatePluginCatalog = validate423; +const schema288 = { + $defs: { + PluginCatalogRecord: { + additionalProperties: false, + properties: { + compatible: { title: "Compatible", type: "boolean" }, + dander_specifier: { title: "Dander Specifier", type: "string" }, + description: { title: "Description", type: "string" }, + display_name: { title: "Display Name", type: "string" }, + distribution: { title: "Distribution", type: "string" }, + documentation_url: { title: "Documentation Url", type: "string" }, + id: { title: "Id", type: "string" }, + installed: { title: "Installed", type: "boolean" }, + installed_version: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Installed Version", + }, + pypi_url: { title: "Pypi Url", type: "string" }, + repository_url: { title: "Repository Url", type: "string" }, + support_status: { title: "Support Status", type: "string" }, + validation_status: { title: "Validation Status", type: "string" }, + version: { title: "Version", type: "string" }, + }, + required: [ + "id", + "display_name", + "description", + "distribution", + "version", + "dander_specifier", + "compatible", + "support_status", + "validation_status", + "documentation_url", + "pypi_url", + "repository_url", + "installed", + ], + title: "PluginCatalogRecord", + type: "object", + }, + }, + $id: "urn:dander:control:contracts:v1:plugin-catalog", + $schema: "https://json-schema.org/draft/2020-12/schema", + additionalProperties: false, + properties: { + connectors: { + items: { $ref: "#/$defs/PluginCatalogRecord" }, + title: "Connectors", + type: "array", + }, + dander_version: { title: "Dander Version", type: "string" }, + schema_version: { const: 1, default: 1, title: "Schema Version", type: "integer" }, + }, + required: ["dander_version"], + title: "PluginCatalogResponse", + type: "object", +}; +const schema289 = { + additionalProperties: false, + properties: { + compatible: { title: "Compatible", type: "boolean" }, + dander_specifier: { title: "Dander Specifier", type: "string" }, + description: { title: "Description", type: "string" }, + display_name: { title: "Display Name", type: "string" }, + distribution: { title: "Distribution", type: "string" }, + documentation_url: { title: "Documentation Url", type: "string" }, + id: { title: "Id", type: "string" }, + installed: { title: "Installed", type: "boolean" }, + installed_version: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Installed Version", + }, + pypi_url: { title: "Pypi Url", type: "string" }, + repository_url: { title: "Repository Url", type: "string" }, + support_status: { title: "Support Status", type: "string" }, + validation_status: { title: "Validation Status", type: "string" }, + version: { title: "Version", type: "string" }, + }, + required: [ + "id", + "display_name", + "description", + "distribution", + "version", + "dander_specifier", + "compatible", + "support_status", + "validation_status", + "documentation_url", + "pypi_url", + "repository_url", + "installed", + ], + title: "PluginCatalogRecord", + type: "object", +}; + +function validate423( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { - let vErrors = null; + /*# sourceURL="urn:dander:control:contracts:v1:plugin-catalog" */ let vErrors = null; let errors = 0; - const evaluated0 = validate357.evaluated; + const evaluated0 = validate423.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } if (evaluated0.dynamicItems) { evaluated0.items = undefined; } - const _errs1 = errors; - const _errs2 = errors; - if (data && typeof data == "object" && !Array.isArray(data)) { - let missing0; - if ( - (data.config === undefined && (missing0 = "config")) || - (data.params === undefined && (missing0 = "params")) - ) { - const err0 = {}; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); - } - errors++; - } - } - var valid0 = _errs2 === errors; - if (valid0) { - const err1 = { - instancePath, - schemaPath: "#/not", - keyword: "not", - params: {}, - message: "must NOT be valid", - }; - if (vErrors === null) { - vErrors = [err1]; - } else { - vErrors.push(err1); - } - errors++; - } else { - errors = _errs1; - if (vErrors !== null) { - if (_errs1) { - vErrors.length = _errs1; - } else { - vErrors = null; - } - } - } if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.id === undefined) { - const err2 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "id" }, - message: "must have required property '" + "id" + "'", - }; - if (vErrors === null) { - vErrors = [err2]; - } else { - vErrors.push(err2); - } - errors++; - } - if (data.type === undefined) { - const err3 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "type" }, - message: "must have required property '" + "type" + "'", - }; - if (vErrors === null) { - vErrors = [err3]; - } else { - vErrors.push(err3); - } - errors++; - } - if (data.name === undefined) { - const err4 = { + if (data.dander_version === undefined) { + const err0 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "name" }, - message: "must have required property '" + "name" + "'", + params: { missingProperty: "dander_version" }, + message: "must have required property '" + "dander_version" + "'", }; if (vErrors === null) { - vErrors = [err4]; + vErrors = [err0]; } else { - vErrors.push(err4); + vErrors.push(err0); } errors++; } for (const key0 in data) { - if (!func1.call(schema242.properties, key0)) { - const err5 = { + if (!(key0 === "connectors" || key0 === "dander_version" || key0 === "schema_version")) { + const err1 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", @@ -39228,378 +45997,810 @@ function validate357( message: "must NOT have additional properties", }; if (vErrors === null) { - vErrors = [err5]; - } else { - vErrors.push(err5); - } - errors++; - } - } - if (data.config !== undefined) { - if ( - !validate358(data.config, { - instancePath: instancePath + "/config", - parentData: data, - parentDataProperty: "config", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate358.errors : vErrors.concat(validate358.errors); - errors = vErrors.length; - } - } - if (data.cursor !== undefined) { - let data1 = data.cursor; - const _errs6 = errors; - let valid2 = false; - const _errs7 = errors; - if ( - !validate321(data1, { - instancePath: instancePath + "/cursor", - parentData: data, - parentDataProperty: "cursor", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate321.errors : vErrors.concat(validate321.errors); - errors = vErrors.length; - } - var _valid0 = _errs7 === errors; - valid2 = valid2 || _valid0; - const _errs8 = errors; - if (data1 !== null) { - const err6 = { - instancePath: instancePath + "/cursor", - schemaPath: "#/properties/cursor/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err6]; - } else { - vErrors.push(err6); - } - errors++; - } - var _valid0 = _errs8 === errors; - valid2 = valid2 || _valid0; - if (!valid2) { - const err7 = { - instancePath: instancePath + "/cursor", - schemaPath: "#/properties/cursor/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; - if (vErrors === null) { - vErrors = [err7]; + vErrors = [err1]; } else { - vErrors.push(err7); + vErrors.push(err1); } errors++; - } else { - errors = _errs6; - if (vErrors !== null) { - if (_errs6) { - vErrors.length = _errs6; - } else { - vErrors = null; - } - } } } - if (data.fields !== undefined) { - let data2 = data.fields; - if (Array.isArray(data2)) { - const len0 = data2.length; + if (data.connectors !== undefined) { + let data0 = data.connectors; + if (Array.isArray(data0)) { + const len0 = data0.length; for (let i0 = 0; i0 < len0; i0++) { - if ( - !validate325(data2[i0], { - instancePath: instancePath + "/fields/" + i0, - parentData: data2, - parentDataProperty: i0, - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate325.errors : vErrors.concat(validate325.errors); - errors = vErrors.length; + let data1 = data0[i0]; + if (data1 && typeof data1 == "object" && !Array.isArray(data1)) { + if (data1.id === undefined) { + const err2 = { + instancePath: instancePath + "/connectors/" + i0, + schemaPath: "#/$defs/PluginCatalogRecord/required", + keyword: "required", + params: { missingProperty: "id" }, + message: "must have required property '" + "id" + "'", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + if (data1.display_name === undefined) { + const err3 = { + instancePath: instancePath + "/connectors/" + i0, + schemaPath: "#/$defs/PluginCatalogRecord/required", + keyword: "required", + params: { missingProperty: "display_name" }, + message: "must have required property '" + "display_name" + "'", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + if (data1.description === undefined) { + const err4 = { + instancePath: instancePath + "/connectors/" + i0, + schemaPath: "#/$defs/PluginCatalogRecord/required", + keyword: "required", + params: { missingProperty: "description" }, + message: "must have required property '" + "description" + "'", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + if (data1.distribution === undefined) { + const err5 = { + instancePath: instancePath + "/connectors/" + i0, + schemaPath: "#/$defs/PluginCatalogRecord/required", + keyword: "required", + params: { missingProperty: "distribution" }, + message: "must have required property '" + "distribution" + "'", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + if (data1.version === undefined) { + const err6 = { + instancePath: instancePath + "/connectors/" + i0, + schemaPath: "#/$defs/PluginCatalogRecord/required", + keyword: "required", + params: { missingProperty: "version" }, + message: "must have required property '" + "version" + "'", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + if (data1.dander_specifier === undefined) { + const err7 = { + instancePath: instancePath + "/connectors/" + i0, + schemaPath: "#/$defs/PluginCatalogRecord/required", + keyword: "required", + params: { missingProperty: "dander_specifier" }, + message: "must have required property '" + "dander_specifier" + "'", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } + if (data1.compatible === undefined) { + const err8 = { + instancePath: instancePath + "/connectors/" + i0, + schemaPath: "#/$defs/PluginCatalogRecord/required", + keyword: "required", + params: { missingProperty: "compatible" }, + message: "must have required property '" + "compatible" + "'", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } + if (data1.support_status === undefined) { + const err9 = { + instancePath: instancePath + "/connectors/" + i0, + schemaPath: "#/$defs/PluginCatalogRecord/required", + keyword: "required", + params: { missingProperty: "support_status" }, + message: "must have required property '" + "support_status" + "'", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + if (data1.validation_status === undefined) { + const err10 = { + instancePath: instancePath + "/connectors/" + i0, + schemaPath: "#/$defs/PluginCatalogRecord/required", + keyword: "required", + params: { missingProperty: "validation_status" }, + message: "must have required property '" + "validation_status" + "'", + }; + if (vErrors === null) { + vErrors = [err10]; + } else { + vErrors.push(err10); + } + errors++; + } + if (data1.documentation_url === undefined) { + const err11 = { + instancePath: instancePath + "/connectors/" + i0, + schemaPath: "#/$defs/PluginCatalogRecord/required", + keyword: "required", + params: { missingProperty: "documentation_url" }, + message: "must have required property '" + "documentation_url" + "'", + }; + if (vErrors === null) { + vErrors = [err11]; + } else { + vErrors.push(err11); + } + errors++; + } + if (data1.pypi_url === undefined) { + const err12 = { + instancePath: instancePath + "/connectors/" + i0, + schemaPath: "#/$defs/PluginCatalogRecord/required", + keyword: "required", + params: { missingProperty: "pypi_url" }, + message: "must have required property '" + "pypi_url" + "'", + }; + if (vErrors === null) { + vErrors = [err12]; + } else { + vErrors.push(err12); + } + errors++; + } + if (data1.repository_url === undefined) { + const err13 = { + instancePath: instancePath + "/connectors/" + i0, + schemaPath: "#/$defs/PluginCatalogRecord/required", + keyword: "required", + params: { missingProperty: "repository_url" }, + message: "must have required property '" + "repository_url" + "'", + }; + if (vErrors === null) { + vErrors = [err13]; + } else { + vErrors.push(err13); + } + errors++; + } + if (data1.installed === undefined) { + const err14 = { + instancePath: instancePath + "/connectors/" + i0, + schemaPath: "#/$defs/PluginCatalogRecord/required", + keyword: "required", + params: { missingProperty: "installed" }, + message: "must have required property '" + "installed" + "'", + }; + if (vErrors === null) { + vErrors = [err14]; + } else { + vErrors.push(err14); + } + errors++; + } + for (const key1 in data1) { + if (!func1.call(schema289.properties, key1)) { + const err15 = { + instancePath: instancePath + "/connectors/" + i0, + schemaPath: "#/$defs/PluginCatalogRecord/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err15]; + } else { + vErrors.push(err15); + } + errors++; + } + } + if (data1.compatible !== undefined) { + if (typeof data1.compatible !== "boolean") { + const err16 = { + instancePath: instancePath + "/connectors/" + i0 + "/compatible", + schemaPath: "#/$defs/PluginCatalogRecord/properties/compatible/type", + keyword: "type", + params: { type: "boolean" }, + message: "must be boolean", + }; + if (vErrors === null) { + vErrors = [err16]; + } else { + vErrors.push(err16); + } + errors++; + } + } + if (data1.dander_specifier !== undefined) { + if (typeof data1.dander_specifier !== "string") { + const err17 = { + instancePath: instancePath + "/connectors/" + i0 + "/dander_specifier", + schemaPath: "#/$defs/PluginCatalogRecord/properties/dander_specifier/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err17]; + } else { + vErrors.push(err17); + } + errors++; + } + } + if (data1.description !== undefined) { + if (typeof data1.description !== "string") { + const err18 = { + instancePath: instancePath + "/connectors/" + i0 + "/description", + schemaPath: "#/$defs/PluginCatalogRecord/properties/description/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err18]; + } else { + vErrors.push(err18); + } + errors++; + } + } + if (data1.display_name !== undefined) { + if (typeof data1.display_name !== "string") { + const err19 = { + instancePath: instancePath + "/connectors/" + i0 + "/display_name", + schemaPath: "#/$defs/PluginCatalogRecord/properties/display_name/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err19]; + } else { + vErrors.push(err19); + } + errors++; + } + } + if (data1.distribution !== undefined) { + if (typeof data1.distribution !== "string") { + const err20 = { + instancePath: instancePath + "/connectors/" + i0 + "/distribution", + schemaPath: "#/$defs/PluginCatalogRecord/properties/distribution/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err20]; + } else { + vErrors.push(err20); + } + errors++; + } + } + if (data1.documentation_url !== undefined) { + if (typeof data1.documentation_url !== "string") { + const err21 = { + instancePath: instancePath + "/connectors/" + i0 + "/documentation_url", + schemaPath: "#/$defs/PluginCatalogRecord/properties/documentation_url/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err21]; + } else { + vErrors.push(err21); + } + errors++; + } + } + if (data1.id !== undefined) { + if (typeof data1.id !== "string") { + const err22 = { + instancePath: instancePath + "/connectors/" + i0 + "/id", + schemaPath: "#/$defs/PluginCatalogRecord/properties/id/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err22]; + } else { + vErrors.push(err22); + } + errors++; + } + } + if (data1.installed !== undefined) { + if (typeof data1.installed !== "boolean") { + const err23 = { + instancePath: instancePath + "/connectors/" + i0 + "/installed", + schemaPath: "#/$defs/PluginCatalogRecord/properties/installed/type", + keyword: "type", + params: { type: "boolean" }, + message: "must be boolean", + }; + if (vErrors === null) { + vErrors = [err23]; + } else { + vErrors.push(err23); + } + errors++; + } + } + if (data1.installed_version !== undefined) { + let data10 = data1.installed_version; + const _errs25 = errors; + let valid5 = false; + const _errs26 = errors; + if (typeof data10 !== "string") { + const err24 = { + instancePath: instancePath + "/connectors/" + i0 + "/installed_version", + schemaPath: + "#/$defs/PluginCatalogRecord/properties/installed_version/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err24]; + } else { + vErrors.push(err24); + } + errors++; + } + var _valid0 = _errs26 === errors; + valid5 = valid5 || _valid0; + const _errs28 = errors; + if (data10 !== null) { + const err25 = { + instancePath: instancePath + "/connectors/" + i0 + "/installed_version", + schemaPath: + "#/$defs/PluginCatalogRecord/properties/installed_version/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err25]; + } else { + vErrors.push(err25); + } + errors++; + } + var _valid0 = _errs28 === errors; + valid5 = valid5 || _valid0; + if (!valid5) { + const err26 = { + instancePath: instancePath + "/connectors/" + i0 + "/installed_version", + schemaPath: "#/$defs/PluginCatalogRecord/properties/installed_version/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err26]; + } else { + vErrors.push(err26); + } + errors++; + } else { + errors = _errs25; + if (vErrors !== null) { + if (_errs25) { + vErrors.length = _errs25; + } else { + vErrors = null; + } + } + } + } + if (data1.pypi_url !== undefined) { + if (typeof data1.pypi_url !== "string") { + const err27 = { + instancePath: instancePath + "/connectors/" + i0 + "/pypi_url", + schemaPath: "#/$defs/PluginCatalogRecord/properties/pypi_url/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err27]; + } else { + vErrors.push(err27); + } + errors++; + } + } + if (data1.repository_url !== undefined) { + if (typeof data1.repository_url !== "string") { + const err28 = { + instancePath: instancePath + "/connectors/" + i0 + "/repository_url", + schemaPath: "#/$defs/PluginCatalogRecord/properties/repository_url/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err28]; + } else { + vErrors.push(err28); + } + errors++; + } + } + if (data1.support_status !== undefined) { + if (typeof data1.support_status !== "string") { + const err29 = { + instancePath: instancePath + "/connectors/" + i0 + "/support_status", + schemaPath: "#/$defs/PluginCatalogRecord/properties/support_status/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err29]; + } else { + vErrors.push(err29); + } + errors++; + } + } + if (data1.validation_status !== undefined) { + if (typeof data1.validation_status !== "string") { + const err30 = { + instancePath: instancePath + "/connectors/" + i0 + "/validation_status", + schemaPath: "#/$defs/PluginCatalogRecord/properties/validation_status/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err30]; + } else { + vErrors.push(err30); + } + errors++; + } + } + if (data1.version !== undefined) { + if (typeof data1.version !== "string") { + const err31 = { + instancePath: instancePath + "/connectors/" + i0 + "/version", + schemaPath: "#/$defs/PluginCatalogRecord/properties/version/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err31]; + } else { + vErrors.push(err31); + } + errors++; + } + } + } else { + const err32 = { + instancePath: instancePath + "/connectors/" + i0, + schemaPath: "#/$defs/PluginCatalogRecord/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err32]; + } else { + vErrors.push(err32); + } + errors++; } } } else { - const err8 = { - instancePath: instancePath + "/fields", - schemaPath: "#/properties/fields/type", + const err33 = { + instancePath: instancePath + "/connectors", + schemaPath: "#/properties/connectors/type", keyword: "type", params: { type: "array" }, message: "must be array", }; if (vErrors === null) { - vErrors = [err8]; + vErrors = [err33]; } else { - vErrors.push(err8); + vErrors.push(err33); } errors++; } } - if (data.id !== undefined) { - if (typeof data.id !== "string") { - const err9 = { - instancePath: instancePath + "/id", - schemaPath: "#/properties/id/type", + if (data.dander_version !== undefined) { + if (typeof data.dander_version !== "string") { + const err34 = { + instancePath: instancePath + "/dander_version", + schemaPath: "#/properties/dander_version/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err9]; + vErrors = [err34]; } else { - vErrors.push(err9); + vErrors.push(err34); } errors++; } } - if (data.name !== undefined) { - if (typeof data.name !== "string") { - const err10 = { - instancePath: instancePath + "/name", - schemaPath: "#/properties/name/type", + if (data.schema_version !== undefined) { + let data17 = data.schema_version; + if (!(typeof data17 == "number" && !(data17 % 1) && !isNaN(data17) && isFinite(data17))) { + const err35 = { + instancePath: instancePath + "/schema_version", + schemaPath: "#/properties/schema_version/type", keyword: "type", - params: { type: "string" }, - message: "must be string", + params: { type: "integer" }, + message: "must be integer", }; if (vErrors === null) { - vErrors = [err10]; + vErrors = [err35]; } else { - vErrors.push(err10); + vErrors.push(err35); } errors++; } - } - if (data.params !== undefined) { - let data6 = data.params; - const _errs18 = errors; - let valid5 = false; - const _errs19 = errors; - if ( - !validate358(data6, { - instancePath: instancePath + "/params", - parentData: data, - parentDataProperty: "params", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate358.errors : vErrors.concat(validate358.errors); - errors = vErrors.length; - } - var _valid1 = _errs19 === errors; - valid5 = valid5 || _valid1; - const _errs20 = errors; - if (data6 !== null) { - const err11 = { - instancePath: instancePath + "/params", - schemaPath: "#/properties/params/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", + if (1 !== data17) { + const err36 = { + instancePath: instancePath + "/schema_version", + schemaPath: "#/properties/schema_version/const", + keyword: "const", + params: { allowedValue: 1 }, + message: "must be equal to constant", }; if (vErrors === null) { - vErrors = [err11]; + vErrors = [err36]; } else { - vErrors.push(err11); + vErrors.push(err36); } errors++; } - var _valid1 = _errs20 === errors; - valid5 = valid5 || _valid1; - if (!valid5) { - const err12 = { - instancePath: instancePath + "/params", - schemaPath: "#/properties/params/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; - if (vErrors === null) { - vErrors = [err12]; - } else { - vErrors.push(err12); - } - errors++; + } + } else { + const err37 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err37]; + } else { + vErrors.push(err37); + } + errors++; + } + validate423.errors = vErrors; + return errors === 0; +} +validate423.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +export const validateProjectList = validate424; +const schema290 = { + $defs: { + ProjectSummaryResponse: { + additionalProperties: false, + description: "One configured logical project, never a provider project payload.", + properties: { id: { title: "Id", type: "string" } }, + required: ["id"], + title: "ProjectSummaryResponse", + type: "object", + }, + }, + $id: "urn:dander:control:contracts:v1:project-list", + $schema: "https://json-schema.org/draft/2020-12/schema", + additionalProperties: false, + description: "The bounded logical projects configured for this Dander installation.", + properties: { + projects: { + items: { $ref: "#/$defs/ProjectSummaryResponse" }, + maxItems: 100, + title: "Projects", + type: "array", + }, + }, + required: ["projects"], + title: "ProjectListResponse", + type: "object", +}; +const schema291 = { + additionalProperties: false, + description: "One configured logical project, never a provider project payload.", + properties: { id: { title: "Id", type: "string" } }, + required: ["id"], + title: "ProjectSummaryResponse", + type: "object", +}; + +function validate424( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + /*# sourceURL="urn:dander:control:contracts:v1:project-list" */ let vErrors = null; + let errors = 0; + const evaluated0 = validate424.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.projects === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "projects" }, + message: "must have required property '" + "projects" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; } else { - errors = _errs18; - if (vErrors !== null) { - if (_errs18) { - vErrors.length = _errs18; - } else { - vErrors = null; - } - } + vErrors.push(err0); } + errors++; } - if (data.trigger !== undefined) { - let data7 = data.trigger; - const _errs24 = errors; - let valid6 = false; - const _errs25 = errors; - if ( - !validate343(data7, { - instancePath: instancePath + "/trigger", - parentData: data, - parentDataProperty: "trigger", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate343.errors : vErrors.concat(validate343.errors); - errors = vErrors.length; - } - var _valid2 = _errs25 === errors; - valid6 = valid6 || _valid2; - const _errs26 = errors; - if (data7 !== null) { - const err13 = { - instancePath: instancePath + "/trigger", - schemaPath: "#/properties/trigger/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", + for (const key0 in data) { + if (!(key0 === "projects")) { + const err1 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", }; if (vErrors === null) { - vErrors = [err13]; + vErrors = [err1]; } else { - vErrors.push(err13); + vErrors.push(err1); } errors++; } - var _valid2 = _errs26 === errors; - valid6 = valid6 || _valid2; - if (!valid6) { - const err14 = { - instancePath: instancePath + "/trigger", - schemaPath: "#/properties/trigger/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; - if (vErrors === null) { - vErrors = [err14]; - } else { - vErrors.push(err14); - } - errors++; - } else { - errors = _errs24; - if (vErrors !== null) { - if (_errs24) { - vErrors.length = _errs24; + } + if (data.projects !== undefined) { + let data0 = data.projects; + if (Array.isArray(data0)) { + if (data0.length > 100) { + const err2 = { + instancePath: instancePath + "/projects", + schemaPath: "#/properties/projects/maxItems", + keyword: "maxItems", + params: { limit: 100 }, + message: "must NOT have more than 100 items", + }; + if (vErrors === null) { + vErrors = [err2]; } else { - vErrors = null; + vErrors.push(err2); } + errors++; } - } - } - if (data.type !== undefined) { - let data8 = data.type; - if (typeof data8 !== "string") { - const err15 = { - instancePath: instancePath + "/type", - schemaPath: "#/properties/type/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err15]; - } else { - vErrors.push(err15); - } - errors++; - } - if ("transform" !== data8) { - const err16 = { - instancePath: instancePath + "/type", - schemaPath: "#/properties/type/const", - keyword: "const", - params: { allowedValue: "transform" }, - message: "must be equal to constant", - }; - if (vErrors === null) { - vErrors = [err16]; - } else { - vErrors.push(err16); + const len0 = data0.length; + for (let i0 = 0; i0 < len0; i0++) { + let data1 = data0[i0]; + if (data1 && typeof data1 == "object" && !Array.isArray(data1)) { + if (data1.id === undefined) { + const err3 = { + instancePath: instancePath + "/projects/" + i0, + schemaPath: "#/$defs/ProjectSummaryResponse/required", + keyword: "required", + params: { missingProperty: "id" }, + message: "must have required property '" + "id" + "'", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + for (const key1 in data1) { + if (!(key1 === "id")) { + const err4 = { + instancePath: instancePath + "/projects/" + i0, + schemaPath: "#/$defs/ProjectSummaryResponse/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } + } + if (data1.id !== undefined) { + if (typeof data1.id !== "string") { + const err5 = { + instancePath: instancePath + "/projects/" + i0 + "/id", + schemaPath: "#/$defs/ProjectSummaryResponse/properties/id/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err5]; + } else { + vErrors.push(err5); + } + errors++; + } + } + } else { + const err6 = { + instancePath: instancePath + "/projects/" + i0, + schemaPath: "#/$defs/ProjectSummaryResponse/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } } - errors++; - } - } - if (data.visual !== undefined) { - let data9 = data.visual; - const _errs31 = errors; - let valid7 = false; - const _errs32 = errors; - if ( - !validate354(data9, { - instancePath: instancePath + "/visual", - parentData: data, - parentDataProperty: "visual", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate354.errors : vErrors.concat(validate354.errors); - errors = vErrors.length; - } - var _valid3 = _errs32 === errors; - valid7 = valid7 || _valid3; - const _errs33 = errors; - if (data9 !== null) { - const err17 = { - instancePath: instancePath + "/visual", - schemaPath: "#/properties/visual/anyOf/1/type", + } else { + const err7 = { + instancePath: instancePath + "/projects", + schemaPath: "#/properties/projects/type", keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err17]; - } else { - vErrors.push(err17); - } - errors++; - } - var _valid3 = _errs33 === errors; - valid7 = valid7 || _valid3; - if (!valid7) { - const err18 = { - instancePath: instancePath + "/visual", - schemaPath: "#/properties/visual/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", + params: { type: "array" }, + message: "must be array", }; if (vErrors === null) { - vErrors = [err18]; + vErrors = [err7]; } else { - vErrors.push(err18); + vErrors.push(err7); } errors++; - } else { - errors = _errs31; - if (vErrors !== null) { - if (_errs31) { - vErrors.length = _errs31; - } else { - vErrors = null; - } - } } } } else { - const err19 = { + const err8 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -39607,138 +46808,102 @@ function validate357( message: "must be object", }; if (vErrors === null) { - vErrors = [err19]; + vErrors = [err8]; } else { - vErrors.push(err19); + vErrors.push(err8); } errors++; } - validate357.errors = vErrors; + validate424.errors = vErrors; return errors === 0; } -validate357.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate424.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -const schema260 = { - additionalProperties: false, - not: { required: ["config", "params"] }, - properties: { - config: { $ref: "#/$defs/TargetNodeConfigDocument" }, - cursor: { - anyOf: [{ $ref: "#/$defs/CursorStrategyDocument" }, { type: "null" }], - default: null, - }, - fields: { items: { $ref: "#/$defs/NodeFieldDocument" }, title: "Fields", type: "array" }, - id: { title: "Id", type: "string" }, - name: { title: "Name", type: "string" }, - params: { - anyOf: [{ $ref: "#/$defs/TargetNodeConfigDocument" }, { type: "null" }], - default: null, - deprecated: true, - "x-dander-canonical-name": "config", - }, - trigger: { anyOf: [{ $ref: "#/$defs/TriggerDocument" }, { type: "null" }], default: null }, - type: { const: "target", title: "Type", type: "string" }, - visual: { anyOf: [{ $ref: "#/$defs/NodeVisualDocument" }, { type: "null" }], default: null }, - }, - required: ["id", "type", "name"], - title: "TargetNodeDocument", - type: "object", -}; -const schema261 = { - additionalProperties: { $ref: "#/$defs/JsonValue" }, - properties: { - writer: { anyOf: [{ $ref: "#/$defs/WriterDocument" }, { type: "null" }], default: null }, - }, - title: "TargetNodeConfigDocument", - type: "object", -}; -const schema263 = { - additionalProperties: false, - properties: { - clustering: { items: { type: "string" }, maxItems: 4, title: "Clustering", type: "array" }, - cursor_field: { - anyOf: [{ type: "string" }, { type: "null" }], - default: null, - title: "Cursor Field", - }, - destination: { $ref: "#/$defs/DestinationDocument" }, - max_batch_rows: { - default: 10000, - exclusiveMinimum: 0, - maximum: 100000, - title: "Max Batch Rows", - type: "integer", - }, - partitioning: { - anyOf: [{ $ref: "#/$defs/PartitioningDocument" }, { type: "null" }], - default: null, +export const validateRunExplanation = validate425; +const schema292 = { + $defs: { + RunActionKind: { + enum: [ + "refresh", + "logs", + "replay", + "cancel", + "inspect_outputs", + "review_configuration", + "none", + ], + type: "string", }, - schema_evolution: { $ref: "#/$defs/SchemaEvolution", default: "strict" }, - transport: { - default: "load_job", - enum: ["load_job", "storage_write", "copy"], - title: "Transport", + RunExplanationAction: { + additionalProperties: false, + description: "One suggested next step, without performing a run mutation.", + properties: { + kind: { $ref: "#/$defs/RunActionKind" }, + label: { title: "Label", type: "string" }, + reason: { title: "Reason", type: "string" }, + }, + required: ["kind", "label", "reason"], + title: "RunExplanationAction", + type: "object", + }, + RunState: { + enum: ["queued", "running", "succeeded", "failed", "canceling", "canceled", "retrying"], + title: "RunState", type: "string", }, - write_mode: { $ref: "#/$defs/WriteMode" }, }, - required: ["write_mode", "destination"], - title: "WriterDocument", - type: "object", -}; -const schema264 = { + $id: "urn:dander:control:contracts:v1:run-explanation", + $schema: "https://json-schema.org/draft/2020-12/schema", additionalProperties: false, + description: "A bounded explanation derived only from the current normalized run status.", properties: { - business_key: { items: { type: "string" }, title: "Business Key", type: "array" }, - dataset: { minLength: 1, title: "Dataset", type: "string" }, - project: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Project" }, - table: { minLength: 1, title: "Table", type: "string" }, + available_actions: { + items: { $ref: "#/$defs/RunActionKind" }, + maxItems: 7, + title: "Available Actions", + type: "array", + }, + caveats: { items: { type: "string" }, maxItems: 8, title: "Caveats", type: "array" }, + details: { items: { type: "string" }, maxItems: 8, title: "Details", type: "array" }, + next_action: { $ref: "#/$defs/RunExplanationAction" }, + results_available: { title: "Results Available", type: "boolean" }, + run_id: { title: "Run Id", type: "string" }, + state: { $ref: "#/$defs/RunState" }, + summary: { title: "Summary", type: "string" }, }, - required: ["dataset", "table"], - title: "DestinationDocument", + required: ["run_id", "state", "results_available", "summary", "next_action"], + title: "RunExplanationResponse", type: "object", }; -const schema267 = { - description: "How a writer handles declared columns absent from an existing target.", - enum: ["strict", "additive"], - title: "SchemaEvolution", +const schema293 = { + enum: ["refresh", "logs", "replay", "cancel", "inspect_outputs", "review_configuration", "none"], type: "string", }; -const schema268 = { - description: "Supported load strategies.", - enum: ["scd1", "scd2", "snapshot", "incremental", "replace"], - title: "WriteMode", +const schema296 = { + enum: ["queued", "running", "succeeded", "failed", "canceling", "canceled", "retrying"], + title: "RunState", type: "string", }; -const schema265 = { +const schema294 = { additionalProperties: false, + description: "One suggested next step, without performing a run mutation.", properties: { - field: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Field" }, - granularity: { $ref: "#/$defs/PartitioningType", default: "day" }, - require_partition_filter: { - default: false, - title: "Require Partition Filter", - type: "boolean", - }, + kind: { $ref: "#/$defs/RunActionKind" }, + label: { title: "Label", type: "string" }, + reason: { title: "Reason", type: "string" }, }, - title: "PartitioningDocument", + required: ["kind", "label", "reason"], + title: "RunExplanationAction", type: "object", }; -const schema266 = { - description: - "The closed set of time-unit partitioning granularities a `PartitioningSpec` may declare.\n\nA `StrEnum` (matching the `WriteMode`/`TransformationKind`/`JoinType` convention elsewhere in\n`dander.pipeline`), so it serializes to/from its plain string value stably in YAML and JSON;\nan out-of-set value fails validation with a clear `ValidationError`. Scope is deliberately\nlimited to BigQuery time-unit partitioning — integer-range partitioning is a deferred future\nmember (see `steering/02-engineering.md` on avoiding speculative generality).\n\nAttributes:\n HOUR: Hourly partitions.\n DAY: Daily partitions — the common case and BigQuery's default granularity.\n MONTH: Monthly partitions.\n YEAR: Yearly partitions.", - enum: ["hour", "day", "month", "year"], - title: "PartitioningType", - type: "string", -}; -function validate389( +function validate426( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate389.evaluated; + const evaluated0 = validate426.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -39746,94 +46911,74 @@ function validate389( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.kind === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "kind" }, + message: "must have required property '" + "kind" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + if (data.label === undefined) { + const err1 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "label" }, + message: "must have required property '" + "label" + "'", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + if (data.reason === undefined) { + const err2 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "reason" }, + message: "must have required property '" + "reason" + "'", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } for (const key0 in data) { - if (!(key0 === "field" || key0 === "granularity" || key0 === "require_partition_filter")) { - const err0 = { + if (!(key0 === "kind" || key0 === "label" || key0 === "reason")) { + const err3 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties", }; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); - } - errors++; - } - } - if (data.field !== undefined) { - let data0 = data.field; - const _errs3 = errors; - let valid1 = false; - const _errs4 = errors; - if (typeof data0 !== "string") { - const err1 = { - instancePath: instancePath + "/field", - schemaPath: "#/properties/field/anyOf/0/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err1]; - } else { - vErrors.push(err1); - } - errors++; - } - var _valid0 = _errs4 === errors; - valid1 = valid1 || _valid0; - const _errs6 = errors; - if (data0 !== null) { - const err2 = { - instancePath: instancePath + "/field", - schemaPath: "#/properties/field/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err2]; - } else { - vErrors.push(err2); - } - errors++; - } - var _valid0 = _errs6 === errors; - valid1 = valid1 || _valid0; - if (!valid1) { - const err3 = { - instancePath: instancePath + "/field", - schemaPath: "#/properties/field/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; if (vErrors === null) { vErrors = [err3]; } else { vErrors.push(err3); } errors++; - } else { - errors = _errs3; - if (vErrors !== null) { - if (_errs3) { - vErrors.length = _errs3; - } else { - vErrors = null; - } - } } } - if (data.granularity !== undefined) { - let data1 = data.granularity; - if (typeof data1 !== "string") { + if (data.kind !== undefined) { + let data0 = data.kind; + if (typeof data0 !== "string") { const err4 = { - instancePath: instancePath + "/granularity", - schemaPath: "#/$defs/PartitioningType/type", + instancePath: instancePath + "/kind", + schemaPath: "#/$defs/RunActionKind/type", keyword: "type", params: { type: "string" }, message: "must be string", @@ -39845,12 +46990,20 @@ function validate389( } errors++; } - if (!(data1 === "hour" || data1 === "day" || data1 === "month" || data1 === "year")) { + if (!( + data0 === "refresh" || + data0 === "logs" || + data0 === "replay" || + data0 === "cancel" || + data0 === "inspect_outputs" || + data0 === "review_configuration" || + data0 === "none" + )) { const err5 = { - instancePath: instancePath + "/granularity", - schemaPath: "#/$defs/PartitioningType/enum", + instancePath: instancePath + "/kind", + schemaPath: "#/$defs/RunActionKind/enum", keyword: "enum", - params: { allowedValues: schema266.enum }, + params: { allowedValues: schema293.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -39861,14 +47014,14 @@ function validate389( errors++; } } - if (data.require_partition_filter !== undefined) { - if (typeof data.require_partition_filter !== "boolean") { + if (data.label !== undefined) { + if (typeof data.label !== "string") { const err6 = { - instancePath: instancePath + "/require_partition_filter", - schemaPath: "#/properties/require_partition_filter/type", + instancePath: instancePath + "/label", + schemaPath: "#/properties/label/type", keyword: "type", - params: { type: "boolean" }, - message: "must be boolean", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { vErrors = [err6]; @@ -39878,8 +47031,25 @@ function validate389( errors++; } } + if (data.reason !== undefined) { + if (typeof data.reason !== "string") { + const err7 = { + instancePath: instancePath + "/reason", + schemaPath: "#/properties/reason/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err7]; + } else { + vErrors.push(err7); + } + errors++; + } + } } else { - const err7 = { + const err8 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -39887,24 +47057,24 @@ function validate389( message: "must be object", }; if (vErrors === null) { - vErrors = [err7]; + vErrors = [err8]; } else { - vErrors.push(err7); + vErrors.push(err8); } errors++; } - validate389.errors = vErrors; + validate426.errors = vErrors; return errors === 0; } -validate389.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate426.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate388( +function validate425( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { - let vErrors = null; + /*# sourceURL="urn:dander:control:contracts:v1:run-explanation" */ let vErrors = null; let errors = 0; - const evaluated0 = validate388.evaluated; + const evaluated0 = validate425.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -39912,13 +47082,13 @@ function validate388( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.write_mode === undefined) { + if (data.run_id === undefined) { const err0 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "write_mode" }, - message: "must have required property '" + "write_mode" + "'", + params: { missingProperty: "run_id" }, + message: "must have required property '" + "run_id" + "'", }; if (vErrors === null) { vErrors = [err0]; @@ -39927,13 +47097,13 @@ function validate388( } errors++; } - if (data.destination === undefined) { + if (data.state === undefined) { const err1 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "destination" }, - message: "must have required property '" + "destination" + "'", + params: { missingProperty: "state" }, + message: "must have required property '" + "state" + "'", }; if (vErrors === null) { vErrors = [err1]; @@ -39942,76 +47112,69 @@ function validate388( } errors++; } + if (data.results_available === undefined) { + const err2 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "results_available" }, + message: "must have required property '" + "results_available" + "'", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + if (data.summary === undefined) { + const err3 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "summary" }, + message: "must have required property '" + "summary" + "'", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + if (data.next_action === undefined) { + const err4 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "next_action" }, + message: "must have required property '" + "next_action" + "'", + }; + if (vErrors === null) { + vErrors = [err4]; + } else { + vErrors.push(err4); + } + errors++; + } for (const key0 in data) { if (!( - key0 === "clustering" || - key0 === "cursor_field" || - key0 === "destination" || - key0 === "max_batch_rows" || - key0 === "partitioning" || - key0 === "schema_evolution" || - key0 === "transport" || - key0 === "write_mode" + key0 === "available_actions" || + key0 === "caveats" || + key0 === "details" || + key0 === "next_action" || + key0 === "results_available" || + key0 === "run_id" || + key0 === "state" || + key0 === "summary" )) { - const err2 = { + const err5 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties", }; - if (vErrors === null) { - vErrors = [err2]; - } else { - vErrors.push(err2); - } - errors++; - } - } - if (data.clustering !== undefined) { - let data0 = data.clustering; - if (Array.isArray(data0)) { - if (data0.length > 4) { - const err3 = { - instancePath: instancePath + "/clustering", - schemaPath: "#/properties/clustering/maxItems", - keyword: "maxItems", - params: { limit: 4 }, - message: "must NOT have more than 4 items", - }; - if (vErrors === null) { - vErrors = [err3]; - } else { - vErrors.push(err3); - } - errors++; - } - const len0 = data0.length; - for (let i0 = 0; i0 < len0; i0++) { - if (typeof data0[i0] !== "string") { - const err4 = { - instancePath: instancePath + "/clustering/" + i0, - schemaPath: "#/properties/clustering/items/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err4]; - } else { - vErrors.push(err4); - } - errors++; - } - } - } else { - const err5 = { - instancePath: instancePath + "/clustering", - schemaPath: "#/properties/clustering/type", - keyword: "type", - params: { type: "array" }, - message: "must be array", - }; if (vErrors === null) { vErrors = [err5]; } else { @@ -40020,627 +47183,294 @@ function validate388( errors++; } } - if (data.cursor_field !== undefined) { - let data2 = data.cursor_field; - const _errs7 = errors; - let valid3 = false; - const _errs8 = errors; - if (typeof data2 !== "string") { - const err6 = { - instancePath: instancePath + "/cursor_field", - schemaPath: "#/properties/cursor_field/anyOf/0/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err6]; - } else { - vErrors.push(err6); - } - errors++; - } - var _valid0 = _errs8 === errors; - valid3 = valid3 || _valid0; - const _errs10 = errors; - if (data2 !== null) { - const err7 = { - instancePath: instancePath + "/cursor_field", - schemaPath: "#/properties/cursor_field/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; - } - var _valid0 = _errs10 === errors; - valid3 = valid3 || _valid0; - if (!valid3) { - const err8 = { - instancePath: instancePath + "/cursor_field", - schemaPath: "#/properties/cursor_field/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; - if (vErrors === null) { - vErrors = [err8]; - } else { - vErrors.push(err8); - } - errors++; - } else { - errors = _errs7; - if (vErrors !== null) { - if (_errs7) { - vErrors.length = _errs7; - } else { - vErrors = null; - } - } - } - } - if (data.destination !== undefined) { - let data3 = data.destination; - if (data3 && typeof data3 == "object" && !Array.isArray(data3)) { - if (data3.dataset === undefined) { - const err9 = { - instancePath: instancePath + "/destination", - schemaPath: "#/$defs/DestinationDocument/required", - keyword: "required", - params: { missingProperty: "dataset" }, - message: "must have required property '" + "dataset" + "'", - }; - if (vErrors === null) { - vErrors = [err9]; - } else { - vErrors.push(err9); - } - errors++; - } - if (data3.table === undefined) { - const err10 = { - instancePath: instancePath + "/destination", - schemaPath: "#/$defs/DestinationDocument/required", - keyword: "required", - params: { missingProperty: "table" }, - message: "must have required property '" + "table" + "'", + if (data.available_actions !== undefined) { + let data0 = data.available_actions; + if (Array.isArray(data0)) { + if (data0.length > 7) { + const err6 = { + instancePath: instancePath + "/available_actions", + schemaPath: "#/properties/available_actions/maxItems", + keyword: "maxItems", + params: { limit: 7 }, + message: "must NOT have more than 7 items", }; if (vErrors === null) { - vErrors = [err10]; - } else { - vErrors.push(err10); - } - errors++; - } - for (const key1 in data3) { - if (!( - key1 === "business_key" || - key1 === "dataset" || - key1 === "project" || - key1 === "table" - )) { - const err11 = { - instancePath: instancePath + "/destination", - schemaPath: "#/$defs/DestinationDocument/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key1 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err11]; - } else { - vErrors.push(err11); - } - errors++; - } - } - if (data3.business_key !== undefined) { - let data4 = data3.business_key; - if (Array.isArray(data4)) { - const len1 = data4.length; - for (let i1 = 0; i1 < len1; i1++) { - if (typeof data4[i1] !== "string") { - const err12 = { - instancePath: instancePath + "/destination/business_key/" + i1, - schemaPath: "#/$defs/DestinationDocument/properties/business_key/items/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err12]; - } else { - vErrors.push(err12); - } - errors++; - } - } - } else { - const err13 = { - instancePath: instancePath + "/destination/business_key", - schemaPath: "#/$defs/DestinationDocument/properties/business_key/type", - keyword: "type", - params: { type: "array" }, - message: "must be array", - }; - if (vErrors === null) { - vErrors = [err13]; - } else { - vErrors.push(err13); - } - errors++; - } - } - if (data3.dataset !== undefined) { - let data6 = data3.dataset; - if (typeof data6 === "string") { - if (func2(data6) < 1) { - const err14 = { - instancePath: instancePath + "/destination/dataset", - schemaPath: "#/$defs/DestinationDocument/properties/dataset/minLength", - keyword: "minLength", - params: { limit: 1 }, - message: "must NOT have fewer than 1 characters", - }; - if (vErrors === null) { - vErrors = [err14]; - } else { - vErrors.push(err14); - } - errors++; - } - } else { - const err15 = { - instancePath: instancePath + "/destination/dataset", - schemaPath: "#/$defs/DestinationDocument/properties/dataset/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err15]; - } else { - vErrors.push(err15); - } - errors++; - } - } - if (data3.project !== undefined) { - let data7 = data3.project; - const _errs23 = errors; - let valid8 = false; - const _errs24 = errors; - if (typeof data7 !== "string") { - const err16 = { - instancePath: instancePath + "/destination/project", - schemaPath: "#/$defs/DestinationDocument/properties/project/anyOf/0/type", + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + const len0 = data0.length; + for (let i0 = 0; i0 < len0; i0++) { + let data1 = data0[i0]; + if (typeof data1 !== "string") { + const err7 = { + instancePath: instancePath + "/available_actions/" + i0, + schemaPath: "#/$defs/RunActionKind/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err16]; + vErrors = [err7]; } else { - vErrors.push(err16); + vErrors.push(err7); } errors++; } - var _valid1 = _errs24 === errors; - valid8 = valid8 || _valid1; - const _errs26 = errors; - if (data7 !== null) { - const err17 = { - instancePath: instancePath + "/destination/project", - schemaPath: "#/$defs/DestinationDocument/properties/project/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", + if (!( + data1 === "refresh" || + data1 === "logs" || + data1 === "replay" || + data1 === "cancel" || + data1 === "inspect_outputs" || + data1 === "review_configuration" || + data1 === "none" + )) { + const err8 = { + instancePath: instancePath + "/available_actions/" + i0, + schemaPath: "#/$defs/RunActionKind/enum", + keyword: "enum", + params: { allowedValues: schema293.enum }, + message: "must be equal to one of the allowed values", }; if (vErrors === null) { - vErrors = [err17]; + vErrors = [err8]; } else { - vErrors.push(err17); + vErrors.push(err8); } errors++; } - var _valid1 = _errs26 === errors; - valid8 = valid8 || _valid1; - if (!valid8) { - const err18 = { - instancePath: instancePath + "/destination/project", - schemaPath: "#/$defs/DestinationDocument/properties/project/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; - if (vErrors === null) { - vErrors = [err18]; - } else { - vErrors.push(err18); - } - errors++; + } + } else { + const err9 = { + instancePath: instancePath + "/available_actions", + schemaPath: "#/properties/available_actions/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err9]; + } else { + vErrors.push(err9); + } + errors++; + } + } + if (data.caveats !== undefined) { + let data2 = data.caveats; + if (Array.isArray(data2)) { + if (data2.length > 8) { + const err10 = { + instancePath: instancePath + "/caveats", + schemaPath: "#/properties/caveats/maxItems", + keyword: "maxItems", + params: { limit: 8 }, + message: "must NOT have more than 8 items", + }; + if (vErrors === null) { + vErrors = [err10]; } else { - errors = _errs23; - if (vErrors !== null) { - if (_errs23) { - vErrors.length = _errs23; - } else { - vErrors = null; - } - } + vErrors.push(err10); } + errors++; } - if (data3.table !== undefined) { - let data8 = data3.table; - if (typeof data8 === "string") { - if (func2(data8) < 1) { - const err19 = { - instancePath: instancePath + "/destination/table", - schemaPath: "#/$defs/DestinationDocument/properties/table/minLength", - keyword: "minLength", - params: { limit: 1 }, - message: "must NOT have fewer than 1 characters", - }; - if (vErrors === null) { - vErrors = [err19]; - } else { - vErrors.push(err19); - } - errors++; - } - } else { - const err20 = { - instancePath: instancePath + "/destination/table", - schemaPath: "#/$defs/DestinationDocument/properties/table/type", + const len1 = data2.length; + for (let i1 = 0; i1 < len1; i1++) { + if (typeof data2[i1] !== "string") { + const err11 = { + instancePath: instancePath + "/caveats/" + i1, + schemaPath: "#/properties/caveats/items/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err20]; + vErrors = [err11]; } else { - vErrors.push(err20); + vErrors.push(err11); } errors++; } } } else { - const err21 = { - instancePath: instancePath + "/destination", - schemaPath: "#/$defs/DestinationDocument/type", + const err12 = { + instancePath: instancePath + "/caveats", + schemaPath: "#/properties/caveats/type", keyword: "type", - params: { type: "object" }, - message: "must be object", + params: { type: "array" }, + message: "must be array", }; if (vErrors === null) { - vErrors = [err21]; + vErrors = [err12]; } else { - vErrors.push(err21); + vErrors.push(err12); } errors++; } } - if (data.max_batch_rows !== undefined) { - let data9 = data.max_batch_rows; - if (!(typeof data9 == "number" && !(data9 % 1) && !isNaN(data9) && isFinite(data9))) { - const err22 = { - instancePath: instancePath + "/max_batch_rows", - schemaPath: "#/properties/max_batch_rows/type", - keyword: "type", - params: { type: "integer" }, - message: "must be integer", - }; - if (vErrors === null) { - vErrors = [err22]; - } else { - vErrors.push(err22); - } - errors++; - } - if (typeof data9 == "number" && isFinite(data9)) { - if (data9 > 100000 || isNaN(data9)) { - const err23 = { - instancePath: instancePath + "/max_batch_rows", - schemaPath: "#/properties/max_batch_rows/maximum", - keyword: "maximum", - params: { comparison: "<=", limit: 100000 }, - message: "must be <= 100000", + if (data.details !== undefined) { + let data4 = data.details; + if (Array.isArray(data4)) { + if (data4.length > 8) { + const err13 = { + instancePath: instancePath + "/details", + schemaPath: "#/properties/details/maxItems", + keyword: "maxItems", + params: { limit: 8 }, + message: "must NOT have more than 8 items", }; if (vErrors === null) { - vErrors = [err23]; + vErrors = [err13]; } else { - vErrors.push(err23); + vErrors.push(err13); } errors++; } - if (data9 <= 0 || isNaN(data9)) { - const err24 = { - instancePath: instancePath + "/max_batch_rows", - schemaPath: "#/properties/max_batch_rows/exclusiveMinimum", - keyword: "exclusiveMinimum", - params: { comparison: ">", limit: 0 }, - message: "must be > 0", - }; - if (vErrors === null) { - vErrors = [err24]; - } else { - vErrors.push(err24); + const len2 = data4.length; + for (let i2 = 0; i2 < len2; i2++) { + if (typeof data4[i2] !== "string") { + const err14 = { + instancePath: instancePath + "/details/" + i2, + schemaPath: "#/properties/details/items/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err14]; + } else { + vErrors.push(err14); + } + errors++; } - errors++; } + } else { + const err15 = { + instancePath: instancePath + "/details", + schemaPath: "#/properties/details/type", + keyword: "type", + params: { type: "array" }, + message: "must be array", + }; + if (vErrors === null) { + vErrors = [err15]; + } else { + vErrors.push(err15); + } + errors++; } } - if (data.partitioning !== undefined) { - let data10 = data.partitioning; - const _errs33 = errors; - let valid9 = false; - const _errs34 = errors; + if (data.next_action !== undefined) { if ( - !validate389(data10, { - instancePath: instancePath + "/partitioning", + !validate426(data.next_action, { + instancePath: instancePath + "/next_action", parentData: data, - parentDataProperty: "partitioning", + parentDataProperty: "next_action", rootData, dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate389.errors : vErrors.concat(validate389.errors); + vErrors = vErrors === null ? validate426.errors : vErrors.concat(validate426.errors); errors = vErrors.length; } - var _valid2 = _errs34 === errors; - valid9 = valid9 || _valid2; - const _errs35 = errors; - if (data10 !== null) { - const err25 = { - instancePath: instancePath + "/partitioning", - schemaPath: "#/properties/partitioning/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err25]; - } else { - vErrors.push(err25); - } - errors++; - } - var _valid2 = _errs35 === errors; - valid9 = valid9 || _valid2; - if (!valid9) { - const err26 = { - instancePath: instancePath + "/partitioning", - schemaPath: "#/properties/partitioning/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; - if (vErrors === null) { - vErrors = [err26]; - } else { - vErrors.push(err26); - } - errors++; - } else { - errors = _errs33; - if (vErrors !== null) { - if (_errs33) { - vErrors.length = _errs33; - } else { - vErrors = null; - } - } - } } - if (data.schema_evolution !== undefined) { - let data11 = data.schema_evolution; - if (typeof data11 !== "string") { - const err27 = { - instancePath: instancePath + "/schema_evolution", - schemaPath: "#/$defs/SchemaEvolution/type", + if (data.results_available !== undefined) { + if (typeof data.results_available !== "boolean") { + const err16 = { + instancePath: instancePath + "/results_available", + schemaPath: "#/properties/results_available/type", keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err27]; - } else { - vErrors.push(err27); - } - errors++; - } - if (!(data11 === "strict" || data11 === "additive")) { - const err28 = { - instancePath: instancePath + "/schema_evolution", - schemaPath: "#/$defs/SchemaEvolution/enum", - keyword: "enum", - params: { allowedValues: schema267.enum }, - message: "must be equal to one of the allowed values", + params: { type: "boolean" }, + message: "must be boolean", }; if (vErrors === null) { - vErrors = [err28]; + vErrors = [err16]; } else { - vErrors.push(err28); + vErrors.push(err16); } errors++; } } - if (data.transport !== undefined) { - let data12 = data.transport; - if (typeof data12 !== "string") { - const err29 = { - instancePath: instancePath + "/transport", - schemaPath: "#/properties/transport/type", + if (data.run_id !== undefined) { + if (typeof data.run_id !== "string") { + const err17 = { + instancePath: instancePath + "/run_id", + schemaPath: "#/properties/run_id/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err29]; - } else { - vErrors.push(err29); - } - errors++; - } - if (!(data12 === "load_job" || data12 === "storage_write" || data12 === "copy")) { - const err30 = { - instancePath: instancePath + "/transport", - schemaPath: "#/properties/transport/enum", - keyword: "enum", - params: { allowedValues: schema263.properties.transport.enum }, - message: "must be equal to one of the allowed values", - }; - if (vErrors === null) { - vErrors = [err30]; + vErrors = [err17]; } else { - vErrors.push(err30); + vErrors.push(err17); } errors++; } } - if (data.write_mode !== undefined) { - let data13 = data.write_mode; - if (typeof data13 !== "string") { - const err31 = { - instancePath: instancePath + "/write_mode", - schemaPath: "#/$defs/WriteMode/type", + if (data.state !== undefined) { + let data9 = data.state; + if (typeof data9 !== "string") { + const err18 = { + instancePath: instancePath + "/state", + schemaPath: "#/$defs/RunState/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err31]; + vErrors = [err18]; } else { - vErrors.push(err31); + vErrors.push(err18); } errors++; } if (!( - data13 === "scd1" || - data13 === "scd2" || - data13 === "snapshot" || - data13 === "incremental" || - data13 === "replace" + data9 === "queued" || + data9 === "running" || + data9 === "succeeded" || + data9 === "failed" || + data9 === "canceling" || + data9 === "canceled" || + data9 === "retrying" )) { - const err32 = { - instancePath: instancePath + "/write_mode", - schemaPath: "#/$defs/WriteMode/enum", + const err19 = { + instancePath: instancePath + "/state", + schemaPath: "#/$defs/RunState/enum", keyword: "enum", - params: { allowedValues: schema268.enum }, + params: { allowedValues: schema296.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { - vErrors = [err32]; + vErrors = [err19]; } else { - vErrors.push(err32); + vErrors.push(err19); } errors++; } } - } else { - const err33 = { - instancePath, - schemaPath: "#/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", - }; - if (vErrors === null) { - vErrors = [err33]; - } else { - vErrors.push(err33); - } - errors++; - } - validate388.errors = vErrors; - return errors === 0; -} -validate388.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -function validate387( - data, - { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, -) { - let vErrors = null; - let errors = 0; - const evaluated0 = validate387.evaluated; - if (evaluated0.dynamicProps) { - evaluated0.props = undefined; - } - if (evaluated0.dynamicItems) { - evaluated0.items = undefined; - } - if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.writer !== undefined) { - let data1 = data.writer; - const _errs4 = errors; - let valid3 = false; - const _errs5 = errors; - if ( - !validate388(data1, { - instancePath: instancePath + "/writer", - parentData: data, - parentDataProperty: "writer", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate388.errors : vErrors.concat(validate388.errors); - errors = vErrors.length; - } - var _valid0 = _errs5 === errors; - valid3 = valid3 || _valid0; - const _errs6 = errors; - if (data1 !== null) { - const err0 = { - instancePath: instancePath + "/writer", - schemaPath: "#/properties/writer/anyOf/1/type", + if (data.summary !== undefined) { + if (typeof data.summary !== "string") { + const err20 = { + instancePath: instancePath + "/summary", + schemaPath: "#/properties/summary/type", keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); - } - errors++; - } - var _valid0 = _errs6 === errors; - valid3 = valid3 || _valid0; - if (!valid3) { - const err1 = { - instancePath: instancePath + "/writer", - schemaPath: "#/properties/writer/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err1]; + vErrors = [err20]; } else { - vErrors.push(err1); + vErrors.push(err20); } errors++; - } else { - errors = _errs4; - if (vErrors !== null) { - if (_errs4) { - vErrors.length = _errs4; - } else { - vErrors = null; - } - } } } } else { - const err2 = { + const err21 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -40648,121 +47478,657 @@ function validate387( message: "must be object", }; if (vErrors === null) { - vErrors = [err2]; + vErrors = [err21]; } else { - vErrors.push(err2); + vErrors.push(err21); } errors++; } - validate387.errors = vErrors; + validate425.errors = vErrors; return errors === 0; } -validate387.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate425.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +export const validateRunPage = validate428; +const schema297 = { + $defs: { + GraphRepairWindow: { + additionalProperties: false, + description: "UTC calendar dates: start is inclusive and end is exclusive.", + properties: { + end_date: { format: "date", title: "End Date", type: "string" }, + start_date: { format: "date", title: "Start Date", type: "string" }, + }, + required: ["start_date", "end_date"], + title: "GraphRepairWindow", + type: "object", + }, + RunPlacementDecision: { + additionalProperties: false, + description: "Fixed-size explanation of the execution-plan selection used by Control.", + properties: { + decision_schema: { + const: "io.dander.control.placement-decision/v1", + title: "Decision Schema", + type: "string", + }, + eligible_plan_count: { + maximum: 100, + minimum: 1, + title: "Eligible Plan Count", + type: "integer", + }, + estimated_cost_microusd: { + anyOf: [{ maximum: 9223372036854776000, minimum: 0, type: "integer" }, { type: "null" }], + default: null, + title: "Estimated Cost Microusd", + }, + max_cost_microusd: { + anyOf: [{ maximum: 9223372036854776000, minimum: 0, type: "integer" }, { type: "null" }], + default: null, + title: "Max Cost Microusd", + }, + mode: { + enum: ["automatic", "manual_override", "configured_default", "scheduled", "replay"], + title: "Mode", + type: "string", + }, + preferred_locality: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Preferred Locality", + }, + selected_environment: { title: "Selected Environment", type: "string" }, + selected_locality: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Selected Locality", + }, + }, + required: ["decision_schema", "mode", "selected_environment", "eligible_plan_count"], + title: "RunPlacementDecision", + type: "object", + }, + RunSizeClassDecision: { + additionalProperties: false, + description: "Fixed-size explanation of the selected execution resource class.", + properties: { + cpu_millis: { minimum: 1, title: "Cpu Millis", type: "integer" }, + decision_schema: { + const: "io.dander.control.size-class-decision/v2", + title: "Decision Schema", + type: "string", + }, + eligible_plan_count: { + maximum: 100, + minimum: 1, + title: "Eligible Plan Count", + type: "integer", + }, + ephemeral_storage_mib: { + anyOf: [{ minimum: 1, type: "integer" }, { type: "null" }], + default: null, + title: "Ephemeral Storage Mib", + }, + estimate_observed_at: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Estimate Observed At", + }, + estimate_source: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Estimate Source", + }, + estimated_input_bytes: { + anyOf: [{ maximum: 9223372036854776000, minimum: 0, type: "integer" }, { type: "null" }], + default: null, + title: "Estimated Input Bytes", + }, + max_input_bytes: { + maximum: 9223372036854776000, + minimum: 0, + title: "Max Input Bytes", + type: "integer", + }, + memory_mib: { minimum: 1, title: "Memory Mib", type: "integer" }, + mode: { + enum: ["automatic_input", "manual_override", "configured_default", "scheduled", "replay"], + title: "Mode", + type: "string", + }, + selected_size_class: { title: "Selected Size Class", type: "string" }, + }, + required: [ + "decision_schema", + "mode", + "selected_size_class", + "max_input_bytes", + "cpu_millis", + "memory_mib", + "eligible_plan_count", + ], + title: "RunSizeClassDecision", + type: "object", + }, + RunState: { + enum: ["queued", "running", "succeeded", "failed", "canceling", "canceled", "retrying"], + title: "RunState", + type: "string", + }, + RunStatusResponse: { + additionalProperties: false, + properties: { + affected: { default: 0, minimum: 0, title: "Affected", type: "integer" }, + assertions: { default: 0, minimum: 0, title: "Assertions", type: "integer" }, + assets: { default: 0, minimum: 0, title: "Assets", type: "integer" }, + can_cancel: { default: false, title: "Can Cancel", type: "boolean" }, + can_replay: { default: false, title: "Can Replay", type: "boolean" }, + endpoints: { default: 0, minimum: 0, title: "Endpoints", type: "integer" }, + extracted: { default: 0, minimum: 0, title: "Extracted", type: "integer" }, + failure_code: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Failure Code", + }, + failure_summary: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Failure Summary", + }, + finished_at: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Finished At", + }, + logs_available: { default: false, title: "Logs Available", type: "boolean" }, + models: { default: 0, minimum: 0, title: "Models", type: "integer" }, + placement: { + anyOf: [{ $ref: "#/$defs/RunPlacementDecision" }, { type: "null" }], + default: null, + }, + repair_window: { + anyOf: [{ $ref: "#/$defs/GraphRepairWindow" }, { type: "null" }], + default: null, + }, + result_schema: { + anyOf: [ + { const: "io.dander.control.execution-result-summary/v1", type: "string" }, + { type: "null" }, + ], + default: null, + title: "Result Schema", + }, + run_id: { title: "Run Id", type: "string" }, + sizing: { + anyOf: [{ $ref: "#/$defs/RunSizeClassDecision" }, { type: "null" }], + default: null, + }, + skipped: { default: false, title: "Skipped", type: "boolean" }, + stage: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Stage" }, + started_at: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Started At", + }, + state: { $ref: "#/$defs/RunState" }, + telemetry: { + anyOf: [{ $ref: "#/$defs/RunTelemetrySummary" }, { type: "null" }], + default: null, + }, + }, + required: ["run_id", "state"], + title: "RunStatusResponse", + type: "object", + }, + RunTelemetrySummary: { + additionalProperties: false, + description: "Fixed-size telemetry totals; provider operation details remain in logs.", + properties: { + bytes_billed: { + maximum: 9223372036854776000, + minimum: 0, + title: "Bytes Billed", + type: "integer", + }, + bytes_processed: { + maximum: 9223372036854776000, + minimum: 0, + title: "Bytes Processed", + type: "integer", + }, + bytes_read: { + maximum: 9223372036854776000, + minimum: 0, + title: "Bytes Read", + type: "integer", + }, + bytes_written: { + maximum: 9223372036854776000, + minimum: 0, + title: "Bytes Written", + type: "integer", + }, + duration_ms: { + maximum: 9223372036854776000, + minimum: 0, + title: "Duration Ms", + type: "integer", + }, + execution_duration_ms: { + maximum: 9223372036854776000, + minimum: 0, + title: "Execution Duration Ms", + type: "integer", + }, + operation_count: { + maximum: 9223372036854776000, + minimum: 0, + title: "Operation Count", + type: "integer", + }, + queue_duration_ms: { + maximum: 9223372036854776000, + minimum: 0, + title: "Queue Duration Ms", + type: "integer", + }, + retry_count: { + maximum: 9223372036854776000, + minimum: 0, + title: "Retry Count", + type: "integer", + }, + rows_affected: { + maximum: 9223372036854776000, + minimum: 0, + title: "Rows Affected", + type: "integer", + }, + rows_read: { + maximum: 9223372036854776000, + minimum: 0, + title: "Rows Read", + type: "integer", + }, + rows_written: { + maximum: 9223372036854776000, + minimum: 0, + title: "Rows Written", + type: "integer", + }, + spill_bytes: { + maximum: 9223372036854776000, + minimum: 0, + title: "Spill Bytes", + type: "integer", + }, + }, + required: [ + "duration_ms", + "operation_count", + "retry_count", + "rows_read", + "rows_written", + "rows_affected", + "bytes_read", + "bytes_written", + "bytes_processed", + "bytes_billed", + "queue_duration_ms", + "execution_duration_ms", + "spill_bytes", + ], + title: "RunTelemetrySummary", + type: "object", + }, + }, + $id: "urn:dander:control:contracts:v1:run-page", + $schema: "https://json-schema.org/draft/2020-12/schema", + additionalProperties: false, + description: "A bounded page of normalized, non-sensitive run summaries.", + properties: { + items: { + items: { $ref: "#/$defs/RunStatusResponse" }, + maxItems: 100, + title: "Items", + type: "array", + }, + next_cursor: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Next Cursor", + }, + }, + required: ["items"], + title: "RunPageResponse", + type: "object", +}; +const schema298 = { + additionalProperties: false, + properties: { + affected: { default: 0, minimum: 0, title: "Affected", type: "integer" }, + assertions: { default: 0, minimum: 0, title: "Assertions", type: "integer" }, + assets: { default: 0, minimum: 0, title: "Assets", type: "integer" }, + can_cancel: { default: false, title: "Can Cancel", type: "boolean" }, + can_replay: { default: false, title: "Can Replay", type: "boolean" }, + endpoints: { default: 0, minimum: 0, title: "Endpoints", type: "integer" }, + extracted: { default: 0, minimum: 0, title: "Extracted", type: "integer" }, + failure_code: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Failure Code", + }, + failure_summary: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Failure Summary", + }, + finished_at: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Finished At", + }, + logs_available: { default: false, title: "Logs Available", type: "boolean" }, + models: { default: 0, minimum: 0, title: "Models", type: "integer" }, + placement: { + anyOf: [{ $ref: "#/$defs/RunPlacementDecision" }, { type: "null" }], + default: null, + }, + repair_window: { + anyOf: [{ $ref: "#/$defs/GraphRepairWindow" }, { type: "null" }], + default: null, + }, + result_schema: { + anyOf: [ + { const: "io.dander.control.execution-result-summary/v1", type: "string" }, + { type: "null" }, + ], + default: null, + title: "Result Schema", + }, + run_id: { title: "Run Id", type: "string" }, + sizing: { anyOf: [{ $ref: "#/$defs/RunSizeClassDecision" }, { type: "null" }], default: null }, + skipped: { default: false, title: "Skipped", type: "boolean" }, + stage: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Stage" }, + started_at: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Started At", + }, + state: { $ref: "#/$defs/RunState" }, + telemetry: { + anyOf: [{ $ref: "#/$defs/RunTelemetrySummary" }, { type: "null" }], + default: null, + }, + }, + required: ["run_id", "state"], + title: "RunStatusResponse", + type: "object", +}; +const schema299 = { + additionalProperties: false, + description: "Fixed-size explanation of the execution-plan selection used by Control.", + properties: { + decision_schema: { + const: "io.dander.control.placement-decision/v1", + title: "Decision Schema", + type: "string", + }, + eligible_plan_count: { + maximum: 100, + minimum: 1, + title: "Eligible Plan Count", + type: "integer", + }, + estimated_cost_microusd: { + anyOf: [{ maximum: 9223372036854776000, minimum: 0, type: "integer" }, { type: "null" }], + default: null, + title: "Estimated Cost Microusd", + }, + max_cost_microusd: { + anyOf: [{ maximum: 9223372036854776000, minimum: 0, type: "integer" }, { type: "null" }], + default: null, + title: "Max Cost Microusd", + }, + mode: { + enum: ["automatic", "manual_override", "configured_default", "scheduled", "replay"], + title: "Mode", + type: "string", + }, + preferred_locality: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Preferred Locality", + }, + selected_environment: { title: "Selected Environment", type: "string" }, + selected_locality: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Selected Locality", + }, + }, + required: ["decision_schema", "mode", "selected_environment", "eligible_plan_count"], + title: "RunPlacementDecision", + type: "object", +}; +const schema300 = { + additionalProperties: false, + description: "UTC calendar dates: start is inclusive and end is exclusive.", + properties: { + end_date: { format: "date", title: "End Date", type: "string" }, + start_date: { format: "date", title: "Start Date", type: "string" }, + }, + required: ["start_date", "end_date"], + title: "GraphRepairWindow", + type: "object", +}; +const schema301 = { + additionalProperties: false, + description: "Fixed-size explanation of the selected execution resource class.", + properties: { + cpu_millis: { minimum: 1, title: "Cpu Millis", type: "integer" }, + decision_schema: { + const: "io.dander.control.size-class-decision/v2", + title: "Decision Schema", + type: "string", + }, + eligible_plan_count: { + maximum: 100, + minimum: 1, + title: "Eligible Plan Count", + type: "integer", + }, + ephemeral_storage_mib: { + anyOf: [{ minimum: 1, type: "integer" }, { type: "null" }], + default: null, + title: "Ephemeral Storage Mib", + }, + estimate_observed_at: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Estimate Observed At", + }, + estimate_source: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Estimate Source", + }, + estimated_input_bytes: { + anyOf: [{ maximum: 9223372036854776000, minimum: 0, type: "integer" }, { type: "null" }], + default: null, + title: "Estimated Input Bytes", + }, + max_input_bytes: { + maximum: 9223372036854776000, + minimum: 0, + title: "Max Input Bytes", + type: "integer", + }, + memory_mib: { minimum: 1, title: "Memory Mib", type: "integer" }, + mode: { + enum: ["automatic_input", "manual_override", "configured_default", "scheduled", "replay"], + title: "Mode", + type: "string", + }, + selected_size_class: { title: "Selected Size Class", type: "string" }, + }, + required: [ + "decision_schema", + "mode", + "selected_size_class", + "max_input_bytes", + "cpu_millis", + "memory_mib", + "eligible_plan_count", + ], + title: "RunSizeClassDecision", + type: "object", +}; +const schema302 = { + enum: ["queued", "running", "succeeded", "failed", "canceling", "canceled", "retrying"], + title: "RunState", + type: "string", +}; +const schema303 = { + additionalProperties: false, + description: "Fixed-size telemetry totals; provider operation details remain in logs.", + properties: { + bytes_billed: { + maximum: 9223372036854776000, + minimum: 0, + title: "Bytes Billed", + type: "integer", + }, + bytes_processed: { + maximum: 9223372036854776000, + minimum: 0, + title: "Bytes Processed", + type: "integer", + }, + bytes_read: { maximum: 9223372036854776000, minimum: 0, title: "Bytes Read", type: "integer" }, + bytes_written: { + maximum: 9223372036854776000, + minimum: 0, + title: "Bytes Written", + type: "integer", + }, + duration_ms: { + maximum: 9223372036854776000, + minimum: 0, + title: "Duration Ms", + type: "integer", + }, + execution_duration_ms: { + maximum: 9223372036854776000, + minimum: 0, + title: "Execution Duration Ms", + type: "integer", + }, + operation_count: { + maximum: 9223372036854776000, + minimum: 0, + title: "Operation Count", + type: "integer", + }, + queue_duration_ms: { + maximum: 9223372036854776000, + minimum: 0, + title: "Queue Duration Ms", + type: "integer", + }, + retry_count: { + maximum: 9223372036854776000, + minimum: 0, + title: "Retry Count", + type: "integer", + }, + rows_affected: { + maximum: 9223372036854776000, + minimum: 0, + title: "Rows Affected", + type: "integer", + }, + rows_read: { maximum: 9223372036854776000, minimum: 0, title: "Rows Read", type: "integer" }, + rows_written: { + maximum: 9223372036854776000, + minimum: 0, + title: "Rows Written", + type: "integer", + }, + spill_bytes: { + maximum: 9223372036854776000, + minimum: 0, + title: "Spill Bytes", + type: "integer", + }, + }, + required: [ + "duration_ms", + "operation_count", + "retry_count", + "rows_read", + "rows_written", + "rows_affected", + "bytes_read", + "bytes_written", + "bytes_processed", + "bytes_billed", + "queue_duration_ms", + "execution_duration_ms", + "spill_bytes", + ], + title: "RunTelemetrySummary", + type: "object", +}; -function validate386( +function validate429( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate386.evaluated; + const evaluated0 = validate429.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } if (evaluated0.dynamicItems) { evaluated0.items = undefined; } - const _errs1 = errors; - const _errs2 = errors; - if (data && typeof data == "object" && !Array.isArray(data)) { - let missing0; - if ( - (data.config === undefined && (missing0 = "config")) || - (data.params === undefined && (missing0 = "params")) - ) { - const err0 = {}; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); - } - errors++; - } - } - var valid0 = _errs2 === errors; - if (valid0) { - const err1 = { - instancePath, - schemaPath: "#/not", - keyword: "not", - params: {}, - message: "must NOT be valid", - }; - if (vErrors === null) { - vErrors = [err1]; - } else { - vErrors.push(err1); - } - errors++; - } else { - errors = _errs1; - if (vErrors !== null) { - if (_errs1) { - vErrors.length = _errs1; - } else { - vErrors = null; - } - } - } if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.id === undefined) { - const err2 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "id" }, - message: "must have required property '" + "id" + "'", - }; - if (vErrors === null) { - vErrors = [err2]; - } else { - vErrors.push(err2); - } - errors++; - } - if (data.type === undefined) { - const err3 = { + if (data.run_id === undefined) { + const err0 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "type" }, - message: "must have required property '" + "type" + "'", + params: { missingProperty: "run_id" }, + message: "must have required property '" + "run_id" + "'", }; if (vErrors === null) { - vErrors = [err3]; + vErrors = [err0]; } else { - vErrors.push(err3); + vErrors.push(err0); } errors++; } - if (data.name === undefined) { - const err4 = { + if (data.state === undefined) { + const err1 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "name" }, - message: "must have required property '" + "name" + "'", + params: { missingProperty: "state" }, + message: "must have required property '" + "state" + "'", }; if (vErrors === null) { - vErrors = [err4]; + vErrors = [err1]; } else { - vErrors.push(err4); + vErrors.push(err1); } errors++; } for (const key0 in data) { - if (!func1.call(schema260.properties, key0)) { - const err5 = { + if (!func1.call(schema298.properties, key0)) { + const err2 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", @@ -40770,246 +48136,196 @@ function validate386( message: "must NOT have additional properties", }; if (vErrors === null) { - vErrors = [err5]; + vErrors = [err2]; } else { - vErrors.push(err5); + vErrors.push(err2); } errors++; } } - if (data.config !== undefined) { - if ( - !validate387(data.config, { - instancePath: instancePath + "/config", - parentData: data, - parentDataProperty: "config", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate387.errors : vErrors.concat(validate387.errors); - errors = vErrors.length; - } - } - if (data.cursor !== undefined) { - let data1 = data.cursor; - const _errs6 = errors; - let valid2 = false; - const _errs7 = errors; - if ( - !validate321(data1, { - instancePath: instancePath + "/cursor", - parentData: data, - parentDataProperty: "cursor", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate321.errors : vErrors.concat(validate321.errors); - errors = vErrors.length; - } - var _valid0 = _errs7 === errors; - valid2 = valid2 || _valid0; - const _errs8 = errors; - if (data1 !== null) { - const err6 = { - instancePath: instancePath + "/cursor", - schemaPath: "#/properties/cursor/anyOf/1/type", + if (data.affected !== undefined) { + let data0 = data.affected; + if (!(typeof data0 == "number" && !(data0 % 1) && !isNaN(data0) && isFinite(data0))) { + const err3 = { + instancePath: instancePath + "/affected", + schemaPath: "#/properties/affected/type", keyword: "type", - params: { type: "null" }, - message: "must be null", + params: { type: "integer" }, + message: "must be integer", }; if (vErrors === null) { - vErrors = [err6]; + vErrors = [err3]; } else { - vErrors.push(err6); + vErrors.push(err3); } errors++; } - var _valid0 = _errs8 === errors; - valid2 = valid2 || _valid0; - if (!valid2) { - const err7 = { - instancePath: instancePath + "/cursor", - schemaPath: "#/properties/cursor/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; - } else { - errors = _errs6; - if (vErrors !== null) { - if (_errs6) { - vErrors.length = _errs6; + if (typeof data0 == "number" && isFinite(data0)) { + if (data0 < 0 || isNaN(data0)) { + const err4 = { + instancePath: instancePath + "/affected", + schemaPath: "#/properties/affected/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err4]; } else { - vErrors = null; + vErrors.push(err4); } + errors++; } } } - if (data.fields !== undefined) { - let data2 = data.fields; - if (Array.isArray(data2)) { - const len0 = data2.length; - for (let i0 = 0; i0 < len0; i0++) { - if ( - !validate325(data2[i0], { - instancePath: instancePath + "/fields/" + i0, - parentData: data2, - parentDataProperty: i0, - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate325.errors : vErrors.concat(validate325.errors); - errors = vErrors.length; - } - } - } else { - const err8 = { - instancePath: instancePath + "/fields", - schemaPath: "#/properties/fields/type", + if (data.assertions !== undefined) { + let data1 = data.assertions; + if (!(typeof data1 == "number" && !(data1 % 1) && !isNaN(data1) && isFinite(data1))) { + const err5 = { + instancePath: instancePath + "/assertions", + schemaPath: "#/properties/assertions/type", keyword: "type", - params: { type: "array" }, - message: "must be array", + params: { type: "integer" }, + message: "must be integer", }; if (vErrors === null) { - vErrors = [err8]; + vErrors = [err5]; } else { - vErrors.push(err8); + vErrors.push(err5); } errors++; } + if (typeof data1 == "number" && isFinite(data1)) { + if (data1 < 0 || isNaN(data1)) { + const err6 = { + instancePath: instancePath + "/assertions", + schemaPath: "#/properties/assertions/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err6]; + } else { + vErrors.push(err6); + } + errors++; + } + } } - if (data.id !== undefined) { - if (typeof data.id !== "string") { - const err9 = { - instancePath: instancePath + "/id", - schemaPath: "#/properties/id/type", + if (data.assets !== undefined) { + let data2 = data.assets; + if (!(typeof data2 == "number" && !(data2 % 1) && !isNaN(data2) && isFinite(data2))) { + const err7 = { + instancePath: instancePath + "/assets", + schemaPath: "#/properties/assets/type", keyword: "type", - params: { type: "string" }, - message: "must be string", + params: { type: "integer" }, + message: "must be integer", }; if (vErrors === null) { - vErrors = [err9]; + vErrors = [err7]; } else { - vErrors.push(err9); + vErrors.push(err7); } errors++; } + if (typeof data2 == "number" && isFinite(data2)) { + if (data2 < 0 || isNaN(data2)) { + const err8 = { + instancePath: instancePath + "/assets", + schemaPath: "#/properties/assets/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err8]; + } else { + vErrors.push(err8); + } + errors++; + } + } } - if (data.name !== undefined) { - if (typeof data.name !== "string") { - const err10 = { - instancePath: instancePath + "/name", - schemaPath: "#/properties/name/type", + if (data.can_cancel !== undefined) { + if (typeof data.can_cancel !== "boolean") { + const err9 = { + instancePath: instancePath + "/can_cancel", + schemaPath: "#/properties/can_cancel/type", keyword: "type", - params: { type: "string" }, - message: "must be string", + params: { type: "boolean" }, + message: "must be boolean", }; if (vErrors === null) { - vErrors = [err10]; + vErrors = [err9]; } else { - vErrors.push(err10); + vErrors.push(err9); } - errors++; - } - } - if (data.params !== undefined) { - let data6 = data.params; - const _errs18 = errors; - let valid5 = false; - const _errs19 = errors; - if ( - !validate387(data6, { - instancePath: instancePath + "/params", - parentData: data, - parentDataProperty: "params", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate387.errors : vErrors.concat(validate387.errors); - errors = vErrors.length; + errors++; } - var _valid1 = _errs19 === errors; - valid5 = valid5 || _valid1; - const _errs20 = errors; - if (data6 !== null) { - const err11 = { - instancePath: instancePath + "/params", - schemaPath: "#/properties/params/anyOf/1/type", + } + if (data.can_replay !== undefined) { + if (typeof data.can_replay !== "boolean") { + const err10 = { + instancePath: instancePath + "/can_replay", + schemaPath: "#/properties/can_replay/type", keyword: "type", - params: { type: "null" }, - message: "must be null", + params: { type: "boolean" }, + message: "must be boolean", }; if (vErrors === null) { - vErrors = [err11]; + vErrors = [err10]; } else { - vErrors.push(err11); + vErrors.push(err10); } errors++; } - var _valid1 = _errs20 === errors; - valid5 = valid5 || _valid1; - if (!valid5) { - const err12 = { - instancePath: instancePath + "/params", - schemaPath: "#/properties/params/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", + } + if (data.endpoints !== undefined) { + let data5 = data.endpoints; + if (!(typeof data5 == "number" && !(data5 % 1) && !isNaN(data5) && isFinite(data5))) { + const err11 = { + instancePath: instancePath + "/endpoints", + schemaPath: "#/properties/endpoints/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", }; if (vErrors === null) { - vErrors = [err12]; + vErrors = [err11]; } else { - vErrors.push(err12); + vErrors.push(err11); } errors++; - } else { - errors = _errs18; - if (vErrors !== null) { - if (_errs18) { - vErrors.length = _errs18; + } + if (typeof data5 == "number" && isFinite(data5)) { + if (data5 < 0 || isNaN(data5)) { + const err12 = { + instancePath: instancePath + "/endpoints", + schemaPath: "#/properties/endpoints/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err12]; } else { - vErrors = null; + vErrors.push(err12); } + errors++; } } } - if (data.trigger !== undefined) { - let data7 = data.trigger; - const _errs24 = errors; - let valid6 = false; - const _errs25 = errors; - if ( - !validate343(data7, { - instancePath: instancePath + "/trigger", - parentData: data, - parentDataProperty: "trigger", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate343.errors : vErrors.concat(validate343.errors); - errors = vErrors.length; - } - var _valid2 = _errs25 === errors; - valid6 = valid6 || _valid2; - const _errs26 = errors; - if (data7 !== null) { + if (data.extracted !== undefined) { + let data6 = data.extracted; + if (!(typeof data6 == "number" && !(data6 % 1) && !isNaN(data6) && isFinite(data6))) { const err13 = { - instancePath: instancePath + "/trigger", - schemaPath: "#/properties/trigger/anyOf/1/type", + instancePath: instancePath + "/extracted", + schemaPath: "#/properties/extracted/type", keyword: "type", - params: { type: "null" }, - message: "must be null", + params: { type: "integer" }, + message: "must be integer", }; if (vErrors === null) { vErrors = [err13]; @@ -41018,39 +48334,33 @@ function validate386( } errors++; } - var _valid2 = _errs26 === errors; - valid6 = valid6 || _valid2; - if (!valid6) { - const err14 = { - instancePath: instancePath + "/trigger", - schemaPath: "#/properties/trigger/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; - if (vErrors === null) { - vErrors = [err14]; - } else { - vErrors.push(err14); - } - errors++; - } else { - errors = _errs24; - if (vErrors !== null) { - if (_errs24) { - vErrors.length = _errs24; + if (typeof data6 == "number" && isFinite(data6)) { + if (data6 < 0 || isNaN(data6)) { + const err14 = { + instancePath: instancePath + "/extracted", + schemaPath: "#/properties/extracted/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err14]; } else { - vErrors = null; + vErrors.push(err14); } + errors++; } } } - if (data.type !== undefined) { - let data8 = data.type; - if (typeof data8 !== "string") { + if (data.failure_code !== undefined) { + let data7 = data.failure_code; + const _errs17 = errors; + let valid1 = false; + const _errs18 = errors; + if (typeof data7 !== "string") { const err15 = { - instancePath: instancePath + "/type", - schemaPath: "#/properties/type/type", + instancePath: instancePath + "/failure_code", + schemaPath: "#/properties/failure_code/anyOf/0/type", keyword: "type", params: { type: "string" }, message: "must be string", @@ -41062,1704 +48372,3161 @@ function validate386( } errors++; } - if ("target" !== data8) { + var _valid0 = _errs18 === errors; + valid1 = valid1 || _valid0; + const _errs20 = errors; + if (data7 !== null) { const err16 = { - instancePath: instancePath + "/type", - schemaPath: "#/properties/type/const", - keyword: "const", - params: { allowedValue: "target" }, - message: "must be equal to constant", - }; - if (vErrors === null) { - vErrors = [err16]; - } else { - vErrors.push(err16); - } - errors++; - } - } - if (data.visual !== undefined) { - let data9 = data.visual; - const _errs31 = errors; - let valid7 = false; - const _errs32 = errors; - if ( - !validate354(data9, { - instancePath: instancePath + "/visual", - parentData: data, - parentDataProperty: "visual", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate354.errors : vErrors.concat(validate354.errors); - errors = vErrors.length; - } - var _valid3 = _errs32 === errors; - valid7 = valid7 || _valid3; - const _errs33 = errors; - if (data9 !== null) { - const err17 = { - instancePath: instancePath + "/visual", - schemaPath: "#/properties/visual/anyOf/1/type", + instancePath: instancePath + "/failure_code", + schemaPath: "#/properties/failure_code/anyOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null", }; if (vErrors === null) { - vErrors = [err17]; + vErrors = [err16]; } else { - vErrors.push(err17); + vErrors.push(err16); } errors++; } - var _valid3 = _errs33 === errors; - valid7 = valid7 || _valid3; - if (!valid7) { - const err18 = { - instancePath: instancePath + "/visual", - schemaPath: "#/properties/visual/anyOf", + var _valid0 = _errs20 === errors; + valid1 = valid1 || _valid0; + if (!valid1) { + const err17 = { + instancePath: instancePath + "/failure_code", + schemaPath: "#/properties/failure_code/anyOf", keyword: "anyOf", params: {}, message: "must match a schema in anyOf", }; if (vErrors === null) { - vErrors = [err18]; + vErrors = [err17]; } else { - vErrors.push(err18); + vErrors.push(err17); } errors++; } else { - errors = _errs31; + errors = _errs17; if (vErrors !== null) { - if (_errs31) { - vErrors.length = _errs31; + if (_errs17) { + vErrors.length = _errs17; } else { vErrors = null; } } } } - } else { - const err19 = { - instancePath, - schemaPath: "#/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", - }; - if (vErrors === null) { - vErrors = [err19]; - } else { - vErrors.push(err19); - } - errors++; - } - validate386.errors = vErrors; - return errors === 0; -} -validate386.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -const schema269 = { - additionalProperties: false, - not: { required: ["config", "params"] }, - properties: { - config: { $ref: "#/$defs/JsonObject" }, - cursor: { - anyOf: [{ $ref: "#/$defs/CursorStrategyDocument" }, { type: "null" }], - default: null, - }, - fields: { items: { $ref: "#/$defs/NodeFieldDocument" }, title: "Fields", type: "array" }, - id: { title: "Id", type: "string" }, - name: { title: "Name", type: "string" }, - params: { - anyOf: [{ $ref: "#/$defs/JsonObject" }, { type: "null" }], - default: null, - deprecated: true, - "x-dander-canonical-name": "config", - }, - trigger: { anyOf: [{ $ref: "#/$defs/TriggerDocument" }, { type: "null" }], default: null }, - type: { $ref: "#/$defs/ExtensionNodeType" }, - visual: { anyOf: [{ $ref: "#/$defs/NodeVisualDocument" }, { type: "null" }], default: null }, - }, - required: ["id", "type", "name"], - title: "ExtensionNodeDocument", - type: "object", -}; -const schema270 = { not: { enum: ["source", "transform", "target"] }, type: "string" }; - -function validate399( - data, - { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, -) { - let vErrors = null; - let errors = 0; - const evaluated0 = validate399.evaluated; - if (evaluated0.dynamicProps) { - evaluated0.props = undefined; - } - if (evaluated0.dynamicItems) { - evaluated0.items = undefined; - } - const _errs1 = errors; - const _errs2 = errors; - if (data && typeof data == "object" && !Array.isArray(data)) { - let missing0; - if ( - (data.config === undefined && (missing0 = "config")) || - (data.params === undefined && (missing0 = "params")) - ) { - const err0 = {}; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); - } - errors++; - } - } - var valid0 = _errs2 === errors; - if (valid0) { - const err1 = { - instancePath, - schemaPath: "#/not", - keyword: "not", - params: {}, - message: "must NOT be valid", - }; - if (vErrors === null) { - vErrors = [err1]; - } else { - vErrors.push(err1); - } - errors++; - } else { - errors = _errs1; - if (vErrors !== null) { - if (_errs1) { - vErrors.length = _errs1; - } else { - vErrors = null; - } - } - } - if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.id === undefined) { - const err2 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "id" }, - message: "must have required property '" + "id" + "'", - }; - if (vErrors === null) { - vErrors = [err2]; - } else { - vErrors.push(err2); - } - errors++; - } - if (data.type === undefined) { - const err3 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "type" }, - message: "must have required property '" + "type" + "'", - }; - if (vErrors === null) { - vErrors = [err3]; - } else { - vErrors.push(err3); - } - errors++; - } - if (data.name === undefined) { - const err4 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "name" }, - message: "must have required property '" + "name" + "'", - }; - if (vErrors === null) { - vErrors = [err4]; - } else { - vErrors.push(err4); - } - errors++; - } - for (const key0 in data) { - if (!func1.call(schema269.properties, key0)) { - const err5 = { - instancePath, - schemaPath: "#/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key0 }, - message: "must NOT have additional properties", + if (data.failure_summary !== undefined) { + let data8 = data.failure_summary; + const _errs23 = errors; + let valid2 = false; + const _errs24 = errors; + if (typeof data8 !== "string") { + const err18 = { + instancePath: instancePath + "/failure_summary", + schemaPath: "#/properties/failure_summary/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err5]; + vErrors = [err18]; } else { - vErrors.push(err5); + vErrors.push(err18); } errors++; } - } - if (data.config !== undefined) { - if ( - !validate291(data.config, { - instancePath: instancePath + "/config", - parentData: data, - parentDataProperty: "config", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); - errors = vErrors.length; - } - } - if (data.cursor !== undefined) { - let data1 = data.cursor; - const _errs6 = errors; - let valid2 = false; - const _errs7 = errors; - if ( - !validate321(data1, { - instancePath: instancePath + "/cursor", - parentData: data, - parentDataProperty: "cursor", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate321.errors : vErrors.concat(validate321.errors); - errors = vErrors.length; - } - var _valid0 = _errs7 === errors; - valid2 = valid2 || _valid0; - const _errs8 = errors; - if (data1 !== null) { - const err6 = { - instancePath: instancePath + "/cursor", - schemaPath: "#/properties/cursor/anyOf/1/type", + var _valid1 = _errs24 === errors; + valid2 = valid2 || _valid1; + const _errs26 = errors; + if (data8 !== null) { + const err19 = { + instancePath: instancePath + "/failure_summary", + schemaPath: "#/properties/failure_summary/anyOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null", }; if (vErrors === null) { - vErrors = [err6]; + vErrors = [err19]; } else { - vErrors.push(err6); + vErrors.push(err19); } errors++; } - var _valid0 = _errs8 === errors; - valid2 = valid2 || _valid0; + var _valid1 = _errs26 === errors; + valid2 = valid2 || _valid1; if (!valid2) { - const err7 = { - instancePath: instancePath + "/cursor", - schemaPath: "#/properties/cursor/anyOf", + const err20 = { + instancePath: instancePath + "/failure_summary", + schemaPath: "#/properties/failure_summary/anyOf", keyword: "anyOf", params: {}, message: "must match a schema in anyOf", }; if (vErrors === null) { - vErrors = [err7]; + vErrors = [err20]; } else { - vErrors.push(err7); + vErrors.push(err20); } errors++; } else { - errors = _errs6; + errors = _errs23; if (vErrors !== null) { - if (_errs6) { - vErrors.length = _errs6; + if (_errs23) { + vErrors.length = _errs23; } else { vErrors = null; } } } } - if (data.fields !== undefined) { - let data2 = data.fields; - if (Array.isArray(data2)) { - const len0 = data2.length; - for (let i0 = 0; i0 < len0; i0++) { - if ( - !validate325(data2[i0], { - instancePath: instancePath + "/fields/" + i0, - parentData: data2, - parentDataProperty: i0, - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate325.errors : vErrors.concat(validate325.errors); - errors = vErrors.length; - } - } - } else { - const err8 = { - instancePath: instancePath + "/fields", - schemaPath: "#/properties/fields/type", - keyword: "type", - params: { type: "array" }, - message: "must be array", - }; - if (vErrors === null) { - vErrors = [err8]; - } else { - vErrors.push(err8); - } - errors++; - } - } - if (data.id !== undefined) { - if (typeof data.id !== "string") { - const err9 = { - instancePath: instancePath + "/id", - schemaPath: "#/properties/id/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err9]; - } else { - vErrors.push(err9); - } - errors++; - } - } - if (data.name !== undefined) { - if (typeof data.name !== "string") { - const err10 = { - instancePath: instancePath + "/name", - schemaPath: "#/properties/name/type", + if (data.finished_at !== undefined) { + let data9 = data.finished_at; + const _errs29 = errors; + let valid3 = false; + const _errs30 = errors; + if (typeof data9 !== "string") { + const err21 = { + instancePath: instancePath + "/finished_at", + schemaPath: "#/properties/finished_at/anyOf/0/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err10]; + vErrors = [err21]; } else { - vErrors.push(err10); + vErrors.push(err21); } errors++; } - } - if (data.params !== undefined) { - let data6 = data.params; - const _errs18 = errors; - let valid5 = false; - const _errs19 = errors; - if ( - !validate291(data6, { - instancePath: instancePath + "/params", - parentData: data, - parentDataProperty: "params", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); - errors = vErrors.length; - } - var _valid1 = _errs19 === errors; - valid5 = valid5 || _valid1; - const _errs20 = errors; - if (data6 !== null) { - const err11 = { - instancePath: instancePath + "/params", - schemaPath: "#/properties/params/anyOf/1/type", + var _valid2 = _errs30 === errors; + valid3 = valid3 || _valid2; + const _errs32 = errors; + if (data9 !== null) { + const err22 = { + instancePath: instancePath + "/finished_at", + schemaPath: "#/properties/finished_at/anyOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null", }; if (vErrors === null) { - vErrors = [err11]; + vErrors = [err22]; } else { - vErrors.push(err11); + vErrors.push(err22); } errors++; } - var _valid1 = _errs20 === errors; - valid5 = valid5 || _valid1; - if (!valid5) { - const err12 = { - instancePath: instancePath + "/params", - schemaPath: "#/properties/params/anyOf", + var _valid2 = _errs32 === errors; + valid3 = valid3 || _valid2; + if (!valid3) { + const err23 = { + instancePath: instancePath + "/finished_at", + schemaPath: "#/properties/finished_at/anyOf", keyword: "anyOf", params: {}, message: "must match a schema in anyOf", }; if (vErrors === null) { - vErrors = [err12]; + vErrors = [err23]; } else { - vErrors.push(err12); + vErrors.push(err23); } errors++; } else { - errors = _errs18; + errors = _errs29; if (vErrors !== null) { - if (_errs18) { - vErrors.length = _errs18; + if (_errs29) { + vErrors.length = _errs29; } else { vErrors = null; } } } } - if (data.trigger !== undefined) { - let data7 = data.trigger; - const _errs24 = errors; - let valid6 = false; - const _errs25 = errors; - if ( - !validate343(data7, { - instancePath: instancePath + "/trigger", - parentData: data, - parentDataProperty: "trigger", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate343.errors : vErrors.concat(validate343.errors); - errors = vErrors.length; + if (data.logs_available !== undefined) { + if (typeof data.logs_available !== "boolean") { + const err24 = { + instancePath: instancePath + "/logs_available", + schemaPath: "#/properties/logs_available/type", + keyword: "type", + params: { type: "boolean" }, + message: "must be boolean", + }; + if (vErrors === null) { + vErrors = [err24]; + } else { + vErrors.push(err24); + } + errors++; } - var _valid2 = _errs25 === errors; - valid6 = valid6 || _valid2; - const _errs26 = errors; - if (data7 !== null) { - const err13 = { - instancePath: instancePath + "/trigger", - schemaPath: "#/properties/trigger/anyOf/1/type", + } + if (data.models !== undefined) { + let data11 = data.models; + if (!(typeof data11 == "number" && !(data11 % 1) && !isNaN(data11) && isFinite(data11))) { + const err25 = { + instancePath: instancePath + "/models", + schemaPath: "#/properties/models/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err25]; + } else { + vErrors.push(err25); + } + errors++; + } + if (typeof data11 == "number" && isFinite(data11)) { + if (data11 < 0 || isNaN(data11)) { + const err26 = { + instancePath: instancePath + "/models", + schemaPath: "#/properties/models/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err26]; + } else { + vErrors.push(err26); + } + errors++; + } + } + } + if (data.placement !== undefined) { + let data12 = data.placement; + const _errs39 = errors; + let valid4 = false; + const _errs40 = errors; + if (data12 && typeof data12 == "object" && !Array.isArray(data12)) { + if (data12.decision_schema === undefined) { + const err27 = { + instancePath: instancePath + "/placement", + schemaPath: "#/$defs/RunPlacementDecision/required", + keyword: "required", + params: { missingProperty: "decision_schema" }, + message: "must have required property '" + "decision_schema" + "'", + }; + if (vErrors === null) { + vErrors = [err27]; + } else { + vErrors.push(err27); + } + errors++; + } + if (data12.mode === undefined) { + const err28 = { + instancePath: instancePath + "/placement", + schemaPath: "#/$defs/RunPlacementDecision/required", + keyword: "required", + params: { missingProperty: "mode" }, + message: "must have required property '" + "mode" + "'", + }; + if (vErrors === null) { + vErrors = [err28]; + } else { + vErrors.push(err28); + } + errors++; + } + if (data12.selected_environment === undefined) { + const err29 = { + instancePath: instancePath + "/placement", + schemaPath: "#/$defs/RunPlacementDecision/required", + keyword: "required", + params: { missingProperty: "selected_environment" }, + message: "must have required property '" + "selected_environment" + "'", + }; + if (vErrors === null) { + vErrors = [err29]; + } else { + vErrors.push(err29); + } + errors++; + } + if (data12.eligible_plan_count === undefined) { + const err30 = { + instancePath: instancePath + "/placement", + schemaPath: "#/$defs/RunPlacementDecision/required", + keyword: "required", + params: { missingProperty: "eligible_plan_count" }, + message: "must have required property '" + "eligible_plan_count" + "'", + }; + if (vErrors === null) { + vErrors = [err30]; + } else { + vErrors.push(err30); + } + errors++; + } + for (const key1 in data12) { + if (!( + key1 === "decision_schema" || + key1 === "eligible_plan_count" || + key1 === "estimated_cost_microusd" || + key1 === "max_cost_microusd" || + key1 === "mode" || + key1 === "preferred_locality" || + key1 === "selected_environment" || + key1 === "selected_locality" + )) { + const err31 = { + instancePath: instancePath + "/placement", + schemaPath: "#/$defs/RunPlacementDecision/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err31]; + } else { + vErrors.push(err31); + } + errors++; + } + } + if (data12.decision_schema !== undefined) { + let data13 = data12.decision_schema; + if (typeof data13 !== "string") { + const err32 = { + instancePath: instancePath + "/placement/decision_schema", + schemaPath: "#/$defs/RunPlacementDecision/properties/decision_schema/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err32]; + } else { + vErrors.push(err32); + } + errors++; + } + if ("io.dander.control.placement-decision/v1" !== data13) { + const err33 = { + instancePath: instancePath + "/placement/decision_schema", + schemaPath: "#/$defs/RunPlacementDecision/properties/decision_schema/const", + keyword: "const", + params: { allowedValue: "io.dander.control.placement-decision/v1" }, + message: "must be equal to constant", + }; + if (vErrors === null) { + vErrors = [err33]; + } else { + vErrors.push(err33); + } + errors++; + } + } + if (data12.eligible_plan_count !== undefined) { + let data14 = data12.eligible_plan_count; + if (!(typeof data14 == "number" && !(data14 % 1) && !isNaN(data14) && isFinite(data14))) { + const err34 = { + instancePath: instancePath + "/placement/eligible_plan_count", + schemaPath: "#/$defs/RunPlacementDecision/properties/eligible_plan_count/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err34]; + } else { + vErrors.push(err34); + } + errors++; + } + if (typeof data14 == "number" && isFinite(data14)) { + if (data14 > 100 || isNaN(data14)) { + const err35 = { + instancePath: instancePath + "/placement/eligible_plan_count", + schemaPath: "#/$defs/RunPlacementDecision/properties/eligible_plan_count/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 100 }, + message: "must be <= 100", + }; + if (vErrors === null) { + vErrors = [err35]; + } else { + vErrors.push(err35); + } + errors++; + } + if (data14 < 1 || isNaN(data14)) { + const err36 = { + instancePath: instancePath + "/placement/eligible_plan_count", + schemaPath: "#/$defs/RunPlacementDecision/properties/eligible_plan_count/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 1 }, + message: "must be >= 1", + }; + if (vErrors === null) { + vErrors = [err36]; + } else { + vErrors.push(err36); + } + errors++; + } + } + } + if (data12.estimated_cost_microusd !== undefined) { + let data15 = data12.estimated_cost_microusd; + const _errs49 = errors; + let valid7 = false; + const _errs50 = errors; + if (!(typeof data15 == "number" && !(data15 % 1) && !isNaN(data15) && isFinite(data15))) { + const err37 = { + instancePath: instancePath + "/placement/estimated_cost_microusd", + schemaPath: + "#/$defs/RunPlacementDecision/properties/estimated_cost_microusd/anyOf/0/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err37]; + } else { + vErrors.push(err37); + } + errors++; + } + if (typeof data15 == "number" && isFinite(data15)) { + if (data15 > 9223372036854776000 || isNaN(data15)) { + const err38 = { + instancePath: instancePath + "/placement/estimated_cost_microusd", + schemaPath: + "#/$defs/RunPlacementDecision/properties/estimated_cost_microusd/anyOf/0/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err38]; + } else { + vErrors.push(err38); + } + errors++; + } + if (data15 < 0 || isNaN(data15)) { + const err39 = { + instancePath: instancePath + "/placement/estimated_cost_microusd", + schemaPath: + "#/$defs/RunPlacementDecision/properties/estimated_cost_microusd/anyOf/0/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err39]; + } else { + vErrors.push(err39); + } + errors++; + } + } + var _valid4 = _errs50 === errors; + valid7 = valid7 || _valid4; + const _errs52 = errors; + if (data15 !== null) { + const err40 = { + instancePath: instancePath + "/placement/estimated_cost_microusd", + schemaPath: + "#/$defs/RunPlacementDecision/properties/estimated_cost_microusd/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err40]; + } else { + vErrors.push(err40); + } + errors++; + } + var _valid4 = _errs52 === errors; + valid7 = valid7 || _valid4; + if (!valid7) { + const err41 = { + instancePath: instancePath + "/placement/estimated_cost_microusd", + schemaPath: "#/$defs/RunPlacementDecision/properties/estimated_cost_microusd/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err41]; + } else { + vErrors.push(err41); + } + errors++; + } else { + errors = _errs49; + if (vErrors !== null) { + if (_errs49) { + vErrors.length = _errs49; + } else { + vErrors = null; + } + } + } + } + if (data12.max_cost_microusd !== undefined) { + let data16 = data12.max_cost_microusd; + const _errs55 = errors; + let valid8 = false; + const _errs56 = errors; + if (!(typeof data16 == "number" && !(data16 % 1) && !isNaN(data16) && isFinite(data16))) { + const err42 = { + instancePath: instancePath + "/placement/max_cost_microusd", + schemaPath: "#/$defs/RunPlacementDecision/properties/max_cost_microusd/anyOf/0/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err42]; + } else { + vErrors.push(err42); + } + errors++; + } + if (typeof data16 == "number" && isFinite(data16)) { + if (data16 > 9223372036854776000 || isNaN(data16)) { + const err43 = { + instancePath: instancePath + "/placement/max_cost_microusd", + schemaPath: + "#/$defs/RunPlacementDecision/properties/max_cost_microusd/anyOf/0/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err43]; + } else { + vErrors.push(err43); + } + errors++; + } + if (data16 < 0 || isNaN(data16)) { + const err44 = { + instancePath: instancePath + "/placement/max_cost_microusd", + schemaPath: + "#/$defs/RunPlacementDecision/properties/max_cost_microusd/anyOf/0/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err44]; + } else { + vErrors.push(err44); + } + errors++; + } + } + var _valid5 = _errs56 === errors; + valid8 = valid8 || _valid5; + const _errs58 = errors; + if (data16 !== null) { + const err45 = { + instancePath: instancePath + "/placement/max_cost_microusd", + schemaPath: "#/$defs/RunPlacementDecision/properties/max_cost_microusd/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err45]; + } else { + vErrors.push(err45); + } + errors++; + } + var _valid5 = _errs58 === errors; + valid8 = valid8 || _valid5; + if (!valid8) { + const err46 = { + instancePath: instancePath + "/placement/max_cost_microusd", + schemaPath: "#/$defs/RunPlacementDecision/properties/max_cost_microusd/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err46]; + } else { + vErrors.push(err46); + } + errors++; + } else { + errors = _errs55; + if (vErrors !== null) { + if (_errs55) { + vErrors.length = _errs55; + } else { + vErrors = null; + } + } + } + } + if (data12.mode !== undefined) { + let data17 = data12.mode; + if (typeof data17 !== "string") { + const err47 = { + instancePath: instancePath + "/placement/mode", + schemaPath: "#/$defs/RunPlacementDecision/properties/mode/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err47]; + } else { + vErrors.push(err47); + } + errors++; + } + if (!( + data17 === "automatic" || + data17 === "manual_override" || + data17 === "configured_default" || + data17 === "scheduled" || + data17 === "replay" + )) { + const err48 = { + instancePath: instancePath + "/placement/mode", + schemaPath: "#/$defs/RunPlacementDecision/properties/mode/enum", + keyword: "enum", + params: { allowedValues: schema299.properties.mode.enum }, + message: "must be equal to one of the allowed values", + }; + if (vErrors === null) { + vErrors = [err48]; + } else { + vErrors.push(err48); + } + errors++; + } + } + if (data12.preferred_locality !== undefined) { + let data18 = data12.preferred_locality; + const _errs63 = errors; + let valid9 = false; + const _errs64 = errors; + if (typeof data18 !== "string") { + const err49 = { + instancePath: instancePath + "/placement/preferred_locality", + schemaPath: "#/$defs/RunPlacementDecision/properties/preferred_locality/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err49]; + } else { + vErrors.push(err49); + } + errors++; + } + var _valid6 = _errs64 === errors; + valid9 = valid9 || _valid6; + const _errs66 = errors; + if (data18 !== null) { + const err50 = { + instancePath: instancePath + "/placement/preferred_locality", + schemaPath: "#/$defs/RunPlacementDecision/properties/preferred_locality/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err50]; + } else { + vErrors.push(err50); + } + errors++; + } + var _valid6 = _errs66 === errors; + valid9 = valid9 || _valid6; + if (!valid9) { + const err51 = { + instancePath: instancePath + "/placement/preferred_locality", + schemaPath: "#/$defs/RunPlacementDecision/properties/preferred_locality/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err51]; + } else { + vErrors.push(err51); + } + errors++; + } else { + errors = _errs63; + if (vErrors !== null) { + if (_errs63) { + vErrors.length = _errs63; + } else { + vErrors = null; + } + } + } + } + if (data12.selected_environment !== undefined) { + if (typeof data12.selected_environment !== "string") { + const err52 = { + instancePath: instancePath + "/placement/selected_environment", + schemaPath: "#/$defs/RunPlacementDecision/properties/selected_environment/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err52]; + } else { + vErrors.push(err52); + } + errors++; + } + } + if (data12.selected_locality !== undefined) { + let data20 = data12.selected_locality; + const _errs71 = errors; + let valid10 = false; + const _errs72 = errors; + if (typeof data20 !== "string") { + const err53 = { + instancePath: instancePath + "/placement/selected_locality", + schemaPath: "#/$defs/RunPlacementDecision/properties/selected_locality/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err53]; + } else { + vErrors.push(err53); + } + errors++; + } + var _valid7 = _errs72 === errors; + valid10 = valid10 || _valid7; + const _errs74 = errors; + if (data20 !== null) { + const err54 = { + instancePath: instancePath + "/placement/selected_locality", + schemaPath: "#/$defs/RunPlacementDecision/properties/selected_locality/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err54]; + } else { + vErrors.push(err54); + } + errors++; + } + var _valid7 = _errs74 === errors; + valid10 = valid10 || _valid7; + if (!valid10) { + const err55 = { + instancePath: instancePath + "/placement/selected_locality", + schemaPath: "#/$defs/RunPlacementDecision/properties/selected_locality/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err55]; + } else { + vErrors.push(err55); + } + errors++; + } else { + errors = _errs71; + if (vErrors !== null) { + if (_errs71) { + vErrors.length = _errs71; + } else { + vErrors = null; + } + } + } + } + } else { + const err56 = { + instancePath: instancePath + "/placement", + schemaPath: "#/$defs/RunPlacementDecision/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err56]; + } else { + vErrors.push(err56); + } + errors++; + } + var _valid3 = _errs40 === errors; + valid4 = valid4 || _valid3; + const _errs76 = errors; + if (data12 !== null) { + const err57 = { + instancePath: instancePath + "/placement", + schemaPath: "#/properties/placement/anyOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null", }; if (vErrors === null) { - vErrors = [err13]; + vErrors = [err57]; } else { - vErrors.push(err13); + vErrors.push(err57); } errors++; } - var _valid2 = _errs26 === errors; - valid6 = valid6 || _valid2; - if (!valid6) { - const err14 = { - instancePath: instancePath + "/trigger", - schemaPath: "#/properties/trigger/anyOf", + var _valid3 = _errs76 === errors; + valid4 = valid4 || _valid3; + if (!valid4) { + const err58 = { + instancePath: instancePath + "/placement", + schemaPath: "#/properties/placement/anyOf", keyword: "anyOf", params: {}, message: "must match a schema in anyOf", }; if (vErrors === null) { - vErrors = [err14]; + vErrors = [err58]; } else { - vErrors.push(err14); + vErrors.push(err58); } errors++; } else { - errors = _errs24; + errors = _errs39; if (vErrors !== null) { - if (_errs24) { - vErrors.length = _errs24; + if (_errs39) { + vErrors.length = _errs39; } else { vErrors = null; } } } } - if (data.type !== undefined) { - let data8 = data.type; - if (typeof data8 !== "string") { - const err15 = { - instancePath: instancePath + "/type", - schemaPath: "#/$defs/ExtensionNodeType/type", + if (data.repair_window !== undefined) { + let data21 = data.repair_window; + const _errs79 = errors; + let valid11 = false; + const _errs80 = errors; + if (data21 && typeof data21 == "object" && !Array.isArray(data21)) { + if (data21.start_date === undefined) { + const err59 = { + instancePath: instancePath + "/repair_window", + schemaPath: "#/$defs/GraphRepairWindow/required", + keyword: "required", + params: { missingProperty: "start_date" }, + message: "must have required property '" + "start_date" + "'", + }; + if (vErrors === null) { + vErrors = [err59]; + } else { + vErrors.push(err59); + } + errors++; + } + if (data21.end_date === undefined) { + const err60 = { + instancePath: instancePath + "/repair_window", + schemaPath: "#/$defs/GraphRepairWindow/required", + keyword: "required", + params: { missingProperty: "end_date" }, + message: "must have required property '" + "end_date" + "'", + }; + if (vErrors === null) { + vErrors = [err60]; + } else { + vErrors.push(err60); + } + errors++; + } + for (const key2 in data21) { + if (!(key2 === "end_date" || key2 === "start_date")) { + const err61 = { + instancePath: instancePath + "/repair_window", + schemaPath: "#/$defs/GraphRepairWindow/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key2 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err61]; + } else { + vErrors.push(err61); + } + errors++; + } + } + if (data21.end_date !== undefined) { + if (!(typeof data21.end_date === "string")) { + const err62 = { + instancePath: instancePath + "/repair_window/end_date", + schemaPath: "#/$defs/GraphRepairWindow/properties/end_date/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err62]; + } else { + vErrors.push(err62); + } + errors++; + } + } + if (data21.start_date !== undefined) { + if (!(typeof data21.start_date === "string")) { + const err63 = { + instancePath: instancePath + "/repair_window/start_date", + schemaPath: "#/$defs/GraphRepairWindow/properties/start_date/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err63]; + } else { + vErrors.push(err63); + } + errors++; + } + } + } else { + const err64 = { + instancePath: instancePath + "/repair_window", + schemaPath: "#/$defs/GraphRepairWindow/type", keyword: "type", - params: { type: "string" }, - message: "must be string", + params: { type: "object" }, + message: "must be object", }; if (vErrors === null) { - vErrors = [err15]; + vErrors = [err64]; } else { - vErrors.push(err15); + vErrors.push(err64); } - errors++; - } - const _errs31 = errors; - const _errs32 = errors; - if (!(data8 === "source" || data8 === "transform" || data8 === "target")) { - const err16 = {}; + errors++; + } + var _valid8 = _errs80 === errors; + valid11 = valid11 || _valid8; + const _errs88 = errors; + if (data21 !== null) { + const err65 = { + instancePath: instancePath + "/repair_window", + schemaPath: "#/properties/repair_window/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; if (vErrors === null) { - vErrors = [err16]; + vErrors = [err65]; } else { - vErrors.push(err16); + vErrors.push(err65); } errors++; } - var valid8 = _errs32 === errors; - if (valid8) { - const err17 = { - instancePath: instancePath + "/type", - schemaPath: "#/$defs/ExtensionNodeType/not", - keyword: "not", + var _valid8 = _errs88 === errors; + valid11 = valid11 || _valid8; + if (!valid11) { + const err66 = { + instancePath: instancePath + "/repair_window", + schemaPath: "#/properties/repair_window/anyOf", + keyword: "anyOf", params: {}, - message: "must NOT be valid", + message: "must match a schema in anyOf", }; if (vErrors === null) { - vErrors = [err17]; + vErrors = [err66]; } else { - vErrors.push(err17); + vErrors.push(err66); } errors++; } else { - errors = _errs31; + errors = _errs79; if (vErrors !== null) { - if (_errs31) { - vErrors.length = _errs31; + if (_errs79) { + vErrors.length = _errs79; } else { vErrors = null; } } } } - if (data.visual !== undefined) { - let data9 = data.visual; - const _errs34 = errors; - let valid9 = false; - const _errs35 = errors; - if ( - !validate354(data9, { - instancePath: instancePath + "/visual", - parentData: data, - parentDataProperty: "visual", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate354.errors : vErrors.concat(validate354.errors); - errors = vErrors.length; + if (data.result_schema !== undefined) { + let data24 = data.result_schema; + const _errs91 = errors; + let valid14 = false; + const _errs92 = errors; + if (typeof data24 !== "string") { + const err67 = { + instancePath: instancePath + "/result_schema", + schemaPath: "#/properties/result_schema/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err67]; + } else { + vErrors.push(err67); + } + errors++; } - var _valid3 = _errs35 === errors; - valid9 = valid9 || _valid3; - const _errs36 = errors; - if (data9 !== null) { - const err18 = { - instancePath: instancePath + "/visual", - schemaPath: "#/properties/visual/anyOf/1/type", + if ("io.dander.control.execution-result-summary/v1" !== data24) { + const err68 = { + instancePath: instancePath + "/result_schema", + schemaPath: "#/properties/result_schema/anyOf/0/const", + keyword: "const", + params: { allowedValue: "io.dander.control.execution-result-summary/v1" }, + message: "must be equal to constant", + }; + if (vErrors === null) { + vErrors = [err68]; + } else { + vErrors.push(err68); + } + errors++; + } + var _valid9 = _errs92 === errors; + valid14 = valid14 || _valid9; + const _errs94 = errors; + if (data24 !== null) { + const err69 = { + instancePath: instancePath + "/result_schema", + schemaPath: "#/properties/result_schema/anyOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null", }; if (vErrors === null) { - vErrors = [err18]; + vErrors = [err69]; } else { - vErrors.push(err18); + vErrors.push(err69); } errors++; } - var _valid3 = _errs36 === errors; - valid9 = valid9 || _valid3; - if (!valid9) { - const err19 = { - instancePath: instancePath + "/visual", - schemaPath: "#/properties/visual/anyOf", + var _valid9 = _errs94 === errors; + valid14 = valid14 || _valid9; + if (!valid14) { + const err70 = { + instancePath: instancePath + "/result_schema", + schemaPath: "#/properties/result_schema/anyOf", keyword: "anyOf", params: {}, message: "must match a schema in anyOf", }; if (vErrors === null) { - vErrors = [err19]; + vErrors = [err70]; } else { - vErrors.push(err19); + vErrors.push(err70); } errors++; } else { - errors = _errs34; + errors = _errs91; if (vErrors !== null) { - if (_errs34) { - vErrors.length = _errs34; + if (_errs91) { + vErrors.length = _errs91; } else { vErrors = null; } } } } - } else { - const err20 = { - instancePath, - schemaPath: "#/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", - }; - if (vErrors === null) { - vErrors = [err20]; - } else { - vErrors.push(err20); - } - errors++; - } - validate399.errors = vErrors; - return errors === 0; -} -validate399.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -function validate314( - data, - { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, -) { - let vErrors = null; - let errors = 0; - const evaluated0 = validate314.evaluated; - if (evaluated0.dynamicProps) { - evaluated0.props = undefined; - } - if (evaluated0.dynamicItems) { - evaluated0.items = undefined; - } - const _errs0 = errors; - let valid0 = false; - const _errs1 = errors; - if ( - !validate315(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) - ) { - vErrors = vErrors === null ? validate315.errors : vErrors.concat(validate315.errors); - errors = vErrors.length; - } - var _valid0 = _errs1 === errors; - valid0 = valid0 || _valid0; - if (_valid0) { - var props0 = true; - } - const _errs2 = errors; - if ( - !validate357(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) - ) { - vErrors = vErrors === null ? validate357.errors : vErrors.concat(validate357.errors); - errors = vErrors.length; - } - var _valid0 = _errs2 === errors; - valid0 = valid0 || _valid0; - if (_valid0) { - if (props0 !== true) { - props0 = true; - } - } - const _errs3 = errors; - if ( - !validate386(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) - ) { - vErrors = vErrors === null ? validate386.errors : vErrors.concat(validate386.errors); - errors = vErrors.length; - } - var _valid0 = _errs3 === errors; - valid0 = valid0 || _valid0; - if (_valid0) { - if (props0 !== true) { - props0 = true; - } - } - const _errs4 = errors; - if ( - !validate399(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) - ) { - vErrors = vErrors === null ? validate399.errors : vErrors.concat(validate399.errors); - errors = vErrors.length; - } - var _valid0 = _errs4 === errors; - valid0 = valid0 || _valid0; - if (_valid0) { - if (props0 !== true) { - props0 = true; - } - } - if (!valid0) { - const err0 = { - instancePath, - schemaPath: "#/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); - } - errors++; - } else { - errors = _errs0; - if (vErrors !== null) { - if (_errs0) { - vErrors.length = _errs0; - } else { - vErrors = null; + if (data.run_id !== undefined) { + if (typeof data.run_id !== "string") { + const err71 = { + instancePath: instancePath + "/run_id", + schemaPath: "#/properties/run_id/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err71]; + } else { + vErrors.push(err71); + } + errors++; } } - } - validate314.errors = vErrors; - evaluated0.props = props0; - return errors === 0; -} -validate314.evaluated = { dynamicProps: true, dynamicItems: false }; - -function validate288( - data, - { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, -) { - /*# sourceURL="urn:dander:control:contracts:v1:pipeline-graph" */ let vErrors = null; - let errors = 0; - const evaluated0 = validate288.evaluated; - if (evaluated0.dynamicProps) { - evaluated0.props = undefined; - } - if (evaluated0.dynamicItems) { - evaluated0.items = undefined; - } - if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.name === undefined) { - const err0 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "name" }, - message: "must have required property '" + "name" + "'", - }; - if (vErrors === null) { - vErrors = [err0]; + if (data.sizing !== undefined) { + let data26 = data.sizing; + const _errs99 = errors; + let valid15 = false; + const _errs100 = errors; + if (data26 && typeof data26 == "object" && !Array.isArray(data26)) { + if (data26.decision_schema === undefined) { + const err72 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/$defs/RunSizeClassDecision/required", + keyword: "required", + params: { missingProperty: "decision_schema" }, + message: "must have required property '" + "decision_schema" + "'", + }; + if (vErrors === null) { + vErrors = [err72]; + } else { + vErrors.push(err72); + } + errors++; + } + if (data26.mode === undefined) { + const err73 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/$defs/RunSizeClassDecision/required", + keyword: "required", + params: { missingProperty: "mode" }, + message: "must have required property '" + "mode" + "'", + }; + if (vErrors === null) { + vErrors = [err73]; + } else { + vErrors.push(err73); + } + errors++; + } + if (data26.selected_size_class === undefined) { + const err74 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/$defs/RunSizeClassDecision/required", + keyword: "required", + params: { missingProperty: "selected_size_class" }, + message: "must have required property '" + "selected_size_class" + "'", + }; + if (vErrors === null) { + vErrors = [err74]; + } else { + vErrors.push(err74); + } + errors++; + } + if (data26.max_input_bytes === undefined) { + const err75 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/$defs/RunSizeClassDecision/required", + keyword: "required", + params: { missingProperty: "max_input_bytes" }, + message: "must have required property '" + "max_input_bytes" + "'", + }; + if (vErrors === null) { + vErrors = [err75]; + } else { + vErrors.push(err75); + } + errors++; + } + if (data26.cpu_millis === undefined) { + const err76 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/$defs/RunSizeClassDecision/required", + keyword: "required", + params: { missingProperty: "cpu_millis" }, + message: "must have required property '" + "cpu_millis" + "'", + }; + if (vErrors === null) { + vErrors = [err76]; + } else { + vErrors.push(err76); + } + errors++; + } + if (data26.memory_mib === undefined) { + const err77 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/$defs/RunSizeClassDecision/required", + keyword: "required", + params: { missingProperty: "memory_mib" }, + message: "must have required property '" + "memory_mib" + "'", + }; + if (vErrors === null) { + vErrors = [err77]; + } else { + vErrors.push(err77); + } + errors++; + } + if (data26.eligible_plan_count === undefined) { + const err78 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/$defs/RunSizeClassDecision/required", + keyword: "required", + params: { missingProperty: "eligible_plan_count" }, + message: "must have required property '" + "eligible_plan_count" + "'", + }; + if (vErrors === null) { + vErrors = [err78]; + } else { + vErrors.push(err78); + } + errors++; + } + for (const key3 in data26) { + if (!func1.call(schema301.properties, key3)) { + const err79 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/$defs/RunSizeClassDecision/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key3 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err79]; + } else { + vErrors.push(err79); + } + errors++; + } + } + if (data26.cpu_millis !== undefined) { + let data27 = data26.cpu_millis; + if (!(typeof data27 == "number" && !(data27 % 1) && !isNaN(data27) && isFinite(data27))) { + const err80 = { + instancePath: instancePath + "/sizing/cpu_millis", + schemaPath: "#/$defs/RunSizeClassDecision/properties/cpu_millis/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err80]; + } else { + vErrors.push(err80); + } + errors++; + } + if (typeof data27 == "number" && isFinite(data27)) { + if (data27 < 1 || isNaN(data27)) { + const err81 = { + instancePath: instancePath + "/sizing/cpu_millis", + schemaPath: "#/$defs/RunSizeClassDecision/properties/cpu_millis/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 1 }, + message: "must be >= 1", + }; + if (vErrors === null) { + vErrors = [err81]; + } else { + vErrors.push(err81); + } + errors++; + } + } + } + if (data26.decision_schema !== undefined) { + let data28 = data26.decision_schema; + if (typeof data28 !== "string") { + const err82 = { + instancePath: instancePath + "/sizing/decision_schema", + schemaPath: "#/$defs/RunSizeClassDecision/properties/decision_schema/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err82]; + } else { + vErrors.push(err82); + } + errors++; + } + if ("io.dander.control.size-class-decision/v2" !== data28) { + const err83 = { + instancePath: instancePath + "/sizing/decision_schema", + schemaPath: "#/$defs/RunSizeClassDecision/properties/decision_schema/const", + keyword: "const", + params: { allowedValue: "io.dander.control.size-class-decision/v2" }, + message: "must be equal to constant", + }; + if (vErrors === null) { + vErrors = [err83]; + } else { + vErrors.push(err83); + } + errors++; + } + } + if (data26.eligible_plan_count !== undefined) { + let data29 = data26.eligible_plan_count; + if (!(typeof data29 == "number" && !(data29 % 1) && !isNaN(data29) && isFinite(data29))) { + const err84 = { + instancePath: instancePath + "/sizing/eligible_plan_count", + schemaPath: "#/$defs/RunSizeClassDecision/properties/eligible_plan_count/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err84]; + } else { + vErrors.push(err84); + } + errors++; + } + if (typeof data29 == "number" && isFinite(data29)) { + if (data29 > 100 || isNaN(data29)) { + const err85 = { + instancePath: instancePath + "/sizing/eligible_plan_count", + schemaPath: "#/$defs/RunSizeClassDecision/properties/eligible_plan_count/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 100 }, + message: "must be <= 100", + }; + if (vErrors === null) { + vErrors = [err85]; + } else { + vErrors.push(err85); + } + errors++; + } + if (data29 < 1 || isNaN(data29)) { + const err86 = { + instancePath: instancePath + "/sizing/eligible_plan_count", + schemaPath: "#/$defs/RunSizeClassDecision/properties/eligible_plan_count/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 1 }, + message: "must be >= 1", + }; + if (vErrors === null) { + vErrors = [err86]; + } else { + vErrors.push(err86); + } + errors++; + } + } + } + if (data26.ephemeral_storage_mib !== undefined) { + let data30 = data26.ephemeral_storage_mib; + const _errs111 = errors; + let valid18 = false; + const _errs112 = errors; + if (!(typeof data30 == "number" && !(data30 % 1) && !isNaN(data30) && isFinite(data30))) { + const err87 = { + instancePath: instancePath + "/sizing/ephemeral_storage_mib", + schemaPath: + "#/$defs/RunSizeClassDecision/properties/ephemeral_storage_mib/anyOf/0/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err87]; + } else { + vErrors.push(err87); + } + errors++; + } + if (typeof data30 == "number" && isFinite(data30)) { + if (data30 < 1 || isNaN(data30)) { + const err88 = { + instancePath: instancePath + "/sizing/ephemeral_storage_mib", + schemaPath: + "#/$defs/RunSizeClassDecision/properties/ephemeral_storage_mib/anyOf/0/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 1 }, + message: "must be >= 1", + }; + if (vErrors === null) { + vErrors = [err88]; + } else { + vErrors.push(err88); + } + errors++; + } + } + var _valid11 = _errs112 === errors; + valid18 = valid18 || _valid11; + const _errs114 = errors; + if (data30 !== null) { + const err89 = { + instancePath: instancePath + "/sizing/ephemeral_storage_mib", + schemaPath: + "#/$defs/RunSizeClassDecision/properties/ephemeral_storage_mib/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err89]; + } else { + vErrors.push(err89); + } + errors++; + } + var _valid11 = _errs114 === errors; + valid18 = valid18 || _valid11; + if (!valid18) { + const err90 = { + instancePath: instancePath + "/sizing/ephemeral_storage_mib", + schemaPath: "#/$defs/RunSizeClassDecision/properties/ephemeral_storage_mib/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err90]; + } else { + vErrors.push(err90); + } + errors++; + } else { + errors = _errs111; + if (vErrors !== null) { + if (_errs111) { + vErrors.length = _errs111; + } else { + vErrors = null; + } + } + } + } + if (data26.estimate_observed_at !== undefined) { + let data31 = data26.estimate_observed_at; + const _errs117 = errors; + let valid19 = false; + const _errs118 = errors; + if (typeof data31 !== "string") { + const err91 = { + instancePath: instancePath + "/sizing/estimate_observed_at", + schemaPath: + "#/$defs/RunSizeClassDecision/properties/estimate_observed_at/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err91]; + } else { + vErrors.push(err91); + } + errors++; + } + var _valid12 = _errs118 === errors; + valid19 = valid19 || _valid12; + const _errs120 = errors; + if (data31 !== null) { + const err92 = { + instancePath: instancePath + "/sizing/estimate_observed_at", + schemaPath: + "#/$defs/RunSizeClassDecision/properties/estimate_observed_at/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err92]; + } else { + vErrors.push(err92); + } + errors++; + } + var _valid12 = _errs120 === errors; + valid19 = valid19 || _valid12; + if (!valid19) { + const err93 = { + instancePath: instancePath + "/sizing/estimate_observed_at", + schemaPath: "#/$defs/RunSizeClassDecision/properties/estimate_observed_at/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err93]; + } else { + vErrors.push(err93); + } + errors++; + } else { + errors = _errs117; + if (vErrors !== null) { + if (_errs117) { + vErrors.length = _errs117; + } else { + vErrors = null; + } + } + } + } + if (data26.estimate_source !== undefined) { + let data32 = data26.estimate_source; + const _errs123 = errors; + let valid20 = false; + const _errs124 = errors; + if (typeof data32 !== "string") { + const err94 = { + instancePath: instancePath + "/sizing/estimate_source", + schemaPath: "#/$defs/RunSizeClassDecision/properties/estimate_source/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err94]; + } else { + vErrors.push(err94); + } + errors++; + } + var _valid13 = _errs124 === errors; + valid20 = valid20 || _valid13; + const _errs126 = errors; + if (data32 !== null) { + const err95 = { + instancePath: instancePath + "/sizing/estimate_source", + schemaPath: "#/$defs/RunSizeClassDecision/properties/estimate_source/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err95]; + } else { + vErrors.push(err95); + } + errors++; + } + var _valid13 = _errs126 === errors; + valid20 = valid20 || _valid13; + if (!valid20) { + const err96 = { + instancePath: instancePath + "/sizing/estimate_source", + schemaPath: "#/$defs/RunSizeClassDecision/properties/estimate_source/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err96]; + } else { + vErrors.push(err96); + } + errors++; + } else { + errors = _errs123; + if (vErrors !== null) { + if (_errs123) { + vErrors.length = _errs123; + } else { + vErrors = null; + } + } + } + } + if (data26.estimated_input_bytes !== undefined) { + let data33 = data26.estimated_input_bytes; + const _errs129 = errors; + let valid21 = false; + const _errs130 = errors; + if (!(typeof data33 == "number" && !(data33 % 1) && !isNaN(data33) && isFinite(data33))) { + const err97 = { + instancePath: instancePath + "/sizing/estimated_input_bytes", + schemaPath: + "#/$defs/RunSizeClassDecision/properties/estimated_input_bytes/anyOf/0/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err97]; + } else { + vErrors.push(err97); + } + errors++; + } + if (typeof data33 == "number" && isFinite(data33)) { + if (data33 > 9223372036854776000 || isNaN(data33)) { + const err98 = { + instancePath: instancePath + "/sizing/estimated_input_bytes", + schemaPath: + "#/$defs/RunSizeClassDecision/properties/estimated_input_bytes/anyOf/0/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err98]; + } else { + vErrors.push(err98); + } + errors++; + } + if (data33 < 0 || isNaN(data33)) { + const err99 = { + instancePath: instancePath + "/sizing/estimated_input_bytes", + schemaPath: + "#/$defs/RunSizeClassDecision/properties/estimated_input_bytes/anyOf/0/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err99]; + } else { + vErrors.push(err99); + } + errors++; + } + } + var _valid14 = _errs130 === errors; + valid21 = valid21 || _valid14; + const _errs132 = errors; + if (data33 !== null) { + const err100 = { + instancePath: instancePath + "/sizing/estimated_input_bytes", + schemaPath: + "#/$defs/RunSizeClassDecision/properties/estimated_input_bytes/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err100]; + } else { + vErrors.push(err100); + } + errors++; + } + var _valid14 = _errs132 === errors; + valid21 = valid21 || _valid14; + if (!valid21) { + const err101 = { + instancePath: instancePath + "/sizing/estimated_input_bytes", + schemaPath: "#/$defs/RunSizeClassDecision/properties/estimated_input_bytes/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err101]; + } else { + vErrors.push(err101); + } + errors++; + } else { + errors = _errs129; + if (vErrors !== null) { + if (_errs129) { + vErrors.length = _errs129; + } else { + vErrors = null; + } + } + } + } + if (data26.max_input_bytes !== undefined) { + let data34 = data26.max_input_bytes; + if (!(typeof data34 == "number" && !(data34 % 1) && !isNaN(data34) && isFinite(data34))) { + const err102 = { + instancePath: instancePath + "/sizing/max_input_bytes", + schemaPath: "#/$defs/RunSizeClassDecision/properties/max_input_bytes/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err102]; + } else { + vErrors.push(err102); + } + errors++; + } + if (typeof data34 == "number" && isFinite(data34)) { + if (data34 > 9223372036854776000 || isNaN(data34)) { + const err103 = { + instancePath: instancePath + "/sizing/max_input_bytes", + schemaPath: "#/$defs/RunSizeClassDecision/properties/max_input_bytes/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err103]; + } else { + vErrors.push(err103); + } + errors++; + } + if (data34 < 0 || isNaN(data34)) { + const err104 = { + instancePath: instancePath + "/sizing/max_input_bytes", + schemaPath: "#/$defs/RunSizeClassDecision/properties/max_input_bytes/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err104]; + } else { + vErrors.push(err104); + } + errors++; + } + } + } + if (data26.memory_mib !== undefined) { + let data35 = data26.memory_mib; + if (!(typeof data35 == "number" && !(data35 % 1) && !isNaN(data35) && isFinite(data35))) { + const err105 = { + instancePath: instancePath + "/sizing/memory_mib", + schemaPath: "#/$defs/RunSizeClassDecision/properties/memory_mib/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err105]; + } else { + vErrors.push(err105); + } + errors++; + } + if (typeof data35 == "number" && isFinite(data35)) { + if (data35 < 1 || isNaN(data35)) { + const err106 = { + instancePath: instancePath + "/sizing/memory_mib", + schemaPath: "#/$defs/RunSizeClassDecision/properties/memory_mib/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 1 }, + message: "must be >= 1", + }; + if (vErrors === null) { + vErrors = [err106]; + } else { + vErrors.push(err106); + } + errors++; + } + } + } + if (data26.mode !== undefined) { + let data36 = data26.mode; + if (typeof data36 !== "string") { + const err107 = { + instancePath: instancePath + "/sizing/mode", + schemaPath: "#/$defs/RunSizeClassDecision/properties/mode/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err107]; + } else { + vErrors.push(err107); + } + errors++; + } + if (!( + data36 === "automatic_input" || + data36 === "manual_override" || + data36 === "configured_default" || + data36 === "scheduled" || + data36 === "replay" + )) { + const err108 = { + instancePath: instancePath + "/sizing/mode", + schemaPath: "#/$defs/RunSizeClassDecision/properties/mode/enum", + keyword: "enum", + params: { allowedValues: schema301.properties.mode.enum }, + message: "must be equal to one of the allowed values", + }; + if (vErrors === null) { + vErrors = [err108]; + } else { + vErrors.push(err108); + } + errors++; + } + } + if (data26.selected_size_class !== undefined) { + if (typeof data26.selected_size_class !== "string") { + const err109 = { + instancePath: instancePath + "/sizing/selected_size_class", + schemaPath: "#/$defs/RunSizeClassDecision/properties/selected_size_class/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err109]; + } else { + vErrors.push(err109); + } + errors++; + } + } } else { - vErrors.push(err0); + const err110 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/$defs/RunSizeClassDecision/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err110]; + } else { + vErrors.push(err110); + } + errors++; } - errors++; - } - for (const key0 in data) { - if (!(key0 === "edges" || key0 === "name" || key0 === "nodes" || key0 === "trigger")) { - const err1 = { - instancePath, - schemaPath: "#/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key0 }, - message: "must NOT have additional properties", + var _valid10 = _errs100 === errors; + valid15 = valid15 || _valid10; + const _errs142 = errors; + if (data26 !== null) { + const err111 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/properties/sizing/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", }; if (vErrors === null) { - vErrors = [err1]; + vErrors = [err111]; } else { - vErrors.push(err1); + vErrors.push(err111); } errors++; } - } - if (data.edges !== undefined) { - let data0 = data.edges; - if (Array.isArray(data0)) { - const len0 = data0.length; - for (let i0 = 0; i0 < len0; i0++) { - if ( - !validate289(data0[i0], { - instancePath: instancePath + "/edges/" + i0, - parentData: data0, - parentDataProperty: i0, - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate289.errors : vErrors.concat(validate289.errors); - errors = vErrors.length; - } + var _valid10 = _errs142 === errors; + valid15 = valid15 || _valid10; + if (!valid15) { + const err112 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/properties/sizing/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err112]; + } else { + vErrors.push(err112); } + errors++; } else { - const err2 = { - instancePath: instancePath + "/edges", - schemaPath: "#/properties/edges/type", + errors = _errs99; + if (vErrors !== null) { + if (_errs99) { + vErrors.length = _errs99; + } else { + vErrors = null; + } + } + } + } + if (data.skipped !== undefined) { + if (typeof data.skipped !== "boolean") { + const err113 = { + instancePath: instancePath + "/skipped", + schemaPath: "#/properties/skipped/type", keyword: "type", - params: { type: "array" }, - message: "must be array", + params: { type: "boolean" }, + message: "must be boolean", }; if (vErrors === null) { - vErrors = [err2]; + vErrors = [err113]; } else { - vErrors.push(err2); + vErrors.push(err113); } errors++; } } - if (data.name !== undefined) { - if (typeof data.name !== "string") { - const err3 = { - instancePath: instancePath + "/name", - schemaPath: "#/properties/name/type", + if (data.stage !== undefined) { + let data39 = data.stage; + const _errs147 = errors; + let valid22 = false; + const _errs148 = errors; + if (typeof data39 !== "string") { + const err114 = { + instancePath: instancePath + "/stage", + schemaPath: "#/properties/stage/anyOf/0/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err3]; + vErrors = [err114]; } else { - vErrors.push(err3); + vErrors.push(err114); } errors++; } - } - if (data.nodes !== undefined) { - let data3 = data.nodes; - if (Array.isArray(data3)) { - const len1 = data3.length; - for (let i1 = 0; i1 < len1; i1++) { - if ( - !validate314(data3[i1], { - instancePath: instancePath + "/nodes/" + i1, - parentData: data3, - parentDataProperty: i1, - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate314.errors : vErrors.concat(validate314.errors); - errors = vErrors.length; - } - } - } else { - const err4 = { - instancePath: instancePath + "/nodes", - schemaPath: "#/properties/nodes/type", + var _valid15 = _errs148 === errors; + valid22 = valid22 || _valid15; + const _errs150 = errors; + if (data39 !== null) { + const err115 = { + instancePath: instancePath + "/stage", + schemaPath: "#/properties/stage/anyOf/1/type", keyword: "type", - params: { type: "array" }, - message: "must be array", + params: { type: "null" }, + message: "must be null", }; if (vErrors === null) { - vErrors = [err4]; + vErrors = [err115]; } else { - vErrors.push(err4); + vErrors.push(err115); + } + errors++; + } + var _valid15 = _errs150 === errors; + valid22 = valid22 || _valid15; + if (!valid22) { + const err116 = { + instancePath: instancePath + "/stage", + schemaPath: "#/properties/stage/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err116]; + } else { + vErrors.push(err116); } errors++; + } else { + errors = _errs147; + if (vErrors !== null) { + if (_errs147) { + vErrors.length = _errs147; + } else { + vErrors = null; + } + } } } - if (data.trigger !== undefined) { - let data5 = data.trigger; - const _errs11 = errors; - let valid5 = false; - const _errs12 = errors; - if ( - !validate343(data5, { - instancePath: instancePath + "/trigger", - parentData: data, - parentDataProperty: "trigger", - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate343.errors : vErrors.concat(validate343.errors); - errors = vErrors.length; + if (data.started_at !== undefined) { + let data40 = data.started_at; + const _errs153 = errors; + let valid23 = false; + const _errs154 = errors; + if (typeof data40 !== "string") { + const err117 = { + instancePath: instancePath + "/started_at", + schemaPath: "#/properties/started_at/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err117]; + } else { + vErrors.push(err117); + } + errors++; } - var _valid0 = _errs12 === errors; - valid5 = valid5 || _valid0; - const _errs13 = errors; - if (data5 !== null) { - const err5 = { - instancePath: instancePath + "/trigger", - schemaPath: "#/properties/trigger/anyOf/1/type", + var _valid16 = _errs154 === errors; + valid23 = valid23 || _valid16; + const _errs156 = errors; + if (data40 !== null) { + const err118 = { + instancePath: instancePath + "/started_at", + schemaPath: "#/properties/started_at/anyOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null", }; if (vErrors === null) { - vErrors = [err5]; + vErrors = [err118]; } else { - vErrors.push(err5); + vErrors.push(err118); } errors++; } - var _valid0 = _errs13 === errors; - valid5 = valid5 || _valid0; - if (!valid5) { - const err6 = { - instancePath: instancePath + "/trigger", - schemaPath: "#/properties/trigger/anyOf", + var _valid16 = _errs156 === errors; + valid23 = valid23 || _valid16; + if (!valid23) { + const err119 = { + instancePath: instancePath + "/started_at", + schemaPath: "#/properties/started_at/anyOf", keyword: "anyOf", params: {}, message: "must match a schema in anyOf", }; if (vErrors === null) { - vErrors = [err6]; + vErrors = [err119]; } else { - vErrors.push(err6); + vErrors.push(err119); } errors++; } else { - errors = _errs11; + errors = _errs153; if (vErrors !== null) { - if (_errs11) { - vErrors.length = _errs11; + if (_errs153) { + vErrors.length = _errs153; } else { vErrors = null; } } } } - } else { - const err7 = { - instancePath, - schemaPath: "#/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; - } - validate288.errors = vErrors; - return errors === 0; -} -validate288.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -export const validatePluginCatalog = validate409; -const schema271 = { - $defs: { - PluginCatalogRecord: { - additionalProperties: false, - properties: { - compatible: { title: "Compatible", type: "boolean" }, - dander_specifier: { title: "Dander Specifier", type: "string" }, - description: { title: "Description", type: "string" }, - display_name: { title: "Display Name", type: "string" }, - distribution: { title: "Distribution", type: "string" }, - documentation_url: { title: "Documentation Url", type: "string" }, - id: { title: "Id", type: "string" }, - installed: { title: "Installed", type: "boolean" }, - installed_version: { - anyOf: [{ type: "string" }, { type: "null" }], - default: null, - title: "Installed Version", - }, - pypi_url: { title: "Pypi Url", type: "string" }, - repository_url: { title: "Repository Url", type: "string" }, - support_status: { title: "Support Status", type: "string" }, - validation_status: { title: "Validation Status", type: "string" }, - version: { title: "Version", type: "string" }, - }, - required: [ - "id", - "display_name", - "description", - "distribution", - "version", - "dander_specifier", - "compatible", - "support_status", - "validation_status", - "documentation_url", - "pypi_url", - "repository_url", - "installed", - ], - title: "PluginCatalogRecord", - type: "object", - }, - }, - $id: "urn:dander:control:contracts:v1:plugin-catalog", - $schema: "https://json-schema.org/draft/2020-12/schema", - additionalProperties: false, - properties: { - connectors: { - items: { $ref: "#/$defs/PluginCatalogRecord" }, - title: "Connectors", - type: "array", - }, - dander_version: { title: "Dander Version", type: "string" }, - schema_version: { const: 1, default: 1, title: "Schema Version", type: "integer" }, - }, - required: ["dander_version"], - title: "PluginCatalogResponse", - type: "object", -}; -const schema272 = { - additionalProperties: false, - properties: { - compatible: { title: "Compatible", type: "boolean" }, - dander_specifier: { title: "Dander Specifier", type: "string" }, - description: { title: "Description", type: "string" }, - display_name: { title: "Display Name", type: "string" }, - distribution: { title: "Distribution", type: "string" }, - documentation_url: { title: "Documentation Url", type: "string" }, - id: { title: "Id", type: "string" }, - installed: { title: "Installed", type: "boolean" }, - installed_version: { - anyOf: [{ type: "string" }, { type: "null" }], - default: null, - title: "Installed Version", - }, - pypi_url: { title: "Pypi Url", type: "string" }, - repository_url: { title: "Repository Url", type: "string" }, - support_status: { title: "Support Status", type: "string" }, - validation_status: { title: "Validation Status", type: "string" }, - version: { title: "Version", type: "string" }, - }, - required: [ - "id", - "display_name", - "description", - "distribution", - "version", - "dander_specifier", - "compatible", - "support_status", - "validation_status", - "documentation_url", - "pypi_url", - "repository_url", - "installed", - ], - title: "PluginCatalogRecord", - type: "object", -}; - -function validate409( - data, - { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, -) { - /*# sourceURL="urn:dander:control:contracts:v1:plugin-catalog" */ let vErrors = null; - let errors = 0; - const evaluated0 = validate409.evaluated; - if (evaluated0.dynamicProps) { - evaluated0.props = undefined; - } - if (evaluated0.dynamicItems) { - evaluated0.items = undefined; - } - if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.dander_version === undefined) { - const err0 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "dander_version" }, - message: "must have required property '" + "dander_version" + "'", - }; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); + if (data.state !== undefined) { + let data41 = data.state; + if (typeof data41 !== "string") { + const err120 = { + instancePath: instancePath + "/state", + schemaPath: "#/$defs/RunState/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err120]; + } else { + vErrors.push(err120); + } + errors++; } - errors++; - } - for (const key0 in data) { - if (!(key0 === "connectors" || key0 === "dander_version" || key0 === "schema_version")) { - const err1 = { - instancePath, - schemaPath: "#/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key0 }, - message: "must NOT have additional properties", + if (!( + data41 === "queued" || + data41 === "running" || + data41 === "succeeded" || + data41 === "failed" || + data41 === "canceling" || + data41 === "canceled" || + data41 === "retrying" + )) { + const err121 = { + instancePath: instancePath + "/state", + schemaPath: "#/$defs/RunState/enum", + keyword: "enum", + params: { allowedValues: schema302.enum }, + message: "must be equal to one of the allowed values", }; if (vErrors === null) { - vErrors = [err1]; + vErrors = [err121]; } else { - vErrors.push(err1); + vErrors.push(err121); } errors++; } } - if (data.connectors !== undefined) { - let data0 = data.connectors; - if (Array.isArray(data0)) { - const len0 = data0.length; - for (let i0 = 0; i0 < len0; i0++) { - let data1 = data0[i0]; - if (data1 && typeof data1 == "object" && !Array.isArray(data1)) { - if (data1.id === undefined) { - const err2 = { - instancePath: instancePath + "/connectors/" + i0, - schemaPath: "#/$defs/PluginCatalogRecord/required", - keyword: "required", - params: { missingProperty: "id" }, - message: "must have required property '" + "id" + "'", + if (data.telemetry !== undefined) { + let data42 = data.telemetry; + const _errs162 = errors; + let valid25 = false; + const _errs163 = errors; + if (data42 && typeof data42 == "object" && !Array.isArray(data42)) { + if (data42.duration_ms === undefined) { + const err122 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "duration_ms" }, + message: "must have required property '" + "duration_ms" + "'", + }; + if (vErrors === null) { + vErrors = [err122]; + } else { + vErrors.push(err122); + } + errors++; + } + if (data42.operation_count === undefined) { + const err123 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "operation_count" }, + message: "must have required property '" + "operation_count" + "'", + }; + if (vErrors === null) { + vErrors = [err123]; + } else { + vErrors.push(err123); + } + errors++; + } + if (data42.retry_count === undefined) { + const err124 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "retry_count" }, + message: "must have required property '" + "retry_count" + "'", + }; + if (vErrors === null) { + vErrors = [err124]; + } else { + vErrors.push(err124); + } + errors++; + } + if (data42.rows_read === undefined) { + const err125 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "rows_read" }, + message: "must have required property '" + "rows_read" + "'", + }; + if (vErrors === null) { + vErrors = [err125]; + } else { + vErrors.push(err125); + } + errors++; + } + if (data42.rows_written === undefined) { + const err126 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "rows_written" }, + message: "must have required property '" + "rows_written" + "'", + }; + if (vErrors === null) { + vErrors = [err126]; + } else { + vErrors.push(err126); + } + errors++; + } + if (data42.rows_affected === undefined) { + const err127 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "rows_affected" }, + message: "must have required property '" + "rows_affected" + "'", + }; + if (vErrors === null) { + vErrors = [err127]; + } else { + vErrors.push(err127); + } + errors++; + } + if (data42.bytes_read === undefined) { + const err128 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "bytes_read" }, + message: "must have required property '" + "bytes_read" + "'", + }; + if (vErrors === null) { + vErrors = [err128]; + } else { + vErrors.push(err128); + } + errors++; + } + if (data42.bytes_written === undefined) { + const err129 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "bytes_written" }, + message: "must have required property '" + "bytes_written" + "'", + }; + if (vErrors === null) { + vErrors = [err129]; + } else { + vErrors.push(err129); + } + errors++; + } + if (data42.bytes_processed === undefined) { + const err130 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "bytes_processed" }, + message: "must have required property '" + "bytes_processed" + "'", + }; + if (vErrors === null) { + vErrors = [err130]; + } else { + vErrors.push(err130); + } + errors++; + } + if (data42.bytes_billed === undefined) { + const err131 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "bytes_billed" }, + message: "must have required property '" + "bytes_billed" + "'", + }; + if (vErrors === null) { + vErrors = [err131]; + } else { + vErrors.push(err131); + } + errors++; + } + if (data42.queue_duration_ms === undefined) { + const err132 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "queue_duration_ms" }, + message: "must have required property '" + "queue_duration_ms" + "'", + }; + if (vErrors === null) { + vErrors = [err132]; + } else { + vErrors.push(err132); + } + errors++; + } + if (data42.execution_duration_ms === undefined) { + const err133 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "execution_duration_ms" }, + message: "must have required property '" + "execution_duration_ms" + "'", + }; + if (vErrors === null) { + vErrors = [err133]; + } else { + vErrors.push(err133); + } + errors++; + } + if (data42.spill_bytes === undefined) { + const err134 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "spill_bytes" }, + message: "must have required property '" + "spill_bytes" + "'", + }; + if (vErrors === null) { + vErrors = [err134]; + } else { + vErrors.push(err134); + } + errors++; + } + for (const key4 in data42) { + if (!func1.call(schema303.properties, key4)) { + const err135 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key4 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err135]; + } else { + vErrors.push(err135); + } + errors++; + } + } + if (data42.bytes_billed !== undefined) { + let data43 = data42.bytes_billed; + if (!(typeof data43 == "number" && !(data43 % 1) && !isNaN(data43) && isFinite(data43))) { + const err136 = { + instancePath: instancePath + "/telemetry/bytes_billed", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_billed/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err136]; + } else { + vErrors.push(err136); + } + errors++; + } + if (typeof data43 == "number" && isFinite(data43)) { + if (data43 > 9223372036854776000 || isNaN(data43)) { + const err137 = { + instancePath: instancePath + "/telemetry/bytes_billed", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_billed/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", }; if (vErrors === null) { - vErrors = [err2]; + vErrors = [err137]; } else { - vErrors.push(err2); + vErrors.push(err137); } errors++; } - if (data1.display_name === undefined) { - const err3 = { - instancePath: instancePath + "/connectors/" + i0, - schemaPath: "#/$defs/PluginCatalogRecord/required", - keyword: "required", - params: { missingProperty: "display_name" }, - message: "must have required property '" + "display_name" + "'", + if (data43 < 0 || isNaN(data43)) { + const err138 = { + instancePath: instancePath + "/telemetry/bytes_billed", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_billed/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", }; if (vErrors === null) { - vErrors = [err3]; + vErrors = [err138]; } else { - vErrors.push(err3); + vErrors.push(err138); } errors++; } - if (data1.description === undefined) { - const err4 = { - instancePath: instancePath + "/connectors/" + i0, - schemaPath: "#/$defs/PluginCatalogRecord/required", - keyword: "required", - params: { missingProperty: "description" }, - message: "must have required property '" + "description" + "'", + } + } + if (data42.bytes_processed !== undefined) { + let data44 = data42.bytes_processed; + if (!(typeof data44 == "number" && !(data44 % 1) && !isNaN(data44) && isFinite(data44))) { + const err139 = { + instancePath: instancePath + "/telemetry/bytes_processed", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_processed/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err139]; + } else { + vErrors.push(err139); + } + errors++; + } + if (typeof data44 == "number" && isFinite(data44)) { + if (data44 > 9223372036854776000 || isNaN(data44)) { + const err140 = { + instancePath: instancePath + "/telemetry/bytes_processed", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_processed/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", }; if (vErrors === null) { - vErrors = [err4]; + vErrors = [err140]; } else { - vErrors.push(err4); + vErrors.push(err140); } errors++; } - if (data1.distribution === undefined) { - const err5 = { - instancePath: instancePath + "/connectors/" + i0, - schemaPath: "#/$defs/PluginCatalogRecord/required", - keyword: "required", - params: { missingProperty: "distribution" }, - message: "must have required property '" + "distribution" + "'", + if (data44 < 0 || isNaN(data44)) { + const err141 = { + instancePath: instancePath + "/telemetry/bytes_processed", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_processed/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", }; if (vErrors === null) { - vErrors = [err5]; + vErrors = [err141]; } else { - vErrors.push(err5); + vErrors.push(err141); } errors++; } - if (data1.version === undefined) { - const err6 = { - instancePath: instancePath + "/connectors/" + i0, - schemaPath: "#/$defs/PluginCatalogRecord/required", - keyword: "required", - params: { missingProperty: "version" }, - message: "must have required property '" + "version" + "'", + } + } + if (data42.bytes_read !== undefined) { + let data45 = data42.bytes_read; + if (!(typeof data45 == "number" && !(data45 % 1) && !isNaN(data45) && isFinite(data45))) { + const err142 = { + instancePath: instancePath + "/telemetry/bytes_read", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_read/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err142]; + } else { + vErrors.push(err142); + } + errors++; + } + if (typeof data45 == "number" && isFinite(data45)) { + if (data45 > 9223372036854776000 || isNaN(data45)) { + const err143 = { + instancePath: instancePath + "/telemetry/bytes_read", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_read/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", }; if (vErrors === null) { - vErrors = [err6]; + vErrors = [err143]; } else { - vErrors.push(err6); + vErrors.push(err143); } errors++; } - if (data1.dander_specifier === undefined) { - const err7 = { - instancePath: instancePath + "/connectors/" + i0, - schemaPath: "#/$defs/PluginCatalogRecord/required", - keyword: "required", - params: { missingProperty: "dander_specifier" }, - message: "must have required property '" + "dander_specifier" + "'", + if (data45 < 0 || isNaN(data45)) { + const err144 = { + instancePath: instancePath + "/telemetry/bytes_read", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_read/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", }; if (vErrors === null) { - vErrors = [err7]; + vErrors = [err144]; } else { - vErrors.push(err7); + vErrors.push(err144); } errors++; } - if (data1.compatible === undefined) { - const err8 = { - instancePath: instancePath + "/connectors/" + i0, - schemaPath: "#/$defs/PluginCatalogRecord/required", - keyword: "required", - params: { missingProperty: "compatible" }, - message: "must have required property '" + "compatible" + "'", + } + } + if (data42.bytes_written !== undefined) { + let data46 = data42.bytes_written; + if (!(typeof data46 == "number" && !(data46 % 1) && !isNaN(data46) && isFinite(data46))) { + const err145 = { + instancePath: instancePath + "/telemetry/bytes_written", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_written/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err145]; + } else { + vErrors.push(err145); + } + errors++; + } + if (typeof data46 == "number" && isFinite(data46)) { + if (data46 > 9223372036854776000 || isNaN(data46)) { + const err146 = { + instancePath: instancePath + "/telemetry/bytes_written", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_written/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", }; if (vErrors === null) { - vErrors = [err8]; + vErrors = [err146]; } else { - vErrors.push(err8); + vErrors.push(err146); } errors++; } - if (data1.support_status === undefined) { - const err9 = { - instancePath: instancePath + "/connectors/" + i0, - schemaPath: "#/$defs/PluginCatalogRecord/required", - keyword: "required", - params: { missingProperty: "support_status" }, - message: "must have required property '" + "support_status" + "'", + if (data46 < 0 || isNaN(data46)) { + const err147 = { + instancePath: instancePath + "/telemetry/bytes_written", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_written/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", }; if (vErrors === null) { - vErrors = [err9]; + vErrors = [err147]; } else { - vErrors.push(err9); + vErrors.push(err147); } errors++; } - if (data1.validation_status === undefined) { - const err10 = { - instancePath: instancePath + "/connectors/" + i0, - schemaPath: "#/$defs/PluginCatalogRecord/required", - keyword: "required", - params: { missingProperty: "validation_status" }, - message: "must have required property '" + "validation_status" + "'", + } + } + if (data42.duration_ms !== undefined) { + let data47 = data42.duration_ms; + if (!(typeof data47 == "number" && !(data47 % 1) && !isNaN(data47) && isFinite(data47))) { + const err148 = { + instancePath: instancePath + "/telemetry/duration_ms", + schemaPath: "#/$defs/RunTelemetrySummary/properties/duration_ms/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err148]; + } else { + vErrors.push(err148); + } + errors++; + } + if (typeof data47 == "number" && isFinite(data47)) { + if (data47 > 9223372036854776000 || isNaN(data47)) { + const err149 = { + instancePath: instancePath + "/telemetry/duration_ms", + schemaPath: "#/$defs/RunTelemetrySummary/properties/duration_ms/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", }; if (vErrors === null) { - vErrors = [err10]; + vErrors = [err149]; } else { - vErrors.push(err10); + vErrors.push(err149); } errors++; } - if (data1.documentation_url === undefined) { - const err11 = { - instancePath: instancePath + "/connectors/" + i0, - schemaPath: "#/$defs/PluginCatalogRecord/required", - keyword: "required", - params: { missingProperty: "documentation_url" }, - message: "must have required property '" + "documentation_url" + "'", + if (data47 < 0 || isNaN(data47)) { + const err150 = { + instancePath: instancePath + "/telemetry/duration_ms", + schemaPath: "#/$defs/RunTelemetrySummary/properties/duration_ms/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", }; if (vErrors === null) { - vErrors = [err11]; + vErrors = [err150]; } else { - vErrors.push(err11); + vErrors.push(err150); } errors++; } - if (data1.pypi_url === undefined) { - const err12 = { - instancePath: instancePath + "/connectors/" + i0, - schemaPath: "#/$defs/PluginCatalogRecord/required", - keyword: "required", - params: { missingProperty: "pypi_url" }, - message: "must have required property '" + "pypi_url" + "'", + } + } + if (data42.execution_duration_ms !== undefined) { + let data48 = data42.execution_duration_ms; + if (!(typeof data48 == "number" && !(data48 % 1) && !isNaN(data48) && isFinite(data48))) { + const err151 = { + instancePath: instancePath + "/telemetry/execution_duration_ms", + schemaPath: "#/$defs/RunTelemetrySummary/properties/execution_duration_ms/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err151]; + } else { + vErrors.push(err151); + } + errors++; + } + if (typeof data48 == "number" && isFinite(data48)) { + if (data48 > 9223372036854776000 || isNaN(data48)) { + const err152 = { + instancePath: instancePath + "/telemetry/execution_duration_ms", + schemaPath: "#/$defs/RunTelemetrySummary/properties/execution_duration_ms/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", }; if (vErrors === null) { - vErrors = [err12]; + vErrors = [err152]; } else { - vErrors.push(err12); + vErrors.push(err152); } errors++; } - if (data1.repository_url === undefined) { - const err13 = { - instancePath: instancePath + "/connectors/" + i0, - schemaPath: "#/$defs/PluginCatalogRecord/required", - keyword: "required", - params: { missingProperty: "repository_url" }, - message: "must have required property '" + "repository_url" + "'", + if (data48 < 0 || isNaN(data48)) { + const err153 = { + instancePath: instancePath + "/telemetry/execution_duration_ms", + schemaPath: "#/$defs/RunTelemetrySummary/properties/execution_duration_ms/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", }; if (vErrors === null) { - vErrors = [err13]; + vErrors = [err153]; } else { - vErrors.push(err13); + vErrors.push(err153); } errors++; } - if (data1.installed === undefined) { - const err14 = { - instancePath: instancePath + "/connectors/" + i0, - schemaPath: "#/$defs/PluginCatalogRecord/required", - keyword: "required", - params: { missingProperty: "installed" }, - message: "must have required property '" + "installed" + "'", + } + } + if (data42.operation_count !== undefined) { + let data49 = data42.operation_count; + if (!(typeof data49 == "number" && !(data49 % 1) && !isNaN(data49) && isFinite(data49))) { + const err154 = { + instancePath: instancePath + "/telemetry/operation_count", + schemaPath: "#/$defs/RunTelemetrySummary/properties/operation_count/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err154]; + } else { + vErrors.push(err154); + } + errors++; + } + if (typeof data49 == "number" && isFinite(data49)) { + if (data49 > 9223372036854776000 || isNaN(data49)) { + const err155 = { + instancePath: instancePath + "/telemetry/operation_count", + schemaPath: "#/$defs/RunTelemetrySummary/properties/operation_count/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", }; if (vErrors === null) { - vErrors = [err14]; + vErrors = [err155]; } else { - vErrors.push(err14); + vErrors.push(err155); } errors++; } - for (const key1 in data1) { - if (!func1.call(schema272.properties, key1)) { - const err15 = { - instancePath: instancePath + "/connectors/" + i0, - schemaPath: "#/$defs/PluginCatalogRecord/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key1 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err15]; - } else { - vErrors.push(err15); - } - errors++; - } - } - if (data1.compatible !== undefined) { - if (typeof data1.compatible !== "boolean") { - const err16 = { - instancePath: instancePath + "/connectors/" + i0 + "/compatible", - schemaPath: "#/$defs/PluginCatalogRecord/properties/compatible/type", - keyword: "type", - params: { type: "boolean" }, - message: "must be boolean", - }; - if (vErrors === null) { - vErrors = [err16]; - } else { - vErrors.push(err16); - } - errors++; + if (data49 < 0 || isNaN(data49)) { + const err156 = { + instancePath: instancePath + "/telemetry/operation_count", + schemaPath: "#/$defs/RunTelemetrySummary/properties/operation_count/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err156]; + } else { + vErrors.push(err156); } + errors++; } - if (data1.dander_specifier !== undefined) { - if (typeof data1.dander_specifier !== "string") { - const err17 = { - instancePath: instancePath + "/connectors/" + i0 + "/dander_specifier", - schemaPath: "#/$defs/PluginCatalogRecord/properties/dander_specifier/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err17]; - } else { - vErrors.push(err17); - } - errors++; - } + } + } + if (data42.queue_duration_ms !== undefined) { + let data50 = data42.queue_duration_ms; + if (!(typeof data50 == "number" && !(data50 % 1) && !isNaN(data50) && isFinite(data50))) { + const err157 = { + instancePath: instancePath + "/telemetry/queue_duration_ms", + schemaPath: "#/$defs/RunTelemetrySummary/properties/queue_duration_ms/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err157]; + } else { + vErrors.push(err157); } - if (data1.description !== undefined) { - if (typeof data1.description !== "string") { - const err18 = { - instancePath: instancePath + "/connectors/" + i0 + "/description", - schemaPath: "#/$defs/PluginCatalogRecord/properties/description/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err18]; - } else { - vErrors.push(err18); - } - errors++; + errors++; + } + if (typeof data50 == "number" && isFinite(data50)) { + if (data50 > 9223372036854776000 || isNaN(data50)) { + const err158 = { + instancePath: instancePath + "/telemetry/queue_duration_ms", + schemaPath: "#/$defs/RunTelemetrySummary/properties/queue_duration_ms/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err158]; + } else { + vErrors.push(err158); } + errors++; } - if (data1.display_name !== undefined) { - if (typeof data1.display_name !== "string") { - const err19 = { - instancePath: instancePath + "/connectors/" + i0 + "/display_name", - schemaPath: "#/$defs/PluginCatalogRecord/properties/display_name/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err19]; - } else { - vErrors.push(err19); - } - errors++; + if (data50 < 0 || isNaN(data50)) { + const err159 = { + instancePath: instancePath + "/telemetry/queue_duration_ms", + schemaPath: "#/$defs/RunTelemetrySummary/properties/queue_duration_ms/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err159]; + } else { + vErrors.push(err159); } + errors++; } - if (data1.distribution !== undefined) { - if (typeof data1.distribution !== "string") { - const err20 = { - instancePath: instancePath + "/connectors/" + i0 + "/distribution", - schemaPath: "#/$defs/PluginCatalogRecord/properties/distribution/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err20]; - } else { - vErrors.push(err20); - } - errors++; - } + } + } + if (data42.retry_count !== undefined) { + let data51 = data42.retry_count; + if (!(typeof data51 == "number" && !(data51 % 1) && !isNaN(data51) && isFinite(data51))) { + const err160 = { + instancePath: instancePath + "/telemetry/retry_count", + schemaPath: "#/$defs/RunTelemetrySummary/properties/retry_count/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err160]; + } else { + vErrors.push(err160); } - if (data1.documentation_url !== undefined) { - if (typeof data1.documentation_url !== "string") { - const err21 = { - instancePath: instancePath + "/connectors/" + i0 + "/documentation_url", - schemaPath: "#/$defs/PluginCatalogRecord/properties/documentation_url/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err21]; - } else { - vErrors.push(err21); - } - errors++; + errors++; + } + if (typeof data51 == "number" && isFinite(data51)) { + if (data51 > 9223372036854776000 || isNaN(data51)) { + const err161 = { + instancePath: instancePath + "/telemetry/retry_count", + schemaPath: "#/$defs/RunTelemetrySummary/properties/retry_count/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err161]; + } else { + vErrors.push(err161); } + errors++; } - if (data1.id !== undefined) { - if (typeof data1.id !== "string") { - const err22 = { - instancePath: instancePath + "/connectors/" + i0 + "/id", - schemaPath: "#/$defs/PluginCatalogRecord/properties/id/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err22]; - } else { - vErrors.push(err22); - } - errors++; + if (data51 < 0 || isNaN(data51)) { + const err162 = { + instancePath: instancePath + "/telemetry/retry_count", + schemaPath: "#/$defs/RunTelemetrySummary/properties/retry_count/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err162]; + } else { + vErrors.push(err162); } + errors++; } - if (data1.installed !== undefined) { - if (typeof data1.installed !== "boolean") { - const err23 = { - instancePath: instancePath + "/connectors/" + i0 + "/installed", - schemaPath: "#/$defs/PluginCatalogRecord/properties/installed/type", - keyword: "type", - params: { type: "boolean" }, - message: "must be boolean", - }; - if (vErrors === null) { - vErrors = [err23]; - } else { - vErrors.push(err23); - } - errors++; - } + } + } + if (data42.rows_affected !== undefined) { + let data52 = data42.rows_affected; + if (!(typeof data52 == "number" && !(data52 % 1) && !isNaN(data52) && isFinite(data52))) { + const err163 = { + instancePath: instancePath + "/telemetry/rows_affected", + schemaPath: "#/$defs/RunTelemetrySummary/properties/rows_affected/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err163]; + } else { + vErrors.push(err163); } - if (data1.installed_version !== undefined) { - let data10 = data1.installed_version; - const _errs25 = errors; - let valid5 = false; - const _errs26 = errors; - if (typeof data10 !== "string") { - const err24 = { - instancePath: instancePath + "/connectors/" + i0 + "/installed_version", - schemaPath: - "#/$defs/PluginCatalogRecord/properties/installed_version/anyOf/0/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err24]; - } else { - vErrors.push(err24); - } - errors++; - } - var _valid0 = _errs26 === errors; - valid5 = valid5 || _valid0; - const _errs28 = errors; - if (data10 !== null) { - const err25 = { - instancePath: instancePath + "/connectors/" + i0 + "/installed_version", - schemaPath: - "#/$defs/PluginCatalogRecord/properties/installed_version/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err25]; - } else { - vErrors.push(err25); - } - errors++; - } - var _valid0 = _errs28 === errors; - valid5 = valid5 || _valid0; - if (!valid5) { - const err26 = { - instancePath: instancePath + "/connectors/" + i0 + "/installed_version", - schemaPath: "#/$defs/PluginCatalogRecord/properties/installed_version/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; - if (vErrors === null) { - vErrors = [err26]; - } else { - vErrors.push(err26); - } - errors++; + errors++; + } + if (typeof data52 == "number" && isFinite(data52)) { + if (data52 > 9223372036854776000 || isNaN(data52)) { + const err164 = { + instancePath: instancePath + "/telemetry/rows_affected", + schemaPath: "#/$defs/RunTelemetrySummary/properties/rows_affected/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err164]; } else { - errors = _errs25; - if (vErrors !== null) { - if (_errs25) { - vErrors.length = _errs25; - } else { - vErrors = null; - } - } + vErrors.push(err164); } + errors++; } - if (data1.pypi_url !== undefined) { - if (typeof data1.pypi_url !== "string") { - const err27 = { - instancePath: instancePath + "/connectors/" + i0 + "/pypi_url", - schemaPath: "#/$defs/PluginCatalogRecord/properties/pypi_url/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err27]; - } else { - vErrors.push(err27); - } - errors++; + if (data52 < 0 || isNaN(data52)) { + const err165 = { + instancePath: instancePath + "/telemetry/rows_affected", + schemaPath: "#/$defs/RunTelemetrySummary/properties/rows_affected/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err165]; + } else { + vErrors.push(err165); } + errors++; } - if (data1.repository_url !== undefined) { - if (typeof data1.repository_url !== "string") { - const err28 = { - instancePath: instancePath + "/connectors/" + i0 + "/repository_url", - schemaPath: "#/$defs/PluginCatalogRecord/properties/repository_url/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err28]; - } else { - vErrors.push(err28); - } - errors++; + } + } + if (data42.rows_read !== undefined) { + let data53 = data42.rows_read; + if (!(typeof data53 == "number" && !(data53 % 1) && !isNaN(data53) && isFinite(data53))) { + const err166 = { + instancePath: instancePath + "/telemetry/rows_read", + schemaPath: "#/$defs/RunTelemetrySummary/properties/rows_read/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err166]; + } else { + vErrors.push(err166); + } + errors++; + } + if (typeof data53 == "number" && isFinite(data53)) { + if (data53 > 9223372036854776000 || isNaN(data53)) { + const err167 = { + instancePath: instancePath + "/telemetry/rows_read", + schemaPath: "#/$defs/RunTelemetrySummary/properties/rows_read/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err167]; + } else { + vErrors.push(err167); } + errors++; } - if (data1.support_status !== undefined) { - if (typeof data1.support_status !== "string") { - const err29 = { - instancePath: instancePath + "/connectors/" + i0 + "/support_status", - schemaPath: "#/$defs/PluginCatalogRecord/properties/support_status/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err29]; - } else { - vErrors.push(err29); - } - errors++; + if (data53 < 0 || isNaN(data53)) { + const err168 = { + instancePath: instancePath + "/telemetry/rows_read", + schemaPath: "#/$defs/RunTelemetrySummary/properties/rows_read/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err168]; + } else { + vErrors.push(err168); } + errors++; } - if (data1.validation_status !== undefined) { - if (typeof data1.validation_status !== "string") { - const err30 = { - instancePath: instancePath + "/connectors/" + i0 + "/validation_status", - schemaPath: "#/$defs/PluginCatalogRecord/properties/validation_status/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err30]; - } else { - vErrors.push(err30); - } - errors++; + } + } + if (data42.rows_written !== undefined) { + let data54 = data42.rows_written; + if (!(typeof data54 == "number" && !(data54 % 1) && !isNaN(data54) && isFinite(data54))) { + const err169 = { + instancePath: instancePath + "/telemetry/rows_written", + schemaPath: "#/$defs/RunTelemetrySummary/properties/rows_written/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err169]; + } else { + vErrors.push(err169); + } + errors++; + } + if (typeof data54 == "number" && isFinite(data54)) { + if (data54 > 9223372036854776000 || isNaN(data54)) { + const err170 = { + instancePath: instancePath + "/telemetry/rows_written", + schemaPath: "#/$defs/RunTelemetrySummary/properties/rows_written/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err170]; + } else { + vErrors.push(err170); } + errors++; } - if (data1.version !== undefined) { - if (typeof data1.version !== "string") { - const err31 = { - instancePath: instancePath + "/connectors/" + i0 + "/version", - schemaPath: "#/$defs/PluginCatalogRecord/properties/version/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err31]; - } else { - vErrors.push(err31); - } - errors++; + if (data54 < 0 || isNaN(data54)) { + const err171 = { + instancePath: instancePath + "/telemetry/rows_written", + schemaPath: "#/$defs/RunTelemetrySummary/properties/rows_written/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err171]; + } else { + vErrors.push(err171); } + errors++; } - } else { - const err32 = { - instancePath: instancePath + "/connectors/" + i0, - schemaPath: "#/$defs/PluginCatalogRecord/type", + } + } + if (data42.spill_bytes !== undefined) { + let data55 = data42.spill_bytes; + if (!(typeof data55 == "number" && !(data55 % 1) && !isNaN(data55) && isFinite(data55))) { + const err172 = { + instancePath: instancePath + "/telemetry/spill_bytes", + schemaPath: "#/$defs/RunTelemetrySummary/properties/spill_bytes/type", keyword: "type", - params: { type: "object" }, - message: "must be object", + params: { type: "integer" }, + message: "must be integer", }; if (vErrors === null) { - vErrors = [err32]; + vErrors = [err172]; } else { - vErrors.push(err32); + vErrors.push(err172); } errors++; } + if (typeof data55 == "number" && isFinite(data55)) { + if (data55 > 9223372036854776000 || isNaN(data55)) { + const err173 = { + instancePath: instancePath + "/telemetry/spill_bytes", + schemaPath: "#/$defs/RunTelemetrySummary/properties/spill_bytes/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err173]; + } else { + vErrors.push(err173); + } + errors++; + } + if (data55 < 0 || isNaN(data55)) { + const err174 = { + instancePath: instancePath + "/telemetry/spill_bytes", + schemaPath: "#/$defs/RunTelemetrySummary/properties/spill_bytes/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err174]; + } else { + vErrors.push(err174); + } + errors++; + } + } } } else { - const err33 = { - instancePath: instancePath + "/connectors", - schemaPath: "#/properties/connectors/type", + const err175 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err175]; + } else { + vErrors.push(err175); + } + errors++; + } + var _valid17 = _errs163 === errors; + valid25 = valid25 || _valid17; + const _errs193 = errors; + if (data42 !== null) { + const err176 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/properties/telemetry/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err176]; + } else { + vErrors.push(err176); + } + errors++; + } + var _valid17 = _errs193 === errors; + valid25 = valid25 || _valid17; + if (!valid25) { + const err177 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/properties/telemetry/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err177]; + } else { + vErrors.push(err177); + } + errors++; + } else { + errors = _errs162; + if (vErrors !== null) { + if (_errs162) { + vErrors.length = _errs162; + } else { + vErrors = null; + } + } + } + } + } else { + const err178 = { + instancePath, + schemaPath: "#/type", + keyword: "type", + params: { type: "object" }, + message: "must be object", + }; + if (vErrors === null) { + vErrors = [err178]; + } else { + vErrors.push(err178); + } + errors++; + } + validate429.errors = vErrors; + return errors === 0; +} +validate429.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; + +function validate428( + data, + { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, +) { + /*# sourceURL="urn:dander:control:contracts:v1:run-page" */ let vErrors = null; + let errors = 0; + const evaluated0 = validate428.evaluated; + if (evaluated0.dynamicProps) { + evaluated0.props = undefined; + } + if (evaluated0.dynamicItems) { + evaluated0.items = undefined; + } + if (data && typeof data == "object" && !Array.isArray(data)) { + if (data.items === undefined) { + const err0 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "items" }, + message: "must have required property '" + "items" + "'", + }; + if (vErrors === null) { + vErrors = [err0]; + } else { + vErrors.push(err0); + } + errors++; + } + for (const key0 in data) { + if (!(key0 === "items" || key0 === "next_cursor")) { + const err1 = { + instancePath, + schemaPath: "#/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key0 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } + } + if (data.items !== undefined) { + let data0 = data.items; + if (Array.isArray(data0)) { + if (data0.length > 100) { + const err2 = { + instancePath: instancePath + "/items", + schemaPath: "#/properties/items/maxItems", + keyword: "maxItems", + params: { limit: 100 }, + message: "must NOT have more than 100 items", + }; + if (vErrors === null) { + vErrors = [err2]; + } else { + vErrors.push(err2); + } + errors++; + } + const len0 = data0.length; + for (let i0 = 0; i0 < len0; i0++) { + if ( + !validate429(data0[i0], { + instancePath: instancePath + "/items/" + i0, + parentData: data0, + parentDataProperty: i0, + rootData, + dynamicAnchors, + }) + ) { + vErrors = vErrors === null ? validate429.errors : vErrors.concat(validate429.errors); + errors = vErrors.length; + } + } + } else { + const err3 = { + instancePath: instancePath + "/items", + schemaPath: "#/properties/items/type", keyword: "type", params: { type: "array" }, message: "must be array", }; if (vErrors === null) { - vErrors = [err33]; + vErrors = [err3]; } else { - vErrors.push(err33); + vErrors.push(err3); } errors++; } } - if (data.dander_version !== undefined) { - if (typeof data.dander_version !== "string") { - const err34 = { - instancePath: instancePath + "/dander_version", - schemaPath: "#/properties/dander_version/type", + if (data.next_cursor !== undefined) { + let data2 = data.next_cursor; + const _errs6 = errors; + let valid3 = false; + const _errs7 = errors; + if (typeof data2 !== "string") { + const err4 = { + instancePath: instancePath + "/next_cursor", + schemaPath: "#/properties/next_cursor/anyOf/0/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err34]; + vErrors = [err4]; } else { - vErrors.push(err34); + vErrors.push(err4); } errors++; } - } - if (data.schema_version !== undefined) { - let data17 = data.schema_version; - if (!(typeof data17 == "number" && !(data17 % 1) && !isNaN(data17) && isFinite(data17))) { - const err35 = { - instancePath: instancePath + "/schema_version", - schemaPath: "#/properties/schema_version/type", + var _valid0 = _errs7 === errors; + valid3 = valid3 || _valid0; + const _errs9 = errors; + if (data2 !== null) { + const err5 = { + instancePath: instancePath + "/next_cursor", + schemaPath: "#/properties/next_cursor/anyOf/1/type", keyword: "type", - params: { type: "integer" }, - message: "must be integer", + params: { type: "null" }, + message: "must be null", }; if (vErrors === null) { - vErrors = [err35]; + vErrors = [err5]; } else { - vErrors.push(err35); + vErrors.push(err5); } errors++; } - if (1 !== data17) { - const err36 = { - instancePath: instancePath + "/schema_version", - schemaPath: "#/properties/schema_version/const", - keyword: "const", - params: { allowedValue: 1 }, - message: "must be equal to constant", + var _valid0 = _errs9 === errors; + valid3 = valid3 || _valid0; + if (!valid3) { + const err6 = { + instancePath: instancePath + "/next_cursor", + schemaPath: "#/properties/next_cursor/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", }; if (vErrors === null) { - vErrors = [err36]; + vErrors = [err6]; } else { - vErrors.push(err36); + vErrors.push(err6); } errors++; + } else { + errors = _errs6; + if (vErrors !== null) { + if (_errs6) { + vErrors.length = _errs6; + } else { + vErrors = null; + } + } } } } else { - const err37 = { + const err7 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -42767,61 +51534,38 @@ function validate409( message: "must be object", }; if (vErrors === null) { - vErrors = [err37]; + vErrors = [err7]; } else { - vErrors.push(err37); + vErrors.push(err7); } errors++; } - validate409.errors = vErrors; + validate428.errors = vErrors; return errors === 0; } -validate409.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate428.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -export const validateProjectList = validate410; -const schema273 = { - $defs: { - ProjectSummaryResponse: { - additionalProperties: false, - description: "One configured logical project, never a provider project payload.", - properties: { id: { title: "Id", type: "string" } }, - required: ["id"], - title: "ProjectSummaryResponse", - type: "object", - }, - }, - $id: "urn:dander:control:contracts:v1:project-list", +export const validateRunRequest = validate431; +const schema304 = { + $id: "urn:dander:control:contracts:v1:run-request", $schema: "https://json-schema.org/draft/2020-12/schema", additionalProperties: false, - description: "The bounded logical projects configured for this Dander installation.", properties: { - projects: { - items: { $ref: "#/$defs/ProjectSummaryResponse" }, - maxItems: 100, - title: "Projects", - type: "array", - }, + expected_revision: { title: "Expected Revision", type: "string" }, + idempotency_key: { maxLength: 128, minLength: 1, title: "Idempotency Key", type: "string" }, }, - required: ["projects"], - title: "ProjectListResponse", - type: "object", -}; -const schema274 = { - additionalProperties: false, - description: "One configured logical project, never a provider project payload.", - properties: { id: { title: "Id", type: "string" } }, - required: ["id"], - title: "ProjectSummaryResponse", + required: ["expected_revision", "idempotency_key"], + title: "RunRequest", type: "object", }; -function validate410( +function validate431( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { - /*# sourceURL="urn:dander:control:contracts:v1:project-list" */ let vErrors = null; + /*# sourceURL="urn:dander:control:contracts:v1:run-request" */ let vErrors = null; let errors = 0; - const evaluated0 = validate410.evaluated; + const evaluated0 = validate431.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -42829,13 +51573,13 @@ function validate410( evaluated0.items = undefined; } if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.projects === undefined) { + if (data.expected_revision === undefined) { const err0 = { instancePath, schemaPath: "#/required", keyword: "required", - params: { missingProperty: "projects" }, - message: "must have required property '" + "projects" + "'", + params: { missingProperty: "expected_revision" }, + message: "must have required property '" + "expected_revision" + "'", }; if (vErrors === null) { vErrors = [err0]; @@ -42844,9 +51588,24 @@ function validate410( } errors++; } + if (data.idempotency_key === undefined) { + const err1 = { + instancePath, + schemaPath: "#/required", + keyword: "required", + params: { missingProperty: "idempotency_key" }, + message: "must have required property '" + "idempotency_key" + "'", + }; + if (vErrors === null) { + vErrors = [err1]; + } else { + vErrors.push(err1); + } + errors++; + } for (const key0 in data) { - if (!(key0 === "projects")) { - const err1 = { + if (!(key0 === "expected_revision" || key0 === "idempotency_key")) { + const err2 = { instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", @@ -42854,118 +51613,81 @@ function validate410( message: "must NOT have additional properties", }; if (vErrors === null) { - vErrors = [err1]; + vErrors = [err2]; } else { - vErrors.push(err1); + vErrors.push(err2); } errors++; } } - if (data.projects !== undefined) { - let data0 = data.projects; - if (Array.isArray(data0)) { - if (data0.length > 100) { - const err2 = { - instancePath: instancePath + "/projects", - schemaPath: "#/properties/projects/maxItems", - keyword: "maxItems", - params: { limit: 100 }, - message: "must NOT have more than 100 items", + if (data.expected_revision !== undefined) { + if (typeof data.expected_revision !== "string") { + const err3 = { + instancePath: instancePath + "/expected_revision", + schemaPath: "#/properties/expected_revision/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err3]; + } else { + vErrors.push(err3); + } + errors++; + } + } + if (data.idempotency_key !== undefined) { + let data1 = data.idempotency_key; + if (typeof data1 === "string") { + if (func3(data1) > 128) { + const err4 = { + instancePath: instancePath + "/idempotency_key", + schemaPath: "#/properties/idempotency_key/maxLength", + keyword: "maxLength", + params: { limit: 128 }, + message: "must NOT have more than 128 characters", }; if (vErrors === null) { - vErrors = [err2]; + vErrors = [err4]; } else { - vErrors.push(err2); + vErrors.push(err4); } errors++; } - const len0 = data0.length; - for (let i0 = 0; i0 < len0; i0++) { - let data1 = data0[i0]; - if (data1 && typeof data1 == "object" && !Array.isArray(data1)) { - if (data1.id === undefined) { - const err3 = { - instancePath: instancePath + "/projects/" + i0, - schemaPath: "#/$defs/ProjectSummaryResponse/required", - keyword: "required", - params: { missingProperty: "id" }, - message: "must have required property '" + "id" + "'", - }; - if (vErrors === null) { - vErrors = [err3]; - } else { - vErrors.push(err3); - } - errors++; - } - for (const key1 in data1) { - if (!(key1 === "id")) { - const err4 = { - instancePath: instancePath + "/projects/" + i0, - schemaPath: "#/$defs/ProjectSummaryResponse/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key1 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err4]; - } else { - vErrors.push(err4); - } - errors++; - } - } - if (data1.id !== undefined) { - if (typeof data1.id !== "string") { - const err5 = { - instancePath: instancePath + "/projects/" + i0 + "/id", - schemaPath: "#/$defs/ProjectSummaryResponse/properties/id/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err5]; - } else { - vErrors.push(err5); - } - errors++; - } - } + if (func3(data1) < 1) { + const err5 = { + instancePath: instancePath + "/idempotency_key", + schemaPath: "#/properties/idempotency_key/minLength", + keyword: "minLength", + params: { limit: 1 }, + message: "must NOT have fewer than 1 characters", + }; + if (vErrors === null) { + vErrors = [err5]; } else { - const err6 = { - instancePath: instancePath + "/projects/" + i0, - schemaPath: "#/$defs/ProjectSummaryResponse/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", - }; - if (vErrors === null) { - vErrors = [err6]; - } else { - vErrors.push(err6); - } - errors++; + vErrors.push(err5); } - } - } else { - const err7 = { - instancePath: instancePath + "/projects", - schemaPath: "#/properties/projects/type", + errors++; + } + } else { + const err6 = { + instancePath: instancePath + "/idempotency_key", + schemaPath: "#/properties/idempotency_key/type", keyword: "type", - params: { type: "array" }, - message: "must be array", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err7]; + vErrors = [err6]; } else { - vErrors.push(err7); + vErrors.push(err6); } errors++; } } } else { - const err8 = { + const err7 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -42973,88 +51695,248 @@ function validate410( message: "must be object", }; if (vErrors === null) { - vErrors = [err8]; + vErrors = [err7]; } else { - vErrors.push(err8); + vErrors.push(err7); } errors++; } - validate410.errors = vErrors; + validate431.errors = vErrors; return errors === 0; } -validate410.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate431.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -export const validateRunPage = validate411; -const schema275 = { +export const validateRunStatus = validate432; +const schema305 = { $defs: { - RunState: { - enum: ["queued", "running", "succeeded", "failed", "canceling", "canceled", "retrying"], - title: "RunState", - type: "string", + GraphRepairWindow: { + additionalProperties: false, + description: "UTC calendar dates: start is inclusive and end is exclusive.", + properties: { + end_date: { format: "date", title: "End Date", type: "string" }, + start_date: { format: "date", title: "Start Date", type: "string" }, + }, + required: ["start_date", "end_date"], + title: "GraphRepairWindow", + type: "object", }, - RunStatusResponse: { + RunPlacementDecision: { additionalProperties: false, + description: "Fixed-size explanation of the execution-plan selection used by Control.", properties: { - affected: { default: 0, minimum: 0, title: "Affected", type: "integer" }, - assertions: { default: 0, minimum: 0, title: "Assertions", type: "integer" }, - assets: { default: 0, minimum: 0, title: "Assets", type: "integer" }, - can_cancel: { default: false, title: "Can Cancel", type: "boolean" }, - can_replay: { default: false, title: "Can Replay", type: "boolean" }, - endpoints: { default: 0, minimum: 0, title: "Endpoints", type: "integer" }, - extracted: { default: 0, minimum: 0, title: "Extracted", type: "integer" }, - failure_code: { + decision_schema: { + const: "io.dander.control.placement-decision/v1", + title: "Decision Schema", + type: "string", + }, + eligible_plan_count: { + maximum: 100, + minimum: 1, + title: "Eligible Plan Count", + type: "integer", + }, + estimated_cost_microusd: { + anyOf: [{ maximum: 9223372036854776000, minimum: 0, type: "integer" }, { type: "null" }], + default: null, + title: "Estimated Cost Microusd", + }, + max_cost_microusd: { + anyOf: [{ maximum: 9223372036854776000, minimum: 0, type: "integer" }, { type: "null" }], + default: null, + title: "Max Cost Microusd", + }, + mode: { + enum: ["automatic", "manual_override", "configured_default", "scheduled", "replay"], + title: "Mode", + type: "string", + }, + preferred_locality: { anyOf: [{ type: "string" }, { type: "null" }], default: null, - title: "Failure Code", + title: "Preferred Locality", }, - failure_summary: { + selected_environment: { title: "Selected Environment", type: "string" }, + selected_locality: { anyOf: [{ type: "string" }, { type: "null" }], default: null, - title: "Failure Summary", + title: "Selected Locality", }, - finished_at: { + }, + required: ["decision_schema", "mode", "selected_environment", "eligible_plan_count"], + title: "RunPlacementDecision", + type: "object", + }, + RunSizeClassDecision: { + additionalProperties: false, + description: "Fixed-size explanation of the selected execution resource class.", + properties: { + cpu_millis: { minimum: 1, title: "Cpu Millis", type: "integer" }, + decision_schema: { + const: "io.dander.control.size-class-decision/v2", + title: "Decision Schema", + type: "string", + }, + eligible_plan_count: { + maximum: 100, + minimum: 1, + title: "Eligible Plan Count", + type: "integer", + }, + ephemeral_storage_mib: { + anyOf: [{ minimum: 1, type: "integer" }, { type: "null" }], + default: null, + title: "Ephemeral Storage Mib", + }, + estimate_observed_at: { anyOf: [{ type: "string" }, { type: "null" }], default: null, - title: "Finished At", + title: "Estimate Observed At", }, - logs_available: { default: false, title: "Logs Available", type: "boolean" }, - models: { default: 0, minimum: 0, title: "Models", type: "integer" }, - run_id: { title: "Run Id", type: "string" }, - stage: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Stage" }, - started_at: { + estimate_source: { anyOf: [{ type: "string" }, { type: "null" }], default: null, - title: "Started At", + title: "Estimate Source", }, - state: { $ref: "#/$defs/RunState" }, + estimated_input_bytes: { + anyOf: [{ maximum: 9223372036854776000, minimum: 0, type: "integer" }, { type: "null" }], + default: null, + title: "Estimated Input Bytes", + }, + max_input_bytes: { + maximum: 9223372036854776000, + minimum: 0, + title: "Max Input Bytes", + type: "integer", + }, + memory_mib: { minimum: 1, title: "Memory Mib", type: "integer" }, + mode: { + enum: ["automatic_input", "manual_override", "configured_default", "scheduled", "replay"], + title: "Mode", + type: "string", + }, + selected_size_class: { title: "Selected Size Class", type: "string" }, }, - required: ["run_id", "state"], - title: "RunStatusResponse", + required: [ + "decision_schema", + "mode", + "selected_size_class", + "max_input_bytes", + "cpu_millis", + "memory_mib", + "eligible_plan_count", + ], + title: "RunSizeClassDecision", type: "object", }, - }, - $id: "urn:dander:control:contracts:v1:run-page", - $schema: "https://json-schema.org/draft/2020-12/schema", - additionalProperties: false, - description: "A bounded page of normalized, non-sensitive run summaries.", - properties: { - items: { - items: { $ref: "#/$defs/RunStatusResponse" }, - maxItems: 100, - title: "Items", - type: "array", + RunState: { + enum: ["queued", "running", "succeeded", "failed", "canceling", "canceled", "retrying"], + title: "RunState", + type: "string", }, - next_cursor: { - anyOf: [{ type: "string" }, { type: "null" }], - default: null, - title: "Next Cursor", + RunTelemetrySummary: { + additionalProperties: false, + description: "Fixed-size telemetry totals; provider operation details remain in logs.", + properties: { + bytes_billed: { + maximum: 9223372036854776000, + minimum: 0, + title: "Bytes Billed", + type: "integer", + }, + bytes_processed: { + maximum: 9223372036854776000, + minimum: 0, + title: "Bytes Processed", + type: "integer", + }, + bytes_read: { + maximum: 9223372036854776000, + minimum: 0, + title: "Bytes Read", + type: "integer", + }, + bytes_written: { + maximum: 9223372036854776000, + minimum: 0, + title: "Bytes Written", + type: "integer", + }, + duration_ms: { + maximum: 9223372036854776000, + minimum: 0, + title: "Duration Ms", + type: "integer", + }, + execution_duration_ms: { + maximum: 9223372036854776000, + minimum: 0, + title: "Execution Duration Ms", + type: "integer", + }, + operation_count: { + maximum: 9223372036854776000, + minimum: 0, + title: "Operation Count", + type: "integer", + }, + queue_duration_ms: { + maximum: 9223372036854776000, + minimum: 0, + title: "Queue Duration Ms", + type: "integer", + }, + retry_count: { + maximum: 9223372036854776000, + minimum: 0, + title: "Retry Count", + type: "integer", + }, + rows_affected: { + maximum: 9223372036854776000, + minimum: 0, + title: "Rows Affected", + type: "integer", + }, + rows_read: { + maximum: 9223372036854776000, + minimum: 0, + title: "Rows Read", + type: "integer", + }, + rows_written: { + maximum: 9223372036854776000, + minimum: 0, + title: "Rows Written", + type: "integer", + }, + spill_bytes: { + maximum: 9223372036854776000, + minimum: 0, + title: "Spill Bytes", + type: "integer", + }, + }, + required: [ + "duration_ms", + "operation_count", + "retry_count", + "rows_read", + "rows_written", + "rows_affected", + "bytes_read", + "bytes_written", + "bytes_processed", + "bytes_billed", + "queue_duration_ms", + "execution_duration_ms", + "spill_bytes", + ], + title: "RunTelemetrySummary", + type: "object", }, }, - required: ["items"], - title: "RunPageResponse", - type: "object", -}; -const schema276 = { + $id: "urn:dander:control:contracts:v1:run-status", + $schema: "https://json-schema.org/draft/2020-12/schema", additionalProperties: false, properties: { affected: { default: 0, minimum: 0, title: "Affected", type: "integer" }, @@ -43081,7 +51963,25 @@ const schema276 = { }, logs_available: { default: false, title: "Logs Available", type: "boolean" }, models: { default: 0, minimum: 0, title: "Models", type: "integer" }, + placement: { + anyOf: [{ $ref: "#/$defs/RunPlacementDecision" }, { type: "null" }], + default: null, + }, + repair_window: { + anyOf: [{ $ref: "#/$defs/GraphRepairWindow" }, { type: "null" }], + default: null, + }, + result_schema: { + anyOf: [ + { const: "io.dander.control.execution-result-summary/v1", type: "string" }, + { type: "null" }, + ], + default: null, + title: "Result Schema", + }, run_id: { title: "Run Id", type: "string" }, + sizing: { anyOf: [{ $ref: "#/$defs/RunSizeClassDecision" }, { type: "null" }], default: null }, + skipped: { default: false, title: "Skipped", type: "boolean" }, stage: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Stage" }, started_at: { anyOf: [{ type: "string" }, { type: "null" }], @@ -43089,24 +51989,238 @@ const schema276 = { title: "Started At", }, state: { $ref: "#/$defs/RunState" }, + telemetry: { + anyOf: [{ $ref: "#/$defs/RunTelemetrySummary" }, { type: "null" }], + default: null, + }, }, required: ["run_id", "state"], title: "RunStatusResponse", type: "object", }; -const schema277 = { +const schema306 = { + additionalProperties: false, + description: "Fixed-size explanation of the execution-plan selection used by Control.", + properties: { + decision_schema: { + const: "io.dander.control.placement-decision/v1", + title: "Decision Schema", + type: "string", + }, + eligible_plan_count: { + maximum: 100, + minimum: 1, + title: "Eligible Plan Count", + type: "integer", + }, + estimated_cost_microusd: { + anyOf: [{ maximum: 9223372036854776000, minimum: 0, type: "integer" }, { type: "null" }], + default: null, + title: "Estimated Cost Microusd", + }, + max_cost_microusd: { + anyOf: [{ maximum: 9223372036854776000, minimum: 0, type: "integer" }, { type: "null" }], + default: null, + title: "Max Cost Microusd", + }, + mode: { + enum: ["automatic", "manual_override", "configured_default", "scheduled", "replay"], + title: "Mode", + type: "string", + }, + preferred_locality: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Preferred Locality", + }, + selected_environment: { title: "Selected Environment", type: "string" }, + selected_locality: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Selected Locality", + }, + }, + required: ["decision_schema", "mode", "selected_environment", "eligible_plan_count"], + title: "RunPlacementDecision", + type: "object", +}; +const schema307 = { + additionalProperties: false, + description: "UTC calendar dates: start is inclusive and end is exclusive.", + properties: { + end_date: { format: "date", title: "End Date", type: "string" }, + start_date: { format: "date", title: "Start Date", type: "string" }, + }, + required: ["start_date", "end_date"], + title: "GraphRepairWindow", + type: "object", +}; +const schema308 = { + additionalProperties: false, + description: "Fixed-size explanation of the selected execution resource class.", + properties: { + cpu_millis: { minimum: 1, title: "Cpu Millis", type: "integer" }, + decision_schema: { + const: "io.dander.control.size-class-decision/v2", + title: "Decision Schema", + type: "string", + }, + eligible_plan_count: { + maximum: 100, + minimum: 1, + title: "Eligible Plan Count", + type: "integer", + }, + ephemeral_storage_mib: { + anyOf: [{ minimum: 1, type: "integer" }, { type: "null" }], + default: null, + title: "Ephemeral Storage Mib", + }, + estimate_observed_at: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Estimate Observed At", + }, + estimate_source: { + anyOf: [{ type: "string" }, { type: "null" }], + default: null, + title: "Estimate Source", + }, + estimated_input_bytes: { + anyOf: [{ maximum: 9223372036854776000, minimum: 0, type: "integer" }, { type: "null" }], + default: null, + title: "Estimated Input Bytes", + }, + max_input_bytes: { + maximum: 9223372036854776000, + minimum: 0, + title: "Max Input Bytes", + type: "integer", + }, + memory_mib: { minimum: 1, title: "Memory Mib", type: "integer" }, + mode: { + enum: ["automatic_input", "manual_override", "configured_default", "scheduled", "replay"], + title: "Mode", + type: "string", + }, + selected_size_class: { title: "Selected Size Class", type: "string" }, + }, + required: [ + "decision_schema", + "mode", + "selected_size_class", + "max_input_bytes", + "cpu_millis", + "memory_mib", + "eligible_plan_count", + ], + title: "RunSizeClassDecision", + type: "object", +}; +const schema309 = { enum: ["queued", "running", "succeeded", "failed", "canceling", "canceled", "retrying"], title: "RunState", type: "string", }; +const schema310 = { + additionalProperties: false, + description: "Fixed-size telemetry totals; provider operation details remain in logs.", + properties: { + bytes_billed: { + maximum: 9223372036854776000, + minimum: 0, + title: "Bytes Billed", + type: "integer", + }, + bytes_processed: { + maximum: 9223372036854776000, + minimum: 0, + title: "Bytes Processed", + type: "integer", + }, + bytes_read: { maximum: 9223372036854776000, minimum: 0, title: "Bytes Read", type: "integer" }, + bytes_written: { + maximum: 9223372036854776000, + minimum: 0, + title: "Bytes Written", + type: "integer", + }, + duration_ms: { + maximum: 9223372036854776000, + minimum: 0, + title: "Duration Ms", + type: "integer", + }, + execution_duration_ms: { + maximum: 9223372036854776000, + minimum: 0, + title: "Execution Duration Ms", + type: "integer", + }, + operation_count: { + maximum: 9223372036854776000, + minimum: 0, + title: "Operation Count", + type: "integer", + }, + queue_duration_ms: { + maximum: 9223372036854776000, + minimum: 0, + title: "Queue Duration Ms", + type: "integer", + }, + retry_count: { + maximum: 9223372036854776000, + minimum: 0, + title: "Retry Count", + type: "integer", + }, + rows_affected: { + maximum: 9223372036854776000, + minimum: 0, + title: "Rows Affected", + type: "integer", + }, + rows_read: { maximum: 9223372036854776000, minimum: 0, title: "Rows Read", type: "integer" }, + rows_written: { + maximum: 9223372036854776000, + minimum: 0, + title: "Rows Written", + type: "integer", + }, + spill_bytes: { + maximum: 9223372036854776000, + minimum: 0, + title: "Spill Bytes", + type: "integer", + }, + }, + required: [ + "duration_ms", + "operation_count", + "retry_count", + "rows_read", + "rows_written", + "rows_affected", + "bytes_read", + "bytes_written", + "bytes_processed", + "bytes_billed", + "queue_duration_ms", + "execution_duration_ms", + "spill_bytes", + ], + title: "RunTelemetrySummary", + type: "object", +}; -function validate412( +function validate432( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { - let vErrors = null; + /*# sourceURL="urn:dander:control:contracts:v1:run-status" */ let vErrors = null; let errors = 0; - const evaluated0 = validate412.evaluated; + const evaluated0 = validate432.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -43145,7 +52259,7 @@ function validate412( errors++; } for (const key0 in data) { - if (!func1.call(schema276.properties, key0)) { + if (!func1.call(schema305.properties, key0)) { const err2 = { instancePath, schemaPath: "#/additionalProperties", @@ -43579,1356 +52693,2792 @@ function validate412( } else { vErrors.push(err24); } - errors++; - } - } - if (data.models !== undefined) { - let data11 = data.models; - if (!(typeof data11 == "number" && !(data11 % 1) && !isNaN(data11) && isFinite(data11))) { - const err25 = { - instancePath: instancePath + "/models", - schemaPath: "#/properties/models/type", - keyword: "type", - params: { type: "integer" }, - message: "must be integer", - }; - if (vErrors === null) { - vErrors = [err25]; - } else { - vErrors.push(err25); + errors++; + } + } + if (data.models !== undefined) { + let data11 = data.models; + if (!(typeof data11 == "number" && !(data11 % 1) && !isNaN(data11) && isFinite(data11))) { + const err25 = { + instancePath: instancePath + "/models", + schemaPath: "#/properties/models/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err25]; + } else { + vErrors.push(err25); + } + errors++; + } + if (typeof data11 == "number" && isFinite(data11)) { + if (data11 < 0 || isNaN(data11)) { + const err26 = { + instancePath: instancePath + "/models", + schemaPath: "#/properties/models/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err26]; + } else { + vErrors.push(err26); + } + errors++; + } + } + } + if (data.placement !== undefined) { + let data12 = data.placement; + const _errs39 = errors; + let valid4 = false; + const _errs40 = errors; + if (data12 && typeof data12 == "object" && !Array.isArray(data12)) { + if (data12.decision_schema === undefined) { + const err27 = { + instancePath: instancePath + "/placement", + schemaPath: "#/$defs/RunPlacementDecision/required", + keyword: "required", + params: { missingProperty: "decision_schema" }, + message: "must have required property '" + "decision_schema" + "'", + }; + if (vErrors === null) { + vErrors = [err27]; + } else { + vErrors.push(err27); + } + errors++; + } + if (data12.mode === undefined) { + const err28 = { + instancePath: instancePath + "/placement", + schemaPath: "#/$defs/RunPlacementDecision/required", + keyword: "required", + params: { missingProperty: "mode" }, + message: "must have required property '" + "mode" + "'", + }; + if (vErrors === null) { + vErrors = [err28]; + } else { + vErrors.push(err28); + } + errors++; + } + if (data12.selected_environment === undefined) { + const err29 = { + instancePath: instancePath + "/placement", + schemaPath: "#/$defs/RunPlacementDecision/required", + keyword: "required", + params: { missingProperty: "selected_environment" }, + message: "must have required property '" + "selected_environment" + "'", + }; + if (vErrors === null) { + vErrors = [err29]; + } else { + vErrors.push(err29); + } + errors++; + } + if (data12.eligible_plan_count === undefined) { + const err30 = { + instancePath: instancePath + "/placement", + schemaPath: "#/$defs/RunPlacementDecision/required", + keyword: "required", + params: { missingProperty: "eligible_plan_count" }, + message: "must have required property '" + "eligible_plan_count" + "'", + }; + if (vErrors === null) { + vErrors = [err30]; + } else { + vErrors.push(err30); + } + errors++; + } + for (const key1 in data12) { + if (!( + key1 === "decision_schema" || + key1 === "eligible_plan_count" || + key1 === "estimated_cost_microusd" || + key1 === "max_cost_microusd" || + key1 === "mode" || + key1 === "preferred_locality" || + key1 === "selected_environment" || + key1 === "selected_locality" + )) { + const err31 = { + instancePath: instancePath + "/placement", + schemaPath: "#/$defs/RunPlacementDecision/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key1 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err31]; + } else { + vErrors.push(err31); + } + errors++; + } + } + if (data12.decision_schema !== undefined) { + let data13 = data12.decision_schema; + if (typeof data13 !== "string") { + const err32 = { + instancePath: instancePath + "/placement/decision_schema", + schemaPath: "#/$defs/RunPlacementDecision/properties/decision_schema/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err32]; + } else { + vErrors.push(err32); + } + errors++; + } + if ("io.dander.control.placement-decision/v1" !== data13) { + const err33 = { + instancePath: instancePath + "/placement/decision_schema", + schemaPath: "#/$defs/RunPlacementDecision/properties/decision_schema/const", + keyword: "const", + params: { allowedValue: "io.dander.control.placement-decision/v1" }, + message: "must be equal to constant", + }; + if (vErrors === null) { + vErrors = [err33]; + } else { + vErrors.push(err33); + } + errors++; + } + } + if (data12.eligible_plan_count !== undefined) { + let data14 = data12.eligible_plan_count; + if (!(typeof data14 == "number" && !(data14 % 1) && !isNaN(data14) && isFinite(data14))) { + const err34 = { + instancePath: instancePath + "/placement/eligible_plan_count", + schemaPath: "#/$defs/RunPlacementDecision/properties/eligible_plan_count/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err34]; + } else { + vErrors.push(err34); + } + errors++; + } + if (typeof data14 == "number" && isFinite(data14)) { + if (data14 > 100 || isNaN(data14)) { + const err35 = { + instancePath: instancePath + "/placement/eligible_plan_count", + schemaPath: "#/$defs/RunPlacementDecision/properties/eligible_plan_count/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 100 }, + message: "must be <= 100", + }; + if (vErrors === null) { + vErrors = [err35]; + } else { + vErrors.push(err35); + } + errors++; + } + if (data14 < 1 || isNaN(data14)) { + const err36 = { + instancePath: instancePath + "/placement/eligible_plan_count", + schemaPath: "#/$defs/RunPlacementDecision/properties/eligible_plan_count/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 1 }, + message: "must be >= 1", + }; + if (vErrors === null) { + vErrors = [err36]; + } else { + vErrors.push(err36); + } + errors++; + } + } + } + if (data12.estimated_cost_microusd !== undefined) { + let data15 = data12.estimated_cost_microusd; + const _errs49 = errors; + let valid7 = false; + const _errs50 = errors; + if (!(typeof data15 == "number" && !(data15 % 1) && !isNaN(data15) && isFinite(data15))) { + const err37 = { + instancePath: instancePath + "/placement/estimated_cost_microusd", + schemaPath: + "#/$defs/RunPlacementDecision/properties/estimated_cost_microusd/anyOf/0/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err37]; + } else { + vErrors.push(err37); + } + errors++; + } + if (typeof data15 == "number" && isFinite(data15)) { + if (data15 > 9223372036854776000 || isNaN(data15)) { + const err38 = { + instancePath: instancePath + "/placement/estimated_cost_microusd", + schemaPath: + "#/$defs/RunPlacementDecision/properties/estimated_cost_microusd/anyOf/0/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err38]; + } else { + vErrors.push(err38); + } + errors++; + } + if (data15 < 0 || isNaN(data15)) { + const err39 = { + instancePath: instancePath + "/placement/estimated_cost_microusd", + schemaPath: + "#/$defs/RunPlacementDecision/properties/estimated_cost_microusd/anyOf/0/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err39]; + } else { + vErrors.push(err39); + } + errors++; + } + } + var _valid4 = _errs50 === errors; + valid7 = valid7 || _valid4; + const _errs52 = errors; + if (data15 !== null) { + const err40 = { + instancePath: instancePath + "/placement/estimated_cost_microusd", + schemaPath: + "#/$defs/RunPlacementDecision/properties/estimated_cost_microusd/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err40]; + } else { + vErrors.push(err40); + } + errors++; + } + var _valid4 = _errs52 === errors; + valid7 = valid7 || _valid4; + if (!valid7) { + const err41 = { + instancePath: instancePath + "/placement/estimated_cost_microusd", + schemaPath: "#/$defs/RunPlacementDecision/properties/estimated_cost_microusd/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err41]; + } else { + vErrors.push(err41); + } + errors++; + } else { + errors = _errs49; + if (vErrors !== null) { + if (_errs49) { + vErrors.length = _errs49; + } else { + vErrors = null; + } + } + } + } + if (data12.max_cost_microusd !== undefined) { + let data16 = data12.max_cost_microusd; + const _errs55 = errors; + let valid8 = false; + const _errs56 = errors; + if (!(typeof data16 == "number" && !(data16 % 1) && !isNaN(data16) && isFinite(data16))) { + const err42 = { + instancePath: instancePath + "/placement/max_cost_microusd", + schemaPath: "#/$defs/RunPlacementDecision/properties/max_cost_microusd/anyOf/0/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err42]; + } else { + vErrors.push(err42); + } + errors++; + } + if (typeof data16 == "number" && isFinite(data16)) { + if (data16 > 9223372036854776000 || isNaN(data16)) { + const err43 = { + instancePath: instancePath + "/placement/max_cost_microusd", + schemaPath: + "#/$defs/RunPlacementDecision/properties/max_cost_microusd/anyOf/0/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err43]; + } else { + vErrors.push(err43); + } + errors++; + } + if (data16 < 0 || isNaN(data16)) { + const err44 = { + instancePath: instancePath + "/placement/max_cost_microusd", + schemaPath: + "#/$defs/RunPlacementDecision/properties/max_cost_microusd/anyOf/0/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err44]; + } else { + vErrors.push(err44); + } + errors++; + } + } + var _valid5 = _errs56 === errors; + valid8 = valid8 || _valid5; + const _errs58 = errors; + if (data16 !== null) { + const err45 = { + instancePath: instancePath + "/placement/max_cost_microusd", + schemaPath: "#/$defs/RunPlacementDecision/properties/max_cost_microusd/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err45]; + } else { + vErrors.push(err45); + } + errors++; + } + var _valid5 = _errs58 === errors; + valid8 = valid8 || _valid5; + if (!valid8) { + const err46 = { + instancePath: instancePath + "/placement/max_cost_microusd", + schemaPath: "#/$defs/RunPlacementDecision/properties/max_cost_microusd/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err46]; + } else { + vErrors.push(err46); + } + errors++; + } else { + errors = _errs55; + if (vErrors !== null) { + if (_errs55) { + vErrors.length = _errs55; + } else { + vErrors = null; + } + } + } + } + if (data12.mode !== undefined) { + let data17 = data12.mode; + if (typeof data17 !== "string") { + const err47 = { + instancePath: instancePath + "/placement/mode", + schemaPath: "#/$defs/RunPlacementDecision/properties/mode/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err47]; + } else { + vErrors.push(err47); + } + errors++; + } + if (!( + data17 === "automatic" || + data17 === "manual_override" || + data17 === "configured_default" || + data17 === "scheduled" || + data17 === "replay" + )) { + const err48 = { + instancePath: instancePath + "/placement/mode", + schemaPath: "#/$defs/RunPlacementDecision/properties/mode/enum", + keyword: "enum", + params: { allowedValues: schema306.properties.mode.enum }, + message: "must be equal to one of the allowed values", + }; + if (vErrors === null) { + vErrors = [err48]; + } else { + vErrors.push(err48); + } + errors++; + } + } + if (data12.preferred_locality !== undefined) { + let data18 = data12.preferred_locality; + const _errs63 = errors; + let valid9 = false; + const _errs64 = errors; + if (typeof data18 !== "string") { + const err49 = { + instancePath: instancePath + "/placement/preferred_locality", + schemaPath: "#/$defs/RunPlacementDecision/properties/preferred_locality/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err49]; + } else { + vErrors.push(err49); + } + errors++; + } + var _valid6 = _errs64 === errors; + valid9 = valid9 || _valid6; + const _errs66 = errors; + if (data18 !== null) { + const err50 = { + instancePath: instancePath + "/placement/preferred_locality", + schemaPath: "#/$defs/RunPlacementDecision/properties/preferred_locality/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err50]; + } else { + vErrors.push(err50); + } + errors++; + } + var _valid6 = _errs66 === errors; + valid9 = valid9 || _valid6; + if (!valid9) { + const err51 = { + instancePath: instancePath + "/placement/preferred_locality", + schemaPath: "#/$defs/RunPlacementDecision/properties/preferred_locality/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err51]; + } else { + vErrors.push(err51); + } + errors++; + } else { + errors = _errs63; + if (vErrors !== null) { + if (_errs63) { + vErrors.length = _errs63; + } else { + vErrors = null; + } + } + } + } + if (data12.selected_environment !== undefined) { + if (typeof data12.selected_environment !== "string") { + const err52 = { + instancePath: instancePath + "/placement/selected_environment", + schemaPath: "#/$defs/RunPlacementDecision/properties/selected_environment/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err52]; + } else { + vErrors.push(err52); + } + errors++; + } } - errors++; - } - if (typeof data11 == "number" && isFinite(data11)) { - if (data11 < 0 || isNaN(data11)) { - const err26 = { - instancePath: instancePath + "/models", - schemaPath: "#/properties/models/minimum", - keyword: "minimum", - params: { comparison: ">=", limit: 0 }, - message: "must be >= 0", - }; - if (vErrors === null) { - vErrors = [err26]; + if (data12.selected_locality !== undefined) { + let data20 = data12.selected_locality; + const _errs71 = errors; + let valid10 = false; + const _errs72 = errors; + if (typeof data20 !== "string") { + const err53 = { + instancePath: instancePath + "/placement/selected_locality", + schemaPath: "#/$defs/RunPlacementDecision/properties/selected_locality/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err53]; + } else { + vErrors.push(err53); + } + errors++; + } + var _valid7 = _errs72 === errors; + valid10 = valid10 || _valid7; + const _errs74 = errors; + if (data20 !== null) { + const err54 = { + instancePath: instancePath + "/placement/selected_locality", + schemaPath: "#/$defs/RunPlacementDecision/properties/selected_locality/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err54]; + } else { + vErrors.push(err54); + } + errors++; + } + var _valid7 = _errs74 === errors; + valid10 = valid10 || _valid7; + if (!valid10) { + const err55 = { + instancePath: instancePath + "/placement/selected_locality", + schemaPath: "#/$defs/RunPlacementDecision/properties/selected_locality/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err55]; + } else { + vErrors.push(err55); + } + errors++; } else { - vErrors.push(err26); + errors = _errs71; + if (vErrors !== null) { + if (_errs71) { + vErrors.length = _errs71; + } else { + vErrors = null; + } + } } - errors++; - } - } - } - if (data.run_id !== undefined) { - if (typeof data.run_id !== "string") { - const err27 = { - instancePath: instancePath + "/run_id", - schemaPath: "#/properties/run_id/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err27]; - } else { - vErrors.push(err27); } - errors++; - } - } - if (data.stage !== undefined) { - let data13 = data.stage; - const _errs41 = errors; - let valid4 = false; - const _errs42 = errors; - if (typeof data13 !== "string") { - const err28 = { - instancePath: instancePath + "/stage", - schemaPath: "#/properties/stage/anyOf/0/type", + } else { + const err56 = { + instancePath: instancePath + "/placement", + schemaPath: "#/$defs/RunPlacementDecision/type", keyword: "type", - params: { type: "string" }, - message: "must be string", + params: { type: "object" }, + message: "must be object", }; if (vErrors === null) { - vErrors = [err28]; + vErrors = [err56]; } else { - vErrors.push(err28); + vErrors.push(err56); } errors++; } - var _valid3 = _errs42 === errors; + var _valid3 = _errs40 === errors; valid4 = valid4 || _valid3; - const _errs44 = errors; - if (data13 !== null) { - const err29 = { - instancePath: instancePath + "/stage", - schemaPath: "#/properties/stage/anyOf/1/type", + const _errs76 = errors; + if (data12 !== null) { + const err57 = { + instancePath: instancePath + "/placement", + schemaPath: "#/properties/placement/anyOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null", }; if (vErrors === null) { - vErrors = [err29]; + vErrors = [err57]; } else { - vErrors.push(err29); + vErrors.push(err57); } errors++; } - var _valid3 = _errs44 === errors; + var _valid3 = _errs76 === errors; valid4 = valid4 || _valid3; if (!valid4) { - const err30 = { - instancePath: instancePath + "/stage", - schemaPath: "#/properties/stage/anyOf", + const err58 = { + instancePath: instancePath + "/placement", + schemaPath: "#/properties/placement/anyOf", keyword: "anyOf", params: {}, message: "must match a schema in anyOf", }; if (vErrors === null) { - vErrors = [err30]; + vErrors = [err58]; } else { - vErrors.push(err30); + vErrors.push(err58); } errors++; } else { - errors = _errs41; + errors = _errs39; if (vErrors !== null) { - if (_errs41) { - vErrors.length = _errs41; + if (_errs39) { + vErrors.length = _errs39; } else { vErrors = null; } } } } - if (data.started_at !== undefined) { - let data14 = data.started_at; - const _errs47 = errors; - let valid5 = false; - const _errs48 = errors; - if (typeof data14 !== "string") { - const err31 = { - instancePath: instancePath + "/started_at", - schemaPath: "#/properties/started_at/anyOf/0/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err31]; - } else { - vErrors.push(err31); - } - errors++; - } - var _valid4 = _errs48 === errors; - valid5 = valid5 || _valid4; - const _errs50 = errors; - if (data14 !== null) { - const err32 = { - instancePath: instancePath + "/started_at", - schemaPath: "#/properties/started_at/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err32]; - } else { - vErrors.push(err32); - } - errors++; - } - var _valid4 = _errs50 === errors; - valid5 = valid5 || _valid4; - if (!valid5) { - const err33 = { - instancePath: instancePath + "/started_at", - schemaPath: "#/properties/started_at/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; - if (vErrors === null) { - vErrors = [err33]; - } else { - vErrors.push(err33); - } - errors++; - } else { - errors = _errs47; - if (vErrors !== null) { - if (_errs47) { - vErrors.length = _errs47; + if (data.repair_window !== undefined) { + let data21 = data.repair_window; + const _errs79 = errors; + let valid11 = false; + const _errs80 = errors; + if (data21 && typeof data21 == "object" && !Array.isArray(data21)) { + if (data21.start_date === undefined) { + const err59 = { + instancePath: instancePath + "/repair_window", + schemaPath: "#/$defs/GraphRepairWindow/required", + keyword: "required", + params: { missingProperty: "start_date" }, + message: "must have required property '" + "start_date" + "'", + }; + if (vErrors === null) { + vErrors = [err59]; } else { - vErrors = null; + vErrors.push(err59); } + errors++; } - } - } - if (data.state !== undefined) { - let data15 = data.state; - if (typeof data15 !== "string") { - const err34 = { - instancePath: instancePath + "/state", - schemaPath: "#/$defs/RunState/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err34]; - } else { - vErrors.push(err34); - } - errors++; - } - if (!( - data15 === "queued" || - data15 === "running" || - data15 === "succeeded" || - data15 === "failed" || - data15 === "canceling" || - data15 === "canceled" || - data15 === "retrying" - )) { - const err35 = { - instancePath: instancePath + "/state", - schemaPath: "#/$defs/RunState/enum", - keyword: "enum", - params: { allowedValues: schema277.enum }, - message: "must be equal to one of the allowed values", - }; - if (vErrors === null) { - vErrors = [err35]; - } else { - vErrors.push(err35); - } - errors++; - } - } - } else { - const err36 = { - instancePath, - schemaPath: "#/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", - }; - if (vErrors === null) { - vErrors = [err36]; - } else { - vErrors.push(err36); - } - errors++; - } - validate412.errors = vErrors; - return errors === 0; -} -validate412.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -function validate411( - data, - { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, -) { - /*# sourceURL="urn:dander:control:contracts:v1:run-page" */ let vErrors = null; - let errors = 0; - const evaluated0 = validate411.evaluated; - if (evaluated0.dynamicProps) { - evaluated0.props = undefined; - } - if (evaluated0.dynamicItems) { - evaluated0.items = undefined; - } - if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.items === undefined) { - const err0 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "items" }, - message: "must have required property '" + "items" + "'", - }; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); - } - errors++; - } - for (const key0 in data) { - if (!(key0 === "items" || key0 === "next_cursor")) { - const err1 = { - instancePath, - schemaPath: "#/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key0 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err1]; - } else { - vErrors.push(err1); - } - errors++; - } - } - if (data.items !== undefined) { - let data0 = data.items; - if (Array.isArray(data0)) { - if (data0.length > 100) { - const err2 = { - instancePath: instancePath + "/items", - schemaPath: "#/properties/items/maxItems", - keyword: "maxItems", - params: { limit: 100 }, - message: "must NOT have more than 100 items", + if (data21.end_date === undefined) { + const err60 = { + instancePath: instancePath + "/repair_window", + schemaPath: "#/$defs/GraphRepairWindow/required", + keyword: "required", + params: { missingProperty: "end_date" }, + message: "must have required property '" + "end_date" + "'", }; if (vErrors === null) { - vErrors = [err2]; + vErrors = [err60]; } else { - vErrors.push(err2); + vErrors.push(err60); } errors++; } - const len0 = data0.length; - for (let i0 = 0; i0 < len0; i0++) { - if ( - !validate412(data0[i0], { - instancePath: instancePath + "/items/" + i0, - parentData: data0, - parentDataProperty: i0, - rootData, - dynamicAnchors, - }) - ) { - vErrors = vErrors === null ? validate412.errors : vErrors.concat(validate412.errors); - errors = vErrors.length; + for (const key2 in data21) { + if (!(key2 === "end_date" || key2 === "start_date")) { + const err61 = { + instancePath: instancePath + "/repair_window", + schemaPath: "#/$defs/GraphRepairWindow/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key2 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err61]; + } else { + vErrors.push(err61); + } + errors++; } } - } else { - const err3 = { - instancePath: instancePath + "/items", - schemaPath: "#/properties/items/type", - keyword: "type", - params: { type: "array" }, - message: "must be array", - }; - if (vErrors === null) { - vErrors = [err3]; - } else { - vErrors.push(err3); + if (data21.end_date !== undefined) { + if (!(typeof data21.end_date === "string")) { + const err62 = { + instancePath: instancePath + "/repair_window/end_date", + schemaPath: "#/$defs/GraphRepairWindow/properties/end_date/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err62]; + } else { + vErrors.push(err62); + } + errors++; + } } - errors++; - } - } - if (data.next_cursor !== undefined) { - let data2 = data.next_cursor; - const _errs6 = errors; - let valid3 = false; - const _errs7 = errors; - if (typeof data2 !== "string") { - const err4 = { - instancePath: instancePath + "/next_cursor", - schemaPath: "#/properties/next_cursor/anyOf/0/type", + if (data21.start_date !== undefined) { + if (!(typeof data21.start_date === "string")) { + const err63 = { + instancePath: instancePath + "/repair_window/start_date", + schemaPath: "#/$defs/GraphRepairWindow/properties/start_date/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err63]; + } else { + vErrors.push(err63); + } + errors++; + } + } + } else { + const err64 = { + instancePath: instancePath + "/repair_window", + schemaPath: "#/$defs/GraphRepairWindow/type", keyword: "type", - params: { type: "string" }, - message: "must be string", + params: { type: "object" }, + message: "must be object", }; if (vErrors === null) { - vErrors = [err4]; + vErrors = [err64]; } else { - vErrors.push(err4); + vErrors.push(err64); } errors++; } - var _valid0 = _errs7 === errors; - valid3 = valid3 || _valid0; - const _errs9 = errors; - if (data2 !== null) { - const err5 = { - instancePath: instancePath + "/next_cursor", - schemaPath: "#/properties/next_cursor/anyOf/1/type", + var _valid8 = _errs80 === errors; + valid11 = valid11 || _valid8; + const _errs88 = errors; + if (data21 !== null) { + const err65 = { + instancePath: instancePath + "/repair_window", + schemaPath: "#/properties/repair_window/anyOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null", }; if (vErrors === null) { - vErrors = [err5]; + vErrors = [err65]; } else { - vErrors.push(err5); + vErrors.push(err65); } errors++; } - var _valid0 = _errs9 === errors; - valid3 = valid3 || _valid0; - if (!valid3) { - const err6 = { - instancePath: instancePath + "/next_cursor", - schemaPath: "#/properties/next_cursor/anyOf", + var _valid8 = _errs88 === errors; + valid11 = valid11 || _valid8; + if (!valid11) { + const err66 = { + instancePath: instancePath + "/repair_window", + schemaPath: "#/properties/repair_window/anyOf", keyword: "anyOf", params: {}, message: "must match a schema in anyOf", }; if (vErrors === null) { - vErrors = [err6]; - } else { - vErrors.push(err6); - } - errors++; - } else { - errors = _errs6; - if (vErrors !== null) { - if (_errs6) { - vErrors.length = _errs6; - } else { - vErrors = null; - } - } - } - } - } else { - const err7 = { - instancePath, - schemaPath: "#/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; - } - validate411.errors = vErrors; - return errors === 0; -} -validate411.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -export const validateRunRequest = validate414; -const schema278 = { - $id: "urn:dander:control:contracts:v1:run-request", - $schema: "https://json-schema.org/draft/2020-12/schema", - additionalProperties: false, - properties: { - expected_revision: { title: "Expected Revision", type: "string" }, - idempotency_key: { maxLength: 128, minLength: 1, title: "Idempotency Key", type: "string" }, - }, - required: ["expected_revision", "idempotency_key"], - title: "RunRequest", - type: "object", -}; - -function validate414( - data, - { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, -) { - /*# sourceURL="urn:dander:control:contracts:v1:run-request" */ let vErrors = null; - let errors = 0; - const evaluated0 = validate414.evaluated; - if (evaluated0.dynamicProps) { - evaluated0.props = undefined; - } - if (evaluated0.dynamicItems) { - evaluated0.items = undefined; - } - if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.expected_revision === undefined) { - const err0 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "expected_revision" }, - message: "must have required property '" + "expected_revision" + "'", - }; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); - } - errors++; - } - if (data.idempotency_key === undefined) { - const err1 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "idempotency_key" }, - message: "must have required property '" + "idempotency_key" + "'", - }; - if (vErrors === null) { - vErrors = [err1]; - } else { - vErrors.push(err1); - } - errors++; - } - for (const key0 in data) { - if (!(key0 === "expected_revision" || key0 === "idempotency_key")) { - const err2 = { - instancePath, - schemaPath: "#/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key0 }, - message: "must NOT have additional properties", - }; - if (vErrors === null) { - vErrors = [err2]; - } else { - vErrors.push(err2); - } - errors++; - } - } - if (data.expected_revision !== undefined) { - if (typeof data.expected_revision !== "string") { - const err3 = { - instancePath: instancePath + "/expected_revision", - schemaPath: "#/properties/expected_revision/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err3]; + vErrors = [err66]; } else { - vErrors.push(err3); + vErrors.push(err66); } errors++; - } - } - if (data.idempotency_key !== undefined) { - let data1 = data.idempotency_key; - if (typeof data1 === "string") { - if (func2(data1) > 128) { - const err4 = { - instancePath: instancePath + "/idempotency_key", - schemaPath: "#/properties/idempotency_key/maxLength", - keyword: "maxLength", - params: { limit: 128 }, - message: "must NOT have more than 128 characters", - }; - if (vErrors === null) { - vErrors = [err4]; - } else { - vErrors.push(err4); - } - errors++; - } - if (func2(data1) < 1) { - const err5 = { - instancePath: instancePath + "/idempotency_key", - schemaPath: "#/properties/idempotency_key/minLength", - keyword: "minLength", - params: { limit: 1 }, - message: "must NOT have fewer than 1 characters", - }; - if (vErrors === null) { - vErrors = [err5]; + } else { + errors = _errs79; + if (vErrors !== null) { + if (_errs79) { + vErrors.length = _errs79; } else { - vErrors.push(err5); + vErrors = null; } - errors++; } - } else { - const err6 = { - instancePath: instancePath + "/idempotency_key", - schemaPath: "#/properties/idempotency_key/type", + } + } + if (data.result_schema !== undefined) { + let data24 = data.result_schema; + const _errs91 = errors; + let valid14 = false; + const _errs92 = errors; + if (typeof data24 !== "string") { + const err67 = { + instancePath: instancePath + "/result_schema", + schemaPath: "#/properties/result_schema/anyOf/0/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err6]; + vErrors = [err67]; } else { - vErrors.push(err6); + vErrors.push(err67); } errors++; } - } - } else { - const err7 = { - instancePath, - schemaPath: "#/type", - keyword: "type", - params: { type: "object" }, - message: "must be object", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); - } - errors++; - } - validate414.errors = vErrors; - return errors === 0; -} -validate414.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; - -export const validateRunStatus = validate415; -const schema279 = { - $defs: { - RunState: { - enum: ["queued", "running", "succeeded", "failed", "canceling", "canceled", "retrying"], - title: "RunState", - type: "string", - }, - }, - $id: "urn:dander:control:contracts:v1:run-status", - $schema: "https://json-schema.org/draft/2020-12/schema", - additionalProperties: false, - properties: { - affected: { default: 0, minimum: 0, title: "Affected", type: "integer" }, - assertions: { default: 0, minimum: 0, title: "Assertions", type: "integer" }, - assets: { default: 0, minimum: 0, title: "Assets", type: "integer" }, - can_cancel: { default: false, title: "Can Cancel", type: "boolean" }, - can_replay: { default: false, title: "Can Replay", type: "boolean" }, - endpoints: { default: 0, minimum: 0, title: "Endpoints", type: "integer" }, - extracted: { default: 0, minimum: 0, title: "Extracted", type: "integer" }, - failure_code: { - anyOf: [{ type: "string" }, { type: "null" }], - default: null, - title: "Failure Code", - }, - failure_summary: { - anyOf: [{ type: "string" }, { type: "null" }], - default: null, - title: "Failure Summary", - }, - finished_at: { - anyOf: [{ type: "string" }, { type: "null" }], - default: null, - title: "Finished At", - }, - logs_available: { default: false, title: "Logs Available", type: "boolean" }, - models: { default: 0, minimum: 0, title: "Models", type: "integer" }, - run_id: { title: "Run Id", type: "string" }, - stage: { anyOf: [{ type: "string" }, { type: "null" }], default: null, title: "Stage" }, - started_at: { - anyOf: [{ type: "string" }, { type: "null" }], - default: null, - title: "Started At", - }, - state: { $ref: "#/$defs/RunState" }, - }, - required: ["run_id", "state"], - title: "RunStatusResponse", - type: "object", -}; -const schema280 = { - enum: ["queued", "running", "succeeded", "failed", "canceling", "canceled", "retrying"], - title: "RunState", - type: "string", -}; - -function validate415( - data, - { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, -) { - /*# sourceURL="urn:dander:control:contracts:v1:run-status" */ let vErrors = null; - let errors = 0; - const evaluated0 = validate415.evaluated; - if (evaluated0.dynamicProps) { - evaluated0.props = undefined; - } - if (evaluated0.dynamicItems) { - evaluated0.items = undefined; - } - if (data && typeof data == "object" && !Array.isArray(data)) { - if (data.run_id === undefined) { - const err0 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "run_id" }, - message: "must have required property '" + "run_id" + "'", - }; - if (vErrors === null) { - vErrors = [err0]; - } else { - vErrors.push(err0); - } - errors++; - } - if (data.state === undefined) { - const err1 = { - instancePath, - schemaPath: "#/required", - keyword: "required", - params: { missingProperty: "state" }, - message: "must have required property '" + "state" + "'", - }; - if (vErrors === null) { - vErrors = [err1]; - } else { - vErrors.push(err1); - } - errors++; - } - for (const key0 in data) { - if (!func1.call(schema279.properties, key0)) { - const err2 = { - instancePath, - schemaPath: "#/additionalProperties", - keyword: "additionalProperties", - params: { additionalProperty: key0 }, - message: "must NOT have additional properties", + if ("io.dander.control.execution-result-summary/v1" !== data24) { + const err68 = { + instancePath: instancePath + "/result_schema", + schemaPath: "#/properties/result_schema/anyOf/0/const", + keyword: "const", + params: { allowedValue: "io.dander.control.execution-result-summary/v1" }, + message: "must be equal to constant", }; if (vErrors === null) { - vErrors = [err2]; + vErrors = [err68]; } else { - vErrors.push(err2); + vErrors.push(err68); } errors++; } - } - if (data.affected !== undefined) { - let data0 = data.affected; - if (!(typeof data0 == "number" && !(data0 % 1) && !isNaN(data0) && isFinite(data0))) { - const err3 = { - instancePath: instancePath + "/affected", - schemaPath: "#/properties/affected/type", + var _valid9 = _errs92 === errors; + valid14 = valid14 || _valid9; + const _errs94 = errors; + if (data24 !== null) { + const err69 = { + instancePath: instancePath + "/result_schema", + schemaPath: "#/properties/result_schema/anyOf/1/type", keyword: "type", - params: { type: "integer" }, - message: "must be integer", + params: { type: "null" }, + message: "must be null", }; if (vErrors === null) { - vErrors = [err3]; + vErrors = [err69]; } else { - vErrors.push(err3); + vErrors.push(err69); } errors++; } - if (typeof data0 == "number" && isFinite(data0)) { - if (data0 < 0 || isNaN(data0)) { - const err4 = { - instancePath: instancePath + "/affected", - schemaPath: "#/properties/affected/minimum", - keyword: "minimum", - params: { comparison: ">=", limit: 0 }, - message: "must be >= 0", - }; - if (vErrors === null) { - vErrors = [err4]; + var _valid9 = _errs94 === errors; + valid14 = valid14 || _valid9; + if (!valid14) { + const err70 = { + instancePath: instancePath + "/result_schema", + schemaPath: "#/properties/result_schema/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err70]; + } else { + vErrors.push(err70); + } + errors++; + } else { + errors = _errs91; + if (vErrors !== null) { + if (_errs91) { + vErrors.length = _errs91; } else { - vErrors.push(err4); + vErrors = null; } - errors++; } } } - if (data.assertions !== undefined) { - let data1 = data.assertions; - if (!(typeof data1 == "number" && !(data1 % 1) && !isNaN(data1) && isFinite(data1))) { - const err5 = { - instancePath: instancePath + "/assertions", - schemaPath: "#/properties/assertions/type", + if (data.run_id !== undefined) { + if (typeof data.run_id !== "string") { + const err71 = { + instancePath: instancePath + "/run_id", + schemaPath: "#/properties/run_id/type", keyword: "type", - params: { type: "integer" }, - message: "must be integer", + params: { type: "string" }, + message: "must be string", }; if (vErrors === null) { - vErrors = [err5]; + vErrors = [err71]; } else { - vErrors.push(err5); + vErrors.push(err71); } errors++; } - if (typeof data1 == "number" && isFinite(data1)) { - if (data1 < 0 || isNaN(data1)) { - const err6 = { - instancePath: instancePath + "/assertions", - schemaPath: "#/properties/assertions/minimum", - keyword: "minimum", - params: { comparison: ">=", limit: 0 }, - message: "must be >= 0", + } + if (data.sizing !== undefined) { + let data26 = data.sizing; + const _errs99 = errors; + let valid15 = false; + const _errs100 = errors; + if (data26 && typeof data26 == "object" && !Array.isArray(data26)) { + if (data26.decision_schema === undefined) { + const err72 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/$defs/RunSizeClassDecision/required", + keyword: "required", + params: { missingProperty: "decision_schema" }, + message: "must have required property '" + "decision_schema" + "'", }; if (vErrors === null) { - vErrors = [err6]; + vErrors = [err72]; } else { - vErrors.push(err6); + vErrors.push(err72); + } + errors++; + } + if (data26.mode === undefined) { + const err73 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/$defs/RunSizeClassDecision/required", + keyword: "required", + params: { missingProperty: "mode" }, + message: "must have required property '" + "mode" + "'", + }; + if (vErrors === null) { + vErrors = [err73]; + } else { + vErrors.push(err73); + } + errors++; + } + if (data26.selected_size_class === undefined) { + const err74 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/$defs/RunSizeClassDecision/required", + keyword: "required", + params: { missingProperty: "selected_size_class" }, + message: "must have required property '" + "selected_size_class" + "'", + }; + if (vErrors === null) { + vErrors = [err74]; + } else { + vErrors.push(err74); + } + errors++; + } + if (data26.max_input_bytes === undefined) { + const err75 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/$defs/RunSizeClassDecision/required", + keyword: "required", + params: { missingProperty: "max_input_bytes" }, + message: "must have required property '" + "max_input_bytes" + "'", + }; + if (vErrors === null) { + vErrors = [err75]; + } else { + vErrors.push(err75); + } + errors++; + } + if (data26.cpu_millis === undefined) { + const err76 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/$defs/RunSizeClassDecision/required", + keyword: "required", + params: { missingProperty: "cpu_millis" }, + message: "must have required property '" + "cpu_millis" + "'", + }; + if (vErrors === null) { + vErrors = [err76]; + } else { + vErrors.push(err76); + } + errors++; + } + if (data26.memory_mib === undefined) { + const err77 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/$defs/RunSizeClassDecision/required", + keyword: "required", + params: { missingProperty: "memory_mib" }, + message: "must have required property '" + "memory_mib" + "'", + }; + if (vErrors === null) { + vErrors = [err77]; + } else { + vErrors.push(err77); + } + errors++; + } + if (data26.eligible_plan_count === undefined) { + const err78 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/$defs/RunSizeClassDecision/required", + keyword: "required", + params: { missingProperty: "eligible_plan_count" }, + message: "must have required property '" + "eligible_plan_count" + "'", + }; + if (vErrors === null) { + vErrors = [err78]; + } else { + vErrors.push(err78); + } + errors++; + } + for (const key3 in data26) { + if (!func1.call(schema308.properties, key3)) { + const err79 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/$defs/RunSizeClassDecision/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key3 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err79]; + } else { + vErrors.push(err79); + } + errors++; + } + } + if (data26.cpu_millis !== undefined) { + let data27 = data26.cpu_millis; + if (!(typeof data27 == "number" && !(data27 % 1) && !isNaN(data27) && isFinite(data27))) { + const err80 = { + instancePath: instancePath + "/sizing/cpu_millis", + schemaPath: "#/$defs/RunSizeClassDecision/properties/cpu_millis/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err80]; + } else { + vErrors.push(err80); + } + errors++; + } + if (typeof data27 == "number" && isFinite(data27)) { + if (data27 < 1 || isNaN(data27)) { + const err81 = { + instancePath: instancePath + "/sizing/cpu_millis", + schemaPath: "#/$defs/RunSizeClassDecision/properties/cpu_millis/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 1 }, + message: "must be >= 1", + }; + if (vErrors === null) { + vErrors = [err81]; + } else { + vErrors.push(err81); + } + errors++; + } + } + } + if (data26.decision_schema !== undefined) { + let data28 = data26.decision_schema; + if (typeof data28 !== "string") { + const err82 = { + instancePath: instancePath + "/sizing/decision_schema", + schemaPath: "#/$defs/RunSizeClassDecision/properties/decision_schema/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err82]; + } else { + vErrors.push(err82); + } + errors++; + } + if ("io.dander.control.size-class-decision/v2" !== data28) { + const err83 = { + instancePath: instancePath + "/sizing/decision_schema", + schemaPath: "#/$defs/RunSizeClassDecision/properties/decision_schema/const", + keyword: "const", + params: { allowedValue: "io.dander.control.size-class-decision/v2" }, + message: "must be equal to constant", + }; + if (vErrors === null) { + vErrors = [err83]; + } else { + vErrors.push(err83); + } + errors++; + } + } + if (data26.eligible_plan_count !== undefined) { + let data29 = data26.eligible_plan_count; + if (!(typeof data29 == "number" && !(data29 % 1) && !isNaN(data29) && isFinite(data29))) { + const err84 = { + instancePath: instancePath + "/sizing/eligible_plan_count", + schemaPath: "#/$defs/RunSizeClassDecision/properties/eligible_plan_count/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err84]; + } else { + vErrors.push(err84); + } + errors++; + } + if (typeof data29 == "number" && isFinite(data29)) { + if (data29 > 100 || isNaN(data29)) { + const err85 = { + instancePath: instancePath + "/sizing/eligible_plan_count", + schemaPath: "#/$defs/RunSizeClassDecision/properties/eligible_plan_count/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 100 }, + message: "must be <= 100", + }; + if (vErrors === null) { + vErrors = [err85]; + } else { + vErrors.push(err85); + } + errors++; + } + if (data29 < 1 || isNaN(data29)) { + const err86 = { + instancePath: instancePath + "/sizing/eligible_plan_count", + schemaPath: "#/$defs/RunSizeClassDecision/properties/eligible_plan_count/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 1 }, + message: "must be >= 1", + }; + if (vErrors === null) { + vErrors = [err86]; + } else { + vErrors.push(err86); + } + errors++; + } + } + } + if (data26.ephemeral_storage_mib !== undefined) { + let data30 = data26.ephemeral_storage_mib; + const _errs111 = errors; + let valid18 = false; + const _errs112 = errors; + if (!(typeof data30 == "number" && !(data30 % 1) && !isNaN(data30) && isFinite(data30))) { + const err87 = { + instancePath: instancePath + "/sizing/ephemeral_storage_mib", + schemaPath: + "#/$defs/RunSizeClassDecision/properties/ephemeral_storage_mib/anyOf/0/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err87]; + } else { + vErrors.push(err87); + } + errors++; + } + if (typeof data30 == "number" && isFinite(data30)) { + if (data30 < 1 || isNaN(data30)) { + const err88 = { + instancePath: instancePath + "/sizing/ephemeral_storage_mib", + schemaPath: + "#/$defs/RunSizeClassDecision/properties/ephemeral_storage_mib/anyOf/0/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 1 }, + message: "must be >= 1", + }; + if (vErrors === null) { + vErrors = [err88]; + } else { + vErrors.push(err88); + } + errors++; + } + } + var _valid11 = _errs112 === errors; + valid18 = valid18 || _valid11; + const _errs114 = errors; + if (data30 !== null) { + const err89 = { + instancePath: instancePath + "/sizing/ephemeral_storage_mib", + schemaPath: + "#/$defs/RunSizeClassDecision/properties/ephemeral_storage_mib/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err89]; + } else { + vErrors.push(err89); + } + errors++; + } + var _valid11 = _errs114 === errors; + valid18 = valid18 || _valid11; + if (!valid18) { + const err90 = { + instancePath: instancePath + "/sizing/ephemeral_storage_mib", + schemaPath: "#/$defs/RunSizeClassDecision/properties/ephemeral_storage_mib/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err90]; + } else { + vErrors.push(err90); + } + errors++; + } else { + errors = _errs111; + if (vErrors !== null) { + if (_errs111) { + vErrors.length = _errs111; + } else { + vErrors = null; + } + } + } + } + if (data26.estimate_observed_at !== undefined) { + let data31 = data26.estimate_observed_at; + const _errs117 = errors; + let valid19 = false; + const _errs118 = errors; + if (typeof data31 !== "string") { + const err91 = { + instancePath: instancePath + "/sizing/estimate_observed_at", + schemaPath: + "#/$defs/RunSizeClassDecision/properties/estimate_observed_at/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err91]; + } else { + vErrors.push(err91); + } + errors++; + } + var _valid12 = _errs118 === errors; + valid19 = valid19 || _valid12; + const _errs120 = errors; + if (data31 !== null) { + const err92 = { + instancePath: instancePath + "/sizing/estimate_observed_at", + schemaPath: + "#/$defs/RunSizeClassDecision/properties/estimate_observed_at/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err92]; + } else { + vErrors.push(err92); + } + errors++; + } + var _valid12 = _errs120 === errors; + valid19 = valid19 || _valid12; + if (!valid19) { + const err93 = { + instancePath: instancePath + "/sizing/estimate_observed_at", + schemaPath: "#/$defs/RunSizeClassDecision/properties/estimate_observed_at/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err93]; + } else { + vErrors.push(err93); + } + errors++; + } else { + errors = _errs117; + if (vErrors !== null) { + if (_errs117) { + vErrors.length = _errs117; + } else { + vErrors = null; + } + } + } + } + if (data26.estimate_source !== undefined) { + let data32 = data26.estimate_source; + const _errs123 = errors; + let valid20 = false; + const _errs124 = errors; + if (typeof data32 !== "string") { + const err94 = { + instancePath: instancePath + "/sizing/estimate_source", + schemaPath: "#/$defs/RunSizeClassDecision/properties/estimate_source/anyOf/0/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err94]; + } else { + vErrors.push(err94); + } + errors++; + } + var _valid13 = _errs124 === errors; + valid20 = valid20 || _valid13; + const _errs126 = errors; + if (data32 !== null) { + const err95 = { + instancePath: instancePath + "/sizing/estimate_source", + schemaPath: "#/$defs/RunSizeClassDecision/properties/estimate_source/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err95]; + } else { + vErrors.push(err95); + } + errors++; + } + var _valid13 = _errs126 === errors; + valid20 = valid20 || _valid13; + if (!valid20) { + const err96 = { + instancePath: instancePath + "/sizing/estimate_source", + schemaPath: "#/$defs/RunSizeClassDecision/properties/estimate_source/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err96]; + } else { + vErrors.push(err96); + } + errors++; + } else { + errors = _errs123; + if (vErrors !== null) { + if (_errs123) { + vErrors.length = _errs123; + } else { + vErrors = null; + } + } + } + } + if (data26.estimated_input_bytes !== undefined) { + let data33 = data26.estimated_input_bytes; + const _errs129 = errors; + let valid21 = false; + const _errs130 = errors; + if (!(typeof data33 == "number" && !(data33 % 1) && !isNaN(data33) && isFinite(data33))) { + const err97 = { + instancePath: instancePath + "/sizing/estimated_input_bytes", + schemaPath: + "#/$defs/RunSizeClassDecision/properties/estimated_input_bytes/anyOf/0/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err97]; + } else { + vErrors.push(err97); + } + errors++; + } + if (typeof data33 == "number" && isFinite(data33)) { + if (data33 > 9223372036854776000 || isNaN(data33)) { + const err98 = { + instancePath: instancePath + "/sizing/estimated_input_bytes", + schemaPath: + "#/$defs/RunSizeClassDecision/properties/estimated_input_bytes/anyOf/0/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err98]; + } else { + vErrors.push(err98); + } + errors++; + } + if (data33 < 0 || isNaN(data33)) { + const err99 = { + instancePath: instancePath + "/sizing/estimated_input_bytes", + schemaPath: + "#/$defs/RunSizeClassDecision/properties/estimated_input_bytes/anyOf/0/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err99]; + } else { + vErrors.push(err99); + } + errors++; + } + } + var _valid14 = _errs130 === errors; + valid21 = valid21 || _valid14; + const _errs132 = errors; + if (data33 !== null) { + const err100 = { + instancePath: instancePath + "/sizing/estimated_input_bytes", + schemaPath: + "#/$defs/RunSizeClassDecision/properties/estimated_input_bytes/anyOf/1/type", + keyword: "type", + params: { type: "null" }, + message: "must be null", + }; + if (vErrors === null) { + vErrors = [err100]; + } else { + vErrors.push(err100); + } + errors++; + } + var _valid14 = _errs132 === errors; + valid21 = valid21 || _valid14; + if (!valid21) { + const err101 = { + instancePath: instancePath + "/sizing/estimated_input_bytes", + schemaPath: "#/$defs/RunSizeClassDecision/properties/estimated_input_bytes/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", + }; + if (vErrors === null) { + vErrors = [err101]; + } else { + vErrors.push(err101); + } + errors++; + } else { + errors = _errs129; + if (vErrors !== null) { + if (_errs129) { + vErrors.length = _errs129; + } else { + vErrors = null; + } + } + } + } + if (data26.max_input_bytes !== undefined) { + let data34 = data26.max_input_bytes; + if (!(typeof data34 == "number" && !(data34 % 1) && !isNaN(data34) && isFinite(data34))) { + const err102 = { + instancePath: instancePath + "/sizing/max_input_bytes", + schemaPath: "#/$defs/RunSizeClassDecision/properties/max_input_bytes/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err102]; + } else { + vErrors.push(err102); + } + errors++; + } + if (typeof data34 == "number" && isFinite(data34)) { + if (data34 > 9223372036854776000 || isNaN(data34)) { + const err103 = { + instancePath: instancePath + "/sizing/max_input_bytes", + schemaPath: "#/$defs/RunSizeClassDecision/properties/max_input_bytes/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err103]; + } else { + vErrors.push(err103); + } + errors++; + } + if (data34 < 0 || isNaN(data34)) { + const err104 = { + instancePath: instancePath + "/sizing/max_input_bytes", + schemaPath: "#/$defs/RunSizeClassDecision/properties/max_input_bytes/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err104]; + } else { + vErrors.push(err104); + } + errors++; + } + } + } + if (data26.memory_mib !== undefined) { + let data35 = data26.memory_mib; + if (!(typeof data35 == "number" && !(data35 % 1) && !isNaN(data35) && isFinite(data35))) { + const err105 = { + instancePath: instancePath + "/sizing/memory_mib", + schemaPath: "#/$defs/RunSizeClassDecision/properties/memory_mib/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err105]; + } else { + vErrors.push(err105); + } + errors++; + } + if (typeof data35 == "number" && isFinite(data35)) { + if (data35 < 1 || isNaN(data35)) { + const err106 = { + instancePath: instancePath + "/sizing/memory_mib", + schemaPath: "#/$defs/RunSizeClassDecision/properties/memory_mib/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 1 }, + message: "must be >= 1", + }; + if (vErrors === null) { + vErrors = [err106]; + } else { + vErrors.push(err106); + } + errors++; + } } - errors++; } - } - } - if (data.assets !== undefined) { - let data2 = data.assets; - if (!(typeof data2 == "number" && !(data2 % 1) && !isNaN(data2) && isFinite(data2))) { - const err7 = { - instancePath: instancePath + "/assets", - schemaPath: "#/properties/assets/type", - keyword: "type", - params: { type: "integer" }, - message: "must be integer", - }; - if (vErrors === null) { - vErrors = [err7]; - } else { - vErrors.push(err7); + if (data26.mode !== undefined) { + let data36 = data26.mode; + if (typeof data36 !== "string") { + const err107 = { + instancePath: instancePath + "/sizing/mode", + schemaPath: "#/$defs/RunSizeClassDecision/properties/mode/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err107]; + } else { + vErrors.push(err107); + } + errors++; + } + if (!( + data36 === "automatic_input" || + data36 === "manual_override" || + data36 === "configured_default" || + data36 === "scheduled" || + data36 === "replay" + )) { + const err108 = { + instancePath: instancePath + "/sizing/mode", + schemaPath: "#/$defs/RunSizeClassDecision/properties/mode/enum", + keyword: "enum", + params: { allowedValues: schema308.properties.mode.enum }, + message: "must be equal to one of the allowed values", + }; + if (vErrors === null) { + vErrors = [err108]; + } else { + vErrors.push(err108); + } + errors++; + } } - errors++; - } - if (typeof data2 == "number" && isFinite(data2)) { - if (data2 < 0 || isNaN(data2)) { - const err8 = { - instancePath: instancePath + "/assets", - schemaPath: "#/properties/assets/minimum", - keyword: "minimum", - params: { comparison: ">=", limit: 0 }, - message: "must be >= 0", - }; - if (vErrors === null) { - vErrors = [err8]; - } else { - vErrors.push(err8); + if (data26.selected_size_class !== undefined) { + if (typeof data26.selected_size_class !== "string") { + const err109 = { + instancePath: instancePath + "/sizing/selected_size_class", + schemaPath: "#/$defs/RunSizeClassDecision/properties/selected_size_class/type", + keyword: "type", + params: { type: "string" }, + message: "must be string", + }; + if (vErrors === null) { + vErrors = [err109]; + } else { + vErrors.push(err109); + } + errors++; } - errors++; } - } - } - if (data.can_cancel !== undefined) { - if (typeof data.can_cancel !== "boolean") { - const err9 = { - instancePath: instancePath + "/can_cancel", - schemaPath: "#/properties/can_cancel/type", + } else { + const err110 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/$defs/RunSizeClassDecision/type", keyword: "type", - params: { type: "boolean" }, - message: "must be boolean", + params: { type: "object" }, + message: "must be object", }; if (vErrors === null) { - vErrors = [err9]; + vErrors = [err110]; } else { - vErrors.push(err9); + vErrors.push(err110); } errors++; } - } - if (data.can_replay !== undefined) { - if (typeof data.can_replay !== "boolean") { - const err10 = { - instancePath: instancePath + "/can_replay", - schemaPath: "#/properties/can_replay/type", + var _valid10 = _errs100 === errors; + valid15 = valid15 || _valid10; + const _errs142 = errors; + if (data26 !== null) { + const err111 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/properties/sizing/anyOf/1/type", keyword: "type", - params: { type: "boolean" }, - message: "must be boolean", + params: { type: "null" }, + message: "must be null", }; if (vErrors === null) { - vErrors = [err10]; + vErrors = [err111]; } else { - vErrors.push(err10); + vErrors.push(err111); } errors++; } - } - if (data.endpoints !== undefined) { - let data5 = data.endpoints; - if (!(typeof data5 == "number" && !(data5 % 1) && !isNaN(data5) && isFinite(data5))) { - const err11 = { - instancePath: instancePath + "/endpoints", - schemaPath: "#/properties/endpoints/type", - keyword: "type", - params: { type: "integer" }, - message: "must be integer", + var _valid10 = _errs142 === errors; + valid15 = valid15 || _valid10; + if (!valid15) { + const err112 = { + instancePath: instancePath + "/sizing", + schemaPath: "#/properties/sizing/anyOf", + keyword: "anyOf", + params: {}, + message: "must match a schema in anyOf", }; if (vErrors === null) { - vErrors = [err11]; + vErrors = [err112]; } else { - vErrors.push(err11); + vErrors.push(err112); } errors++; - } - if (typeof data5 == "number" && isFinite(data5)) { - if (data5 < 0 || isNaN(data5)) { - const err12 = { - instancePath: instancePath + "/endpoints", - schemaPath: "#/properties/endpoints/minimum", - keyword: "minimum", - params: { comparison: ">=", limit: 0 }, - message: "must be >= 0", - }; - if (vErrors === null) { - vErrors = [err12]; + } else { + errors = _errs99; + if (vErrors !== null) { + if (_errs99) { + vErrors.length = _errs99; } else { - vErrors.push(err12); + vErrors = null; } - errors++; } } } - if (data.extracted !== undefined) { - let data6 = data.extracted; - if (!(typeof data6 == "number" && !(data6 % 1) && !isNaN(data6) && isFinite(data6))) { - const err13 = { - instancePath: instancePath + "/extracted", - schemaPath: "#/properties/extracted/type", + if (data.skipped !== undefined) { + if (typeof data.skipped !== "boolean") { + const err113 = { + instancePath: instancePath + "/skipped", + schemaPath: "#/properties/skipped/type", keyword: "type", - params: { type: "integer" }, - message: "must be integer", + params: { type: "boolean" }, + message: "must be boolean", }; if (vErrors === null) { - vErrors = [err13]; + vErrors = [err113]; } else { - vErrors.push(err13); + vErrors.push(err113); } errors++; } - if (typeof data6 == "number" && isFinite(data6)) { - if (data6 < 0 || isNaN(data6)) { - const err14 = { - instancePath: instancePath + "/extracted", - schemaPath: "#/properties/extracted/minimum", - keyword: "minimum", - params: { comparison: ">=", limit: 0 }, - message: "must be >= 0", - }; - if (vErrors === null) { - vErrors = [err14]; - } else { - vErrors.push(err14); - } - errors++; - } - } } - if (data.failure_code !== undefined) { - let data7 = data.failure_code; - const _errs17 = errors; - let valid1 = false; - const _errs18 = errors; - if (typeof data7 !== "string") { - const err15 = { - instancePath: instancePath + "/failure_code", - schemaPath: "#/properties/failure_code/anyOf/0/type", + if (data.stage !== undefined) { + let data39 = data.stage; + const _errs147 = errors; + let valid22 = false; + const _errs148 = errors; + if (typeof data39 !== "string") { + const err114 = { + instancePath: instancePath + "/stage", + schemaPath: "#/properties/stage/anyOf/0/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err15]; + vErrors = [err114]; } else { - vErrors.push(err15); + vErrors.push(err114); } errors++; } - var _valid0 = _errs18 === errors; - valid1 = valid1 || _valid0; - const _errs20 = errors; - if (data7 !== null) { - const err16 = { - instancePath: instancePath + "/failure_code", - schemaPath: "#/properties/failure_code/anyOf/1/type", + var _valid15 = _errs148 === errors; + valid22 = valid22 || _valid15; + const _errs150 = errors; + if (data39 !== null) { + const err115 = { + instancePath: instancePath + "/stage", + schemaPath: "#/properties/stage/anyOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null", }; if (vErrors === null) { - vErrors = [err16]; + vErrors = [err115]; } else { - vErrors.push(err16); + vErrors.push(err115); } errors++; } - var _valid0 = _errs20 === errors; - valid1 = valid1 || _valid0; - if (!valid1) { - const err17 = { - instancePath: instancePath + "/failure_code", - schemaPath: "#/properties/failure_code/anyOf", + var _valid15 = _errs150 === errors; + valid22 = valid22 || _valid15; + if (!valid22) { + const err116 = { + instancePath: instancePath + "/stage", + schemaPath: "#/properties/stage/anyOf", keyword: "anyOf", params: {}, message: "must match a schema in anyOf", }; if (vErrors === null) { - vErrors = [err17]; + vErrors = [err116]; } else { - vErrors.push(err17); + vErrors.push(err116); } errors++; } else { - errors = _errs17; + errors = _errs147; if (vErrors !== null) { - if (_errs17) { - vErrors.length = _errs17; + if (_errs147) { + vErrors.length = _errs147; } else { vErrors = null; } } } } - if (data.failure_summary !== undefined) { - let data8 = data.failure_summary; - const _errs23 = errors; - let valid2 = false; - const _errs24 = errors; - if (typeof data8 !== "string") { - const err18 = { - instancePath: instancePath + "/failure_summary", - schemaPath: "#/properties/failure_summary/anyOf/0/type", + if (data.started_at !== undefined) { + let data40 = data.started_at; + const _errs153 = errors; + let valid23 = false; + const _errs154 = errors; + if (typeof data40 !== "string") { + const err117 = { + instancePath: instancePath + "/started_at", + schemaPath: "#/properties/started_at/anyOf/0/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err18]; + vErrors = [err117]; } else { - vErrors.push(err18); + vErrors.push(err117); } errors++; } - var _valid1 = _errs24 === errors; - valid2 = valid2 || _valid1; - const _errs26 = errors; - if (data8 !== null) { - const err19 = { - instancePath: instancePath + "/failure_summary", - schemaPath: "#/properties/failure_summary/anyOf/1/type", + var _valid16 = _errs154 === errors; + valid23 = valid23 || _valid16; + const _errs156 = errors; + if (data40 !== null) { + const err118 = { + instancePath: instancePath + "/started_at", + schemaPath: "#/properties/started_at/anyOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null", }; if (vErrors === null) { - vErrors = [err19]; + vErrors = [err118]; } else { - vErrors.push(err19); + vErrors.push(err118); } errors++; } - var _valid1 = _errs26 === errors; - valid2 = valid2 || _valid1; - if (!valid2) { - const err20 = { - instancePath: instancePath + "/failure_summary", - schemaPath: "#/properties/failure_summary/anyOf", + var _valid16 = _errs156 === errors; + valid23 = valid23 || _valid16; + if (!valid23) { + const err119 = { + instancePath: instancePath + "/started_at", + schemaPath: "#/properties/started_at/anyOf", keyword: "anyOf", params: {}, message: "must match a schema in anyOf", }; if (vErrors === null) { - vErrors = [err20]; + vErrors = [err119]; } else { - vErrors.push(err20); + vErrors.push(err119); } errors++; } else { - errors = _errs23; + errors = _errs153; if (vErrors !== null) { - if (_errs23) { - vErrors.length = _errs23; + if (_errs153) { + vErrors.length = _errs153; } else { vErrors = null; } } } } - if (data.finished_at !== undefined) { - let data9 = data.finished_at; - const _errs29 = errors; - let valid3 = false; - const _errs30 = errors; - if (typeof data9 !== "string") { - const err21 = { - instancePath: instancePath + "/finished_at", - schemaPath: "#/properties/finished_at/anyOf/0/type", + if (data.state !== undefined) { + let data41 = data.state; + if (typeof data41 !== "string") { + const err120 = { + instancePath: instancePath + "/state", + schemaPath: "#/$defs/RunState/type", keyword: "type", params: { type: "string" }, message: "must be string", }; if (vErrors === null) { - vErrors = [err21]; + vErrors = [err120]; } else { - vErrors.push(err21); + vErrors.push(err120); } errors++; } - var _valid2 = _errs30 === errors; - valid3 = valid3 || _valid2; - const _errs32 = errors; - if (data9 !== null) { - const err22 = { - instancePath: instancePath + "/finished_at", - schemaPath: "#/properties/finished_at/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", + if (!( + data41 === "queued" || + data41 === "running" || + data41 === "succeeded" || + data41 === "failed" || + data41 === "canceling" || + data41 === "canceled" || + data41 === "retrying" + )) { + const err121 = { + instancePath: instancePath + "/state", + schemaPath: "#/$defs/RunState/enum", + keyword: "enum", + params: { allowedValues: schema309.enum }, + message: "must be equal to one of the allowed values", }; if (vErrors === null) { - vErrors = [err22]; + vErrors = [err121]; } else { - vErrors.push(err22); + vErrors.push(err121); } errors++; } - var _valid2 = _errs32 === errors; - valid3 = valid3 || _valid2; - if (!valid3) { - const err23 = { - instancePath: instancePath + "/finished_at", - schemaPath: "#/properties/finished_at/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; - if (vErrors === null) { - vErrors = [err23]; - } else { - vErrors.push(err23); + } + if (data.telemetry !== undefined) { + let data42 = data.telemetry; + const _errs162 = errors; + let valid25 = false; + const _errs163 = errors; + if (data42 && typeof data42 == "object" && !Array.isArray(data42)) { + if (data42.duration_ms === undefined) { + const err122 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "duration_ms" }, + message: "must have required property '" + "duration_ms" + "'", + }; + if (vErrors === null) { + vErrors = [err122]; + } else { + vErrors.push(err122); + } + errors++; } - errors++; - } else { - errors = _errs29; - if (vErrors !== null) { - if (_errs29) { - vErrors.length = _errs29; + if (data42.operation_count === undefined) { + const err123 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "operation_count" }, + message: "must have required property '" + "operation_count" + "'", + }; + if (vErrors === null) { + vErrors = [err123]; } else { - vErrors = null; + vErrors.push(err123); + } + errors++; + } + if (data42.retry_count === undefined) { + const err124 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "retry_count" }, + message: "must have required property '" + "retry_count" + "'", + }; + if (vErrors === null) { + vErrors = [err124]; + } else { + vErrors.push(err124); + } + errors++; + } + if (data42.rows_read === undefined) { + const err125 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "rows_read" }, + message: "must have required property '" + "rows_read" + "'", + }; + if (vErrors === null) { + vErrors = [err125]; + } else { + vErrors.push(err125); + } + errors++; + } + if (data42.rows_written === undefined) { + const err126 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "rows_written" }, + message: "must have required property '" + "rows_written" + "'", + }; + if (vErrors === null) { + vErrors = [err126]; + } else { + vErrors.push(err126); + } + errors++; + } + if (data42.rows_affected === undefined) { + const err127 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "rows_affected" }, + message: "must have required property '" + "rows_affected" + "'", + }; + if (vErrors === null) { + vErrors = [err127]; + } else { + vErrors.push(err127); + } + errors++; + } + if (data42.bytes_read === undefined) { + const err128 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "bytes_read" }, + message: "must have required property '" + "bytes_read" + "'", + }; + if (vErrors === null) { + vErrors = [err128]; + } else { + vErrors.push(err128); + } + errors++; + } + if (data42.bytes_written === undefined) { + const err129 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "bytes_written" }, + message: "must have required property '" + "bytes_written" + "'", + }; + if (vErrors === null) { + vErrors = [err129]; + } else { + vErrors.push(err129); + } + errors++; + } + if (data42.bytes_processed === undefined) { + const err130 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "bytes_processed" }, + message: "must have required property '" + "bytes_processed" + "'", + }; + if (vErrors === null) { + vErrors = [err130]; + } else { + vErrors.push(err130); + } + errors++; + } + if (data42.bytes_billed === undefined) { + const err131 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "bytes_billed" }, + message: "must have required property '" + "bytes_billed" + "'", + }; + if (vErrors === null) { + vErrors = [err131]; + } else { + vErrors.push(err131); + } + errors++; + } + if (data42.queue_duration_ms === undefined) { + const err132 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "queue_duration_ms" }, + message: "must have required property '" + "queue_duration_ms" + "'", + }; + if (vErrors === null) { + vErrors = [err132]; + } else { + vErrors.push(err132); + } + errors++; + } + if (data42.execution_duration_ms === undefined) { + const err133 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "execution_duration_ms" }, + message: "must have required property '" + "execution_duration_ms" + "'", + }; + if (vErrors === null) { + vErrors = [err133]; + } else { + vErrors.push(err133); + } + errors++; + } + if (data42.spill_bytes === undefined) { + const err134 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/required", + keyword: "required", + params: { missingProperty: "spill_bytes" }, + message: "must have required property '" + "spill_bytes" + "'", + }; + if (vErrors === null) { + vErrors = [err134]; + } else { + vErrors.push(err134); + } + errors++; + } + for (const key4 in data42) { + if (!func1.call(schema310.properties, key4)) { + const err135 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/additionalProperties", + keyword: "additionalProperties", + params: { additionalProperty: key4 }, + message: "must NOT have additional properties", + }; + if (vErrors === null) { + vErrors = [err135]; + } else { + vErrors.push(err135); + } + errors++; + } + } + if (data42.bytes_billed !== undefined) { + let data43 = data42.bytes_billed; + if (!(typeof data43 == "number" && !(data43 % 1) && !isNaN(data43) && isFinite(data43))) { + const err136 = { + instancePath: instancePath + "/telemetry/bytes_billed", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_billed/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err136]; + } else { + vErrors.push(err136); + } + errors++; + } + if (typeof data43 == "number" && isFinite(data43)) { + if (data43 > 9223372036854776000 || isNaN(data43)) { + const err137 = { + instancePath: instancePath + "/telemetry/bytes_billed", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_billed/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err137]; + } else { + vErrors.push(err137); + } + errors++; + } + if (data43 < 0 || isNaN(data43)) { + const err138 = { + instancePath: instancePath + "/telemetry/bytes_billed", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_billed/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err138]; + } else { + vErrors.push(err138); + } + errors++; + } + } + } + if (data42.bytes_processed !== undefined) { + let data44 = data42.bytes_processed; + if (!(typeof data44 == "number" && !(data44 % 1) && !isNaN(data44) && isFinite(data44))) { + const err139 = { + instancePath: instancePath + "/telemetry/bytes_processed", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_processed/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err139]; + } else { + vErrors.push(err139); + } + errors++; + } + if (typeof data44 == "number" && isFinite(data44)) { + if (data44 > 9223372036854776000 || isNaN(data44)) { + const err140 = { + instancePath: instancePath + "/telemetry/bytes_processed", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_processed/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err140]; + } else { + vErrors.push(err140); + } + errors++; + } + if (data44 < 0 || isNaN(data44)) { + const err141 = { + instancePath: instancePath + "/telemetry/bytes_processed", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_processed/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err141]; + } else { + vErrors.push(err141); + } + errors++; + } + } + } + if (data42.bytes_read !== undefined) { + let data45 = data42.bytes_read; + if (!(typeof data45 == "number" && !(data45 % 1) && !isNaN(data45) && isFinite(data45))) { + const err142 = { + instancePath: instancePath + "/telemetry/bytes_read", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_read/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err142]; + } else { + vErrors.push(err142); + } + errors++; + } + if (typeof data45 == "number" && isFinite(data45)) { + if (data45 > 9223372036854776000 || isNaN(data45)) { + const err143 = { + instancePath: instancePath + "/telemetry/bytes_read", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_read/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err143]; + } else { + vErrors.push(err143); + } + errors++; + } + if (data45 < 0 || isNaN(data45)) { + const err144 = { + instancePath: instancePath + "/telemetry/bytes_read", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_read/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err144]; + } else { + vErrors.push(err144); + } + errors++; + } + } + } + if (data42.bytes_written !== undefined) { + let data46 = data42.bytes_written; + if (!(typeof data46 == "number" && !(data46 % 1) && !isNaN(data46) && isFinite(data46))) { + const err145 = { + instancePath: instancePath + "/telemetry/bytes_written", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_written/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err145]; + } else { + vErrors.push(err145); + } + errors++; + } + if (typeof data46 == "number" && isFinite(data46)) { + if (data46 > 9223372036854776000 || isNaN(data46)) { + const err146 = { + instancePath: instancePath + "/telemetry/bytes_written", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_written/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err146]; + } else { + vErrors.push(err146); + } + errors++; + } + if (data46 < 0 || isNaN(data46)) { + const err147 = { + instancePath: instancePath + "/telemetry/bytes_written", + schemaPath: "#/$defs/RunTelemetrySummary/properties/bytes_written/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err147]; + } else { + vErrors.push(err147); + } + errors++; + } + } + } + if (data42.duration_ms !== undefined) { + let data47 = data42.duration_ms; + if (!(typeof data47 == "number" && !(data47 % 1) && !isNaN(data47) && isFinite(data47))) { + const err148 = { + instancePath: instancePath + "/telemetry/duration_ms", + schemaPath: "#/$defs/RunTelemetrySummary/properties/duration_ms/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err148]; + } else { + vErrors.push(err148); + } + errors++; + } + if (typeof data47 == "number" && isFinite(data47)) { + if (data47 > 9223372036854776000 || isNaN(data47)) { + const err149 = { + instancePath: instancePath + "/telemetry/duration_ms", + schemaPath: "#/$defs/RunTelemetrySummary/properties/duration_ms/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err149]; + } else { + vErrors.push(err149); + } + errors++; + } + if (data47 < 0 || isNaN(data47)) { + const err150 = { + instancePath: instancePath + "/telemetry/duration_ms", + schemaPath: "#/$defs/RunTelemetrySummary/properties/duration_ms/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err150]; + } else { + vErrors.push(err150); + } + errors++; + } } } - } - } - if (data.logs_available !== undefined) { - if (typeof data.logs_available !== "boolean") { - const err24 = { - instancePath: instancePath + "/logs_available", - schemaPath: "#/properties/logs_available/type", - keyword: "type", - params: { type: "boolean" }, - message: "must be boolean", - }; - if (vErrors === null) { - vErrors = [err24]; - } else { - vErrors.push(err24); + if (data42.execution_duration_ms !== undefined) { + let data48 = data42.execution_duration_ms; + if (!(typeof data48 == "number" && !(data48 % 1) && !isNaN(data48) && isFinite(data48))) { + const err151 = { + instancePath: instancePath + "/telemetry/execution_duration_ms", + schemaPath: "#/$defs/RunTelemetrySummary/properties/execution_duration_ms/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err151]; + } else { + vErrors.push(err151); + } + errors++; + } + if (typeof data48 == "number" && isFinite(data48)) { + if (data48 > 9223372036854776000 || isNaN(data48)) { + const err152 = { + instancePath: instancePath + "/telemetry/execution_duration_ms", + schemaPath: "#/$defs/RunTelemetrySummary/properties/execution_duration_ms/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err152]; + } else { + vErrors.push(err152); + } + errors++; + } + if (data48 < 0 || isNaN(data48)) { + const err153 = { + instancePath: instancePath + "/telemetry/execution_duration_ms", + schemaPath: "#/$defs/RunTelemetrySummary/properties/execution_duration_ms/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err153]; + } else { + vErrors.push(err153); + } + errors++; + } + } } - errors++; - } - } - if (data.models !== undefined) { - let data11 = data.models; - if (!(typeof data11 == "number" && !(data11 % 1) && !isNaN(data11) && isFinite(data11))) { - const err25 = { - instancePath: instancePath + "/models", - schemaPath: "#/properties/models/type", - keyword: "type", - params: { type: "integer" }, - message: "must be integer", - }; - if (vErrors === null) { - vErrors = [err25]; - } else { - vErrors.push(err25); + if (data42.operation_count !== undefined) { + let data49 = data42.operation_count; + if (!(typeof data49 == "number" && !(data49 % 1) && !isNaN(data49) && isFinite(data49))) { + const err154 = { + instancePath: instancePath + "/telemetry/operation_count", + schemaPath: "#/$defs/RunTelemetrySummary/properties/operation_count/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err154]; + } else { + vErrors.push(err154); + } + errors++; + } + if (typeof data49 == "number" && isFinite(data49)) { + if (data49 > 9223372036854776000 || isNaN(data49)) { + const err155 = { + instancePath: instancePath + "/telemetry/operation_count", + schemaPath: "#/$defs/RunTelemetrySummary/properties/operation_count/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err155]; + } else { + vErrors.push(err155); + } + errors++; + } + if (data49 < 0 || isNaN(data49)) { + const err156 = { + instancePath: instancePath + "/telemetry/operation_count", + schemaPath: "#/$defs/RunTelemetrySummary/properties/operation_count/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err156]; + } else { + vErrors.push(err156); + } + errors++; + } + } } - errors++; - } - if (typeof data11 == "number" && isFinite(data11)) { - if (data11 < 0 || isNaN(data11)) { - const err26 = { - instancePath: instancePath + "/models", - schemaPath: "#/properties/models/minimum", - keyword: "minimum", - params: { comparison: ">=", limit: 0 }, - message: "must be >= 0", - }; - if (vErrors === null) { - vErrors = [err26]; - } else { - vErrors.push(err26); + if (data42.queue_duration_ms !== undefined) { + let data50 = data42.queue_duration_ms; + if (!(typeof data50 == "number" && !(data50 % 1) && !isNaN(data50) && isFinite(data50))) { + const err157 = { + instancePath: instancePath + "/telemetry/queue_duration_ms", + schemaPath: "#/$defs/RunTelemetrySummary/properties/queue_duration_ms/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err157]; + } else { + vErrors.push(err157); + } + errors++; + } + if (typeof data50 == "number" && isFinite(data50)) { + if (data50 > 9223372036854776000 || isNaN(data50)) { + const err158 = { + instancePath: instancePath + "/telemetry/queue_duration_ms", + schemaPath: "#/$defs/RunTelemetrySummary/properties/queue_duration_ms/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err158]; + } else { + vErrors.push(err158); + } + errors++; + } + if (data50 < 0 || isNaN(data50)) { + const err159 = { + instancePath: instancePath + "/telemetry/queue_duration_ms", + schemaPath: "#/$defs/RunTelemetrySummary/properties/queue_duration_ms/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err159]; + } else { + vErrors.push(err159); + } + errors++; + } } - errors++; } - } - } - if (data.run_id !== undefined) { - if (typeof data.run_id !== "string") { - const err27 = { - instancePath: instancePath + "/run_id", - schemaPath: "#/properties/run_id/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err27]; - } else { - vErrors.push(err27); + if (data42.retry_count !== undefined) { + let data51 = data42.retry_count; + if (!(typeof data51 == "number" && !(data51 % 1) && !isNaN(data51) && isFinite(data51))) { + const err160 = { + instancePath: instancePath + "/telemetry/retry_count", + schemaPath: "#/$defs/RunTelemetrySummary/properties/retry_count/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err160]; + } else { + vErrors.push(err160); + } + errors++; + } + if (typeof data51 == "number" && isFinite(data51)) { + if (data51 > 9223372036854776000 || isNaN(data51)) { + const err161 = { + instancePath: instancePath + "/telemetry/retry_count", + schemaPath: "#/$defs/RunTelemetrySummary/properties/retry_count/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err161]; + } else { + vErrors.push(err161); + } + errors++; + } + if (data51 < 0 || isNaN(data51)) { + const err162 = { + instancePath: instancePath + "/telemetry/retry_count", + schemaPath: "#/$defs/RunTelemetrySummary/properties/retry_count/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err162]; + } else { + vErrors.push(err162); + } + errors++; + } + } } - errors++; - } - } - if (data.stage !== undefined) { - let data13 = data.stage; - const _errs41 = errors; - let valid4 = false; - const _errs42 = errors; - if (typeof data13 !== "string") { - const err28 = { - instancePath: instancePath + "/stage", - schemaPath: "#/properties/stage/anyOf/0/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err28]; - } else { - vErrors.push(err28); + if (data42.rows_affected !== undefined) { + let data52 = data42.rows_affected; + if (!(typeof data52 == "number" && !(data52 % 1) && !isNaN(data52) && isFinite(data52))) { + const err163 = { + instancePath: instancePath + "/telemetry/rows_affected", + schemaPath: "#/$defs/RunTelemetrySummary/properties/rows_affected/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err163]; + } else { + vErrors.push(err163); + } + errors++; + } + if (typeof data52 == "number" && isFinite(data52)) { + if (data52 > 9223372036854776000 || isNaN(data52)) { + const err164 = { + instancePath: instancePath + "/telemetry/rows_affected", + schemaPath: "#/$defs/RunTelemetrySummary/properties/rows_affected/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err164]; + } else { + vErrors.push(err164); + } + errors++; + } + if (data52 < 0 || isNaN(data52)) { + const err165 = { + instancePath: instancePath + "/telemetry/rows_affected", + schemaPath: "#/$defs/RunTelemetrySummary/properties/rows_affected/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err165]; + } else { + vErrors.push(err165); + } + errors++; + } + } } - errors++; - } - var _valid3 = _errs42 === errors; - valid4 = valid4 || _valid3; - const _errs44 = errors; - if (data13 !== null) { - const err29 = { - instancePath: instancePath + "/stage", - schemaPath: "#/properties/stage/anyOf/1/type", - keyword: "type", - params: { type: "null" }, - message: "must be null", - }; - if (vErrors === null) { - vErrors = [err29]; - } else { - vErrors.push(err29); + if (data42.rows_read !== undefined) { + let data53 = data42.rows_read; + if (!(typeof data53 == "number" && !(data53 % 1) && !isNaN(data53) && isFinite(data53))) { + const err166 = { + instancePath: instancePath + "/telemetry/rows_read", + schemaPath: "#/$defs/RunTelemetrySummary/properties/rows_read/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err166]; + } else { + vErrors.push(err166); + } + errors++; + } + if (typeof data53 == "number" && isFinite(data53)) { + if (data53 > 9223372036854776000 || isNaN(data53)) { + const err167 = { + instancePath: instancePath + "/telemetry/rows_read", + schemaPath: "#/$defs/RunTelemetrySummary/properties/rows_read/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err167]; + } else { + vErrors.push(err167); + } + errors++; + } + if (data53 < 0 || isNaN(data53)) { + const err168 = { + instancePath: instancePath + "/telemetry/rows_read", + schemaPath: "#/$defs/RunTelemetrySummary/properties/rows_read/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err168]; + } else { + vErrors.push(err168); + } + errors++; + } + } } - errors++; - } - var _valid3 = _errs44 === errors; - valid4 = valid4 || _valid3; - if (!valid4) { - const err30 = { - instancePath: instancePath + "/stage", - schemaPath: "#/properties/stage/anyOf", - keyword: "anyOf", - params: {}, - message: "must match a schema in anyOf", - }; - if (vErrors === null) { - vErrors = [err30]; - } else { - vErrors.push(err30); + if (data42.rows_written !== undefined) { + let data54 = data42.rows_written; + if (!(typeof data54 == "number" && !(data54 % 1) && !isNaN(data54) && isFinite(data54))) { + const err169 = { + instancePath: instancePath + "/telemetry/rows_written", + schemaPath: "#/$defs/RunTelemetrySummary/properties/rows_written/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err169]; + } else { + vErrors.push(err169); + } + errors++; + } + if (typeof data54 == "number" && isFinite(data54)) { + if (data54 > 9223372036854776000 || isNaN(data54)) { + const err170 = { + instancePath: instancePath + "/telemetry/rows_written", + schemaPath: "#/$defs/RunTelemetrySummary/properties/rows_written/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err170]; + } else { + vErrors.push(err170); + } + errors++; + } + if (data54 < 0 || isNaN(data54)) { + const err171 = { + instancePath: instancePath + "/telemetry/rows_written", + schemaPath: "#/$defs/RunTelemetrySummary/properties/rows_written/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err171]; + } else { + vErrors.push(err171); + } + errors++; + } + } } - errors++; - } else { - errors = _errs41; - if (vErrors !== null) { - if (_errs41) { - vErrors.length = _errs41; - } else { - vErrors = null; + if (data42.spill_bytes !== undefined) { + let data55 = data42.spill_bytes; + if (!(typeof data55 == "number" && !(data55 % 1) && !isNaN(data55) && isFinite(data55))) { + const err172 = { + instancePath: instancePath + "/telemetry/spill_bytes", + schemaPath: "#/$defs/RunTelemetrySummary/properties/spill_bytes/type", + keyword: "type", + params: { type: "integer" }, + message: "must be integer", + }; + if (vErrors === null) { + vErrors = [err172]; + } else { + vErrors.push(err172); + } + errors++; + } + if (typeof data55 == "number" && isFinite(data55)) { + if (data55 > 9223372036854776000 || isNaN(data55)) { + const err173 = { + instancePath: instancePath + "/telemetry/spill_bytes", + schemaPath: "#/$defs/RunTelemetrySummary/properties/spill_bytes/maximum", + keyword: "maximum", + params: { comparison: "<=", limit: 9223372036854776000 }, + message: "must be <= 9223372036854776000", + }; + if (vErrors === null) { + vErrors = [err173]; + } else { + vErrors.push(err173); + } + errors++; + } + if (data55 < 0 || isNaN(data55)) { + const err174 = { + instancePath: instancePath + "/telemetry/spill_bytes", + schemaPath: "#/$defs/RunTelemetrySummary/properties/spill_bytes/minimum", + keyword: "minimum", + params: { comparison: ">=", limit: 0 }, + message: "must be >= 0", + }; + if (vErrors === null) { + vErrors = [err174]; + } else { + vErrors.push(err174); + } + errors++; + } } } - } - } - if (data.started_at !== undefined) { - let data14 = data.started_at; - const _errs47 = errors; - let valid5 = false; - const _errs48 = errors; - if (typeof data14 !== "string") { - const err31 = { - instancePath: instancePath + "/started_at", - schemaPath: "#/properties/started_at/anyOf/0/type", + } else { + const err175 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/$defs/RunTelemetrySummary/type", keyword: "type", - params: { type: "string" }, - message: "must be string", + params: { type: "object" }, + message: "must be object", }; if (vErrors === null) { - vErrors = [err31]; + vErrors = [err175]; } else { - vErrors.push(err31); + vErrors.push(err175); } errors++; } - var _valid4 = _errs48 === errors; - valid5 = valid5 || _valid4; - const _errs50 = errors; - if (data14 !== null) { - const err32 = { - instancePath: instancePath + "/started_at", - schemaPath: "#/properties/started_at/anyOf/1/type", + var _valid17 = _errs163 === errors; + valid25 = valid25 || _valid17; + const _errs193 = errors; + if (data42 !== null) { + const err176 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/properties/telemetry/anyOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null", }; if (vErrors === null) { - vErrors = [err32]; + vErrors = [err176]; } else { - vErrors.push(err32); + vErrors.push(err176); } errors++; } - var _valid4 = _errs50 === errors; - valid5 = valid5 || _valid4; - if (!valid5) { - const err33 = { - instancePath: instancePath + "/started_at", - schemaPath: "#/properties/started_at/anyOf", + var _valid17 = _errs193 === errors; + valid25 = valid25 || _valid17; + if (!valid25) { + const err177 = { + instancePath: instancePath + "/telemetry", + schemaPath: "#/properties/telemetry/anyOf", keyword: "anyOf", params: {}, message: "must match a schema in anyOf", }; if (vErrors === null) { - vErrors = [err33]; + vErrors = [err177]; } else { - vErrors.push(err33); + vErrors.push(err177); } errors++; } else { - errors = _errs47; + errors = _errs162; if (vErrors !== null) { - if (_errs47) { - vErrors.length = _errs47; + if (_errs162) { + vErrors.length = _errs162; } else { vErrors = null; } } } } - if (data.state !== undefined) { - let data15 = data.state; - if (typeof data15 !== "string") { - const err34 = { - instancePath: instancePath + "/state", - schemaPath: "#/$defs/RunState/type", - keyword: "type", - params: { type: "string" }, - message: "must be string", - }; - if (vErrors === null) { - vErrors = [err34]; - } else { - vErrors.push(err34); - } - errors++; - } - if (!( - data15 === "queued" || - data15 === "running" || - data15 === "succeeded" || - data15 === "failed" || - data15 === "canceling" || - data15 === "canceled" || - data15 === "retrying" - )) { - const err35 = { - instancePath: instancePath + "/state", - schemaPath: "#/$defs/RunState/enum", - keyword: "enum", - params: { allowedValues: schema280.enum }, - message: "must be equal to one of the allowed values", - }; - if (vErrors === null) { - vErrors = [err35]; - } else { - vErrors.push(err35); - } - errors++; - } - } } else { - const err36 = { + const err178 = { instancePath, schemaPath: "#/type", keyword: "type", @@ -44936,30 +55486,30 @@ function validate415( message: "must be object", }; if (vErrors === null) { - vErrors = [err36]; + vErrors = [err178]; } else { - vErrors.push(err36); + vErrors.push(err178); } errors++; } - validate415.errors = vErrors; + validate432.errors = vErrors; return errors === 0; } -validate415.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate432.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -export const validatePipelineNode = validate416; -const schema281 = { +export const validatePipelineNode = validate433; +const schema311 = { $id: "urn:druff:generated:GraphNodeDocument", $ref: "urn:dander:control:contracts:v1:pipeline-graph#/$defs/GraphNodeDocument", }; -function validate417( +function validate434( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate417.evaluated; + const evaluated0 = validate434.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -44970,9 +55520,9 @@ function validate417( let valid0 = false; const _errs1 = errors; if ( - !validate315(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate329(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate315.errors : vErrors.concat(validate315.errors); + vErrors = vErrors === null ? validate329.errors : vErrors.concat(validate329.errors); errors = vErrors.length; } var _valid0 = _errs1 === errors; @@ -44982,9 +55532,9 @@ function validate417( } const _errs2 = errors; if ( - !validate357(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate371(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate357.errors : vErrors.concat(validate357.errors); + vErrors = vErrors === null ? validate371.errors : vErrors.concat(validate371.errors); errors = vErrors.length; } var _valid0 = _errs2 === errors; @@ -44996,9 +55546,9 @@ function validate417( } const _errs3 = errors; if ( - !validate386(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate400(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate386.errors : vErrors.concat(validate386.errors); + vErrors = vErrors === null ? validate400.errors : vErrors.concat(validate400.errors); errors = vErrors.length; } var _valid0 = _errs3 === errors; @@ -45010,9 +55560,9 @@ function validate417( } const _errs4 = errors; if ( - !validate399(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate413(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate399.errors : vErrors.concat(validate399.errors); + vErrors = vErrors === null ? validate413.errors : vErrors.concat(validate413.errors); errors = vErrors.length; } var _valid0 = _errs4 === errors; @@ -45046,19 +55596,19 @@ function validate417( } } } - validate417.errors = vErrors; + validate434.errors = vErrors; evaluated0.props = props0; return errors === 0; } -validate417.evaluated = { dynamicProps: true, dynamicItems: false }; +validate434.evaluated = { dynamicProps: true, dynamicItems: false }; -function validate416( +function validate433( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { /*# sourceURL="urn:druff:generated:GraphNodeDocument" */ let vErrors = null; let errors = 0; - const evaluated0 = validate416.evaluated; + const evaluated0 = validate433.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -45066,32 +55616,32 @@ function validate416( evaluated0.items = undefined; } if ( - !validate417(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate434(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate417.errors : vErrors.concat(validate417.errors); + vErrors = vErrors === null ? validate434.errors : vErrors.concat(validate434.errors); errors = vErrors.length; } else { - var props0 = validate417.evaluated.props; + var props0 = validate434.evaluated.props; } - validate416.errors = vErrors; + validate433.errors = vErrors; evaluated0.props = props0; return errors === 0; } -validate416.evaluated = { dynamicProps: true, dynamicItems: false }; +validate433.evaluated = { dynamicProps: true, dynamicItems: false }; -export const validateNodeField = validate423; -const schema283 = { +export const validateNodeField = validate440; +const schema313 = { $id: "urn:druff:generated:NodeFieldDocument", $ref: "urn:dander:control:contracts:v1:pipeline-graph#/$defs/NodeFieldDocument", }; -function validate424( +function validate441( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate424.evaluated; + const evaluated0 = validate441.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -45523,7 +56073,7 @@ function validate424( } if (data.metadata !== undefined) { if ( - !validate291(data.metadata, { + !validate305(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -45531,7 +56081,7 @@ function validate424( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); errors = vErrors.length; } } @@ -45575,7 +56125,7 @@ function validate424( const len1 = data10.length; for (let i1 = 0; i1 < len1; i1++) { if ( - !validate327(data10[i1], { + !validate341(data10[i1], { instancePath: instancePath + "/tests/" + i1, parentData: data10, parentDataProperty: i1, @@ -45583,7 +56133,7 @@ function validate424( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate327.errors : vErrors.concat(validate327.errors); + vErrors = vErrors === null ? validate341.errors : vErrors.concat(validate341.errors); errors = vErrors.length; } } @@ -45635,18 +56185,18 @@ function validate424( } errors++; } - validate424.errors = vErrors; + validate441.errors = vErrors; return errors === 0; } -validate424.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate441.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate423( +function validate440( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { /*# sourceURL="urn:druff:generated:NodeFieldDocument" */ let vErrors = null; let errors = 0; - const evaluated0 = validate423.evaluated; + const evaluated0 = validate440.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -45654,29 +56204,29 @@ function validate423( evaluated0.items = undefined; } if ( - !validate424(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate441(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate424.errors : vErrors.concat(validate424.errors); + vErrors = vErrors === null ? validate441.errors : vErrors.concat(validate441.errors); errors = vErrors.length; } - validate423.errors = vErrors; + validate440.errors = vErrors; return errors === 0; } -validate423.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate440.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -export const validateFieldTest = validate428; -const schema286 = { +export const validateFieldTest = validate445; +const schema316 = { $id: "urn:druff:generated:FieldTestDocument", $ref: "urn:dander:control:contracts:v1:pipeline-graph#/$defs/FieldTestDocument", }; -function validate429( +function validate446( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate429.evaluated; + const evaluated0 = validate446.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -45687,9 +56237,9 @@ function validate429( let valid0 = false; const _errs1 = errors; if ( - !validate328(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate342(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate328.errors : vErrors.concat(validate328.errors); + vErrors = vErrors === null ? validate342.errors : vErrors.concat(validate342.errors); errors = vErrors.length; } var _valid0 = _errs1 === errors; @@ -45699,9 +56249,9 @@ function validate429( } const _errs2 = errors; if ( - !validate331(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate345(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate331.errors : vErrors.concat(validate331.errors); + vErrors = vErrors === null ? validate345.errors : vErrors.concat(validate345.errors); errors = vErrors.length; } var _valid0 = _errs2 === errors; @@ -45713,9 +56263,9 @@ function validate429( } const _errs3 = errors; if ( - !validate334(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate348(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate334.errors : vErrors.concat(validate334.errors); + vErrors = vErrors === null ? validate348.errors : vErrors.concat(validate348.errors); errors = vErrors.length; } var _valid0 = _errs3 === errors; @@ -45727,9 +56277,9 @@ function validate429( } const _errs4 = errors; if ( - !validate337(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate351(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate337.errors : vErrors.concat(validate337.errors); + vErrors = vErrors === null ? validate351.errors : vErrors.concat(validate351.errors); errors = vErrors.length; } var _valid0 = _errs4 === errors; @@ -45763,19 +56313,19 @@ function validate429( } } } - validate429.errors = vErrors; + validate446.errors = vErrors; evaluated0.props = props0; return errors === 0; } -validate429.evaluated = { dynamicProps: true, dynamicItems: false }; +validate446.evaluated = { dynamicProps: true, dynamicItems: false }; -function validate428( +function validate445( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { /*# sourceURL="urn:druff:generated:FieldTestDocument" */ let vErrors = null; let errors = 0; - const evaluated0 = validate428.evaluated; + const evaluated0 = validate445.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -45783,32 +56333,32 @@ function validate428( evaluated0.items = undefined; } if ( - !validate429(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate446(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate429.errors : vErrors.concat(validate429.errors); + vErrors = vErrors === null ? validate446.errors : vErrors.concat(validate446.errors); errors = vErrors.length; } else { - var props0 = validate429.evaluated.props; + var props0 = validate446.evaluated.props; } - validate428.errors = vErrors; + validate445.errors = vErrors; evaluated0.props = props0; return errors === 0; } -validate428.evaluated = { dynamicProps: true, dynamicItems: false }; +validate445.evaluated = { dynamicProps: true, dynamicItems: false }; -export const validateCursorStrategy = validate435; -const schema288 = { +export const validateCursorStrategy = validate452; +const schema318 = { $id: "urn:druff:generated:CursorStrategyDocument", $ref: "urn:dander:control:contracts:v1:pipeline-graph#/$defs/CursorStrategyDocument", }; -function validate436( +function validate453( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate436.evaluated; + const evaluated0 = validate453.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -45866,7 +56416,7 @@ function validate436( if (data.field !== undefined) { let data0 = data.field; if (typeof data0 === "string") { - if (func2(data0) < 1) { + if (func3(data0) < 1) { const err3 = { instancePath: instancePath + "/field", schemaPath: "#/properties/field/minLength", @@ -45919,7 +56469,7 @@ function validate436( instancePath: instancePath + "/kind", schemaPath: "#/properties/kind/enum", keyword: "enum", - params: { allowedValues: schema224.properties.kind.enum }, + params: { allowedValues: schema241.properties.kind.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -45932,7 +56482,7 @@ function validate436( } if (data.metadata !== undefined) { if ( - !validate291(data.metadata, { + !validate305(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -45940,13 +56490,13 @@ function validate436( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); errors = vErrors.length; } } if (data.params !== undefined) { if ( - !validate291(data.params, { + !validate305(data.params, { instancePath: instancePath + "/params", parentData: data, parentDataProperty: "params", @@ -45954,7 +56504,7 @@ function validate436( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); errors = vErrors.length; } } @@ -45973,18 +56523,18 @@ function validate436( } errors++; } - validate436.errors = vErrors; + validate453.errors = vErrors; return errors === 0; } -validate436.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate453.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate435( +function validate452( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { /*# sourceURL="urn:druff:generated:CursorStrategyDocument" */ let vErrors = null; let errors = 0; - const evaluated0 = validate435.evaluated; + const evaluated0 = validate452.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -45992,29 +56542,29 @@ function validate435( evaluated0.items = undefined; } if ( - !validate436(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate453(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate436.errors : vErrors.concat(validate436.errors); + vErrors = vErrors === null ? validate453.errors : vErrors.concat(validate453.errors); errors = vErrors.length; } - validate435.errors = vErrors; + validate452.errors = vErrors; return errors === 0; } -validate435.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate452.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -export const validatePosition = validate440; -const schema290 = { +export const validatePosition = validate457; +const schema320 = { $id: "urn:druff:generated:PositionDocument", $ref: "urn:dander:control:contracts:v1:pipeline-graph#/$defs/PositionDocument", }; -function validate440( +function validate457( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { /*# sourceURL="urn:druff:generated:PositionDocument" */ let vErrors = null; let errors = 0; - const evaluated0 = validate440.evaluated; + const evaluated0 = validate457.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -46125,24 +56675,24 @@ function validate440( } errors++; } - validate440.errors = vErrors; + validate457.errors = vErrors; return errors === 0; } -validate440.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate457.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -export const validateNodeVisual = validate441; -const schema292 = { +export const validateNodeVisual = validate458; +const schema322 = { $id: "urn:druff:generated:NodeVisualDocument", $ref: "urn:dander:control:contracts:v1:pipeline-graph#/$defs/NodeVisualDocument", }; -function validate442( +function validate459( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate442.evaluated; + const evaluated0 = validate459.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -46461,18 +57011,18 @@ function validate442( } errors++; } - validate442.errors = vErrors; + validate459.errors = vErrors; return errors === 0; } -validate442.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate459.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate441( +function validate458( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { /*# sourceURL="urn:druff:generated:NodeVisualDocument" */ let vErrors = null; let errors = 0; - const evaluated0 = validate441.evaluated; + const evaluated0 = validate458.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -46480,29 +57030,29 @@ function validate441( evaluated0.items = undefined; } if ( - !validate442(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate459(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate442.errors : vErrors.concat(validate442.errors); + vErrors = vErrors === null ? validate459.errors : vErrors.concat(validate459.errors); errors = vErrors.length; } - validate441.errors = vErrors; + validate458.errors = vErrors; return errors === 0; } -validate441.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate458.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -export const validateTransformation = validate444; -const schema295 = { +export const validateTransformation = validate461; +const schema325 = { $id: "urn:druff:generated:TransformationDocument", $ref: "urn:dander:control:contracts:v1:pipeline-graph#/$defs/TransformationDocument", }; -function validate445( +function validate462( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate445.evaluated; + const evaluated0 = validate462.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -46513,9 +57063,9 @@ function validate445( let valid0 = false; const _errs1 = errors; if ( - !validate297(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate311(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate297.errors : vErrors.concat(validate297.errors); + vErrors = vErrors === null ? validate311.errors : vErrors.concat(validate311.errors); errors = vErrors.length; } var _valid0 = _errs1 === errors; @@ -46525,9 +57075,9 @@ function validate445( } const _errs2 = errors; if ( - !validate300(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate314(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate300.errors : vErrors.concat(validate300.errors); + vErrors = vErrors === null ? validate314.errors : vErrors.concat(validate314.errors); errors = vErrors.length; } var _valid0 = _errs2 === errors; @@ -46539,9 +57089,9 @@ function validate445( } const _errs3 = errors; if ( - !validate303(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate317(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate303.errors : vErrors.concat(validate303.errors); + vErrors = vErrors === null ? validate317.errors : vErrors.concat(validate317.errors); errors = vErrors.length; } var _valid0 = _errs3 === errors; @@ -46553,9 +57103,9 @@ function validate445( } const _errs4 = errors; if ( - !validate306(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate320(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate306.errors : vErrors.concat(validate306.errors); + vErrors = vErrors === null ? validate320.errors : vErrors.concat(validate320.errors); errors = vErrors.length; } var _valid0 = _errs4 === errors; @@ -46589,19 +57139,19 @@ function validate445( } } } - validate445.errors = vErrors; + validate462.errors = vErrors; evaluated0.props = props0; return errors === 0; } -validate445.evaluated = { dynamicProps: true, dynamicItems: false }; +validate462.evaluated = { dynamicProps: true, dynamicItems: false }; -function validate444( +function validate461( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { /*# sourceURL="urn:druff:generated:TransformationDocument" */ let vErrors = null; let errors = 0; - const evaluated0 = validate444.evaluated; + const evaluated0 = validate461.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -46609,32 +57159,32 @@ function validate444( evaluated0.items = undefined; } if ( - !validate445(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate462(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate445.errors : vErrors.concat(validate445.errors); + vErrors = vErrors === null ? validate462.errors : vErrors.concat(validate462.errors); errors = vErrors.length; } else { - var props0 = validate445.evaluated.props; + var props0 = validate462.evaluated.props; } - validate444.errors = vErrors; + validate461.errors = vErrors; evaluated0.props = props0; return errors === 0; } -validate444.evaluated = { dynamicProps: true, dynamicItems: false }; +validate461.evaluated = { dynamicProps: true, dynamicItems: false }; -export const validateFieldMapping = validate451; -const schema297 = { +export const validateFieldMapping = validate468; +const schema327 = { $id: "urn:druff:generated:FieldMappingDocument", $ref: "urn:dander:control:contracts:v1:pipeline-graph#/$defs/FieldMappingDocument", }; -function validate452( +function validate469( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate452.evaluated; + const evaluated0 = validate469.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -46681,7 +57231,7 @@ function validate452( } if (data.metadata !== undefined) { if ( - !validate291(data.metadata, { + !validate305(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -46689,7 +57239,7 @@ function validate452( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); errors = vErrors.length; } } @@ -46781,7 +57331,7 @@ function validate452( let valid2 = false; const _errs13 = errors; if ( - !validate296(data3, { + !validate310(data3, { instancePath: instancePath + "/transformation", parentData: data, parentDataProperty: "transformation", @@ -46789,7 +57339,7 @@ function validate452( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate296.errors : vErrors.concat(validate296.errors); + vErrors = vErrors === null ? validate310.errors : vErrors.concat(validate310.errors); errors = vErrors.length; } var _valid1 = _errs13 === errors; @@ -46852,18 +57402,18 @@ function validate452( } errors++; } - validate452.errors = vErrors; + validate469.errors = vErrors; return errors === 0; } -validate452.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate469.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate451( +function validate468( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { /*# sourceURL="urn:druff:generated:FieldMappingDocument" */ let vErrors = null; let errors = 0; - const evaluated0 = validate451.evaluated; + const evaluated0 = validate468.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -46871,29 +57421,29 @@ function validate451( evaluated0.items = undefined; } if ( - !validate452(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate469(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate452.errors : vErrors.concat(validate452.errors); + vErrors = vErrors === null ? validate469.errors : vErrors.concat(validate469.errors); errors = vErrors.length; } - validate451.errors = vErrors; + validate468.errors = vErrors; return errors === 0; } -validate451.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate468.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -export const validateJoinKeyPair = validate456; -const schema299 = { +export const validateJoinKeyPair = validate473; +const schema329 = { $id: "urn:druff:generated:JoinKeyPairDocument", $ref: "urn:dander:control:contracts:v1:pipeline-graph#/$defs/JoinKeyPairDocument", }; -function validate456( +function validate473( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { /*# sourceURL="urn:druff:generated:JoinKeyPairDocument" */ let vErrors = null; let errors = 0; - const evaluated0 = validate456.evaluated; + const evaluated0 = validate473.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -47002,24 +57552,24 @@ function validate456( } errors++; } - validate456.errors = vErrors; + validate473.errors = vErrors; return errors === 0; } -validate456.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate473.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -export const validateJoin = validate457; -const schema301 = { +export const validateJoin = validate474; +const schema331 = { $id: "urn:druff:generated:JoinDocument", $ref: "urn:dander:control:contracts:v1:pipeline-graph#/$defs/JoinDocument", }; -function validate458( +function validate475( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate458.evaluated; + const evaluated0 = validate475.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -47211,7 +57761,7 @@ function validate458( } if (data.metadata !== undefined) { if ( - !validate291(data.metadata, { + !validate305(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -47219,7 +57769,7 @@ function validate458( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); errors = vErrors.length; } } @@ -47245,7 +57795,7 @@ function validate458( instancePath: instancePath + "/type", schemaPath: "#/properties/type/enum", keyword: "enum", - params: { allowedValues: schema204.properties.type.enum }, + params: { allowedValues: schema221.properties.type.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -47271,18 +57821,18 @@ function validate458( } errors++; } - validate458.errors = vErrors; + validate475.errors = vErrors; return errors === 0; } -validate458.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate475.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate457( +function validate474( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { /*# sourceURL="urn:druff:generated:JoinDocument" */ let vErrors = null; let errors = 0; - const evaluated0 = validate457.evaluated; + const evaluated0 = validate474.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -47290,29 +57840,29 @@ function validate457( evaluated0.items = undefined; } if ( - !validate458(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate475(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate458.errors : vErrors.concat(validate458.errors); + vErrors = vErrors === null ? validate475.errors : vErrors.concat(validate475.errors); errors = vErrors.length; } - validate457.errors = vErrors; + validate474.errors = vErrors; return errors === 0; } -validate457.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate474.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -export const validatePipelineEdge = validate461; -const schema304 = { +export const validatePipelineEdge = validate478; +const schema334 = { $id: "urn:druff:generated:EdgeDocument", $ref: "urn:dander:control:contracts:v1:pipeline-graph#/$defs/EdgeDocument", }; -function validate462( +function validate479( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate462.evaluated; + const evaluated0 = validate479.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -47396,7 +57946,7 @@ function validate462( let valid1 = false; const _errs6 = errors; if ( - !validate290(data1, { + !validate304(data1, { instancePath: instancePath + "/join", parentData: data, parentDataProperty: "join", @@ -47404,7 +57954,7 @@ function validate462( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate290.errors : vErrors.concat(validate290.errors); + vErrors = vErrors === null ? validate304.errors : vErrors.concat(validate304.errors); errors = vErrors.length; } var _valid0 = _errs6 === errors; @@ -47458,7 +58008,7 @@ function validate462( const len0 = data2.length; for (let i0 = 0; i0 < len0; i0++) { if ( - !validate294(data2[i0], { + !validate308(data2[i0], { instancePath: instancePath + "/mappings/" + i0, parentData: data2, parentDataProperty: i0, @@ -47466,7 +58016,7 @@ function validate462( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate294.errors : vErrors.concat(validate294.errors); + vErrors = vErrors === null ? validate308.errors : vErrors.concat(validate308.errors); errors = vErrors.length; } } @@ -47488,7 +58038,7 @@ function validate462( } if (data.metadata !== undefined) { if ( - !validate291(data.metadata, { + !validate305(data.metadata, { instancePath: instancePath + "/metadata", parentData: data, parentDataProperty: "metadata", @@ -47496,7 +58046,7 @@ function validate462( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate291.errors : vErrors.concat(validate291.errors); + vErrors = vErrors === null ? validate305.errors : vErrors.concat(validate305.errors); errors = vErrors.length; } } @@ -47532,18 +58082,18 @@ function validate462( } errors++; } - validate462.errors = vErrors; + validate479.errors = vErrors; return errors === 0; } -validate462.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate479.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate461( +function validate478( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { /*# sourceURL="urn:druff:generated:EdgeDocument" */ let vErrors = null; let errors = 0; - const evaluated0 = validate461.evaluated; + const evaluated0 = validate478.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -47551,29 +58101,29 @@ function validate461( evaluated0.items = undefined; } if ( - !validate462(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate479(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate462.errors : vErrors.concat(validate462.errors); + vErrors = vErrors === null ? validate479.errors : vErrors.concat(validate479.errors); errors = vErrors.length; } - validate461.errors = vErrors; + validate478.errors = vErrors; return errors === 0; } -validate461.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate478.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -export const validateTrigger = validate467; -const schema306 = { +export const validateTrigger = validate484; +const schema336 = { $id: "urn:druff:generated:TriggerDocument", $ref: "urn:dander:control:contracts:v1:pipeline-graph#/$defs/TriggerDocument", }; -function validate468( +function validate485( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate468.evaluated; + const evaluated0 = validate485.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -47584,9 +58134,9 @@ function validate468( let valid0 = false; const _errs1 = errors; if ( - !validate344(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate358(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate344.errors : vErrors.concat(validate344.errors); + vErrors = vErrors === null ? validate358.errors : vErrors.concat(validate358.errors); errors = vErrors.length; } var _valid0 = _errs1 === errors; @@ -47596,9 +58146,9 @@ function validate468( } const _errs2 = errors; if ( - !validate347(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate361(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate347.errors : vErrors.concat(validate347.errors); + vErrors = vErrors === null ? validate361.errors : vErrors.concat(validate361.errors); errors = vErrors.length; } var _valid0 = _errs2 === errors; @@ -47610,9 +58160,9 @@ function validate468( } const _errs3 = errors; if ( - !validate350(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate364(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate350.errors : vErrors.concat(validate350.errors); + vErrors = vErrors === null ? validate364.errors : vErrors.concat(validate364.errors); errors = vErrors.length; } var _valid0 = _errs3 === errors; @@ -47646,19 +58196,19 @@ function validate468( } } } - validate468.errors = vErrors; + validate485.errors = vErrors; evaluated0.props = props0; return errors === 0; } -validate468.evaluated = { dynamicProps: true, dynamicItems: false }; +validate485.evaluated = { dynamicProps: true, dynamicItems: false }; -function validate467( +function validate484( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { /*# sourceURL="urn:druff:generated:TriggerDocument" */ let vErrors = null; let errors = 0; - const evaluated0 = validate467.evaluated; + const evaluated0 = validate484.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -47666,32 +58216,32 @@ function validate467( evaluated0.items = undefined; } if ( - !validate468(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate485(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate468.errors : vErrors.concat(validate468.errors); + vErrors = vErrors === null ? validate485.errors : vErrors.concat(validate485.errors); errors = vErrors.length; } else { - var props0 = validate468.evaluated.props; + var props0 = validate485.evaluated.props; } - validate467.errors = vErrors; + validate484.errors = vErrors; evaluated0.props = props0; return errors === 0; } -validate467.evaluated = { dynamicProps: true, dynamicItems: false }; +validate484.evaluated = { dynamicProps: true, dynamicItems: false }; -export const validateDestination = validate473; -const schema308 = { +export const validateDestination = validate490; +const schema338 = { $id: "urn:druff:generated:DestinationDocument", $ref: "urn:dander:control:contracts:v1:pipeline-graph#/$defs/DestinationDocument", }; -function validate473( +function validate490( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { /*# sourceURL="urn:druff:generated:DestinationDocument" */ let vErrors = null; let errors = 0; - const evaluated0 = validate473.evaluated; + const evaluated0 = validate490.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -47796,7 +58346,7 @@ function validate473( if (data.dataset !== undefined) { let data2 = data.dataset; if (typeof data2 === "string") { - if (func2(data2) < 1) { + if (func3(data2) < 1) { const err5 = { instancePath: instancePath + "/dataset", schemaPath: @@ -47900,7 +58450,7 @@ function validate473( if (data.table !== undefined) { let data4 = data.table; if (typeof data4 === "string") { - if (func2(data4) < 1) { + if (func3(data4) < 1) { const err10 = { instancePath: instancePath + "/table", schemaPath: @@ -47948,24 +58498,24 @@ function validate473( } errors++; } - validate473.errors = vErrors; + validate490.errors = vErrors; return errors === 0; } -validate473.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate490.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -export const validatePartitioning = validate474; -const schema310 = { +export const validatePartitioning = validate491; +const schema340 = { $id: "urn:druff:generated:PartitioningDocument", $ref: "urn:dander:control:contracts:v1:pipeline-graph#/$defs/PartitioningDocument", }; -function validate475( +function validate492( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate475.evaluated; + const evaluated0 = validate492.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -48077,7 +58627,7 @@ function validate475( instancePath: instancePath + "/granularity", schemaPath: "#/$defs/PartitioningType/enum", keyword: "enum", - params: { allowedValues: schema266.enum }, + params: { allowedValues: schema283.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -48120,18 +58670,18 @@ function validate475( } errors++; } - validate475.errors = vErrors; + validate492.errors = vErrors; return errors === 0; } -validate475.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate492.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate474( +function validate491( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { /*# sourceURL="urn:druff:generated:PartitioningDocument" */ let vErrors = null; let errors = 0; - const evaluated0 = validate474.evaluated; + const evaluated0 = validate491.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -48139,29 +58689,29 @@ function validate474( evaluated0.items = undefined; } if ( - !validate475(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate492(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate475.errors : vErrors.concat(validate475.errors); + vErrors = vErrors === null ? validate492.errors : vErrors.concat(validate492.errors); errors = vErrors.length; } - validate474.errors = vErrors; + validate491.errors = vErrors; return errors === 0; } -validate474.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate491.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -export const validateWriter = validate477; -const schema313 = { +export const validateWriter = validate494; +const schema343 = { $id: "urn:druff:generated:WriterDocument", $ref: "urn:dander:control:contracts:v1:pipeline-graph#/$defs/WriterDocument", }; -function validate478( +function validate495( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { let vErrors = null; let errors = 0; - const evaluated0 = validate478.evaluated; + const evaluated0 = validate495.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -48437,7 +58987,7 @@ function validate478( if (data3.dataset !== undefined) { let data6 = data3.dataset; if (typeof data6 === "string") { - if (func2(data6) < 1) { + if (func3(data6) < 1) { const err14 = { instancePath: instancePath + "/destination/dataset", schemaPath: "#/$defs/DestinationDocument/properties/dataset/minLength", @@ -48536,7 +59086,7 @@ function validate478( if (data3.table !== undefined) { let data8 = data3.table; if (typeof data8 === "string") { - if (func2(data8) < 1) { + if (func3(data8) < 1) { const err19 = { instancePath: instancePath + "/destination/table", schemaPath: "#/$defs/DestinationDocument/properties/table/minLength", @@ -48639,7 +59189,7 @@ function validate478( let valid9 = false; const _errs34 = errors; if ( - !validate389(data10, { + !validate403(data10, { instancePath: instancePath + "/partitioning", parentData: data, parentDataProperty: "partitioning", @@ -48647,7 +59197,7 @@ function validate478( dynamicAnchors, }) ) { - vErrors = vErrors === null ? validate389.errors : vErrors.concat(validate389.errors); + vErrors = vErrors === null ? validate403.errors : vErrors.concat(validate403.errors); errors = vErrors.length; } var _valid2 = _errs34 === errors; @@ -48717,7 +59267,7 @@ function validate478( instancePath: instancePath + "/schema_evolution", schemaPath: "#/$defs/SchemaEvolution/enum", keyword: "enum", - params: { allowedValues: schema267.enum }, + params: { allowedValues: schema284.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -48750,7 +59300,7 @@ function validate478( instancePath: instancePath + "/transport", schemaPath: "#/properties/transport/enum", keyword: "enum", - params: { allowedValues: schema263.properties.transport.enum }, + params: { allowedValues: schema280.properties.transport.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -48789,7 +59339,7 @@ function validate478( instancePath: instancePath + "/write_mode", schemaPath: "#/$defs/WriteMode/enum", keyword: "enum", - params: { allowedValues: schema268.enum }, + params: { allowedValues: schema285.enum }, message: "must be equal to one of the allowed values", }; if (vErrors === null) { @@ -48815,18 +59365,18 @@ function validate478( } errors++; } - validate478.errors = vErrors; + validate495.errors = vErrors; return errors === 0; } -validate478.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate495.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; -function validate477( +function validate494( data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}, ) { /*# sourceURL="urn:druff:generated:WriterDocument" */ let vErrors = null; let errors = 0; - const evaluated0 = validate477.evaluated; + const evaluated0 = validate494.evaluated; if (evaluated0.dynamicProps) { evaluated0.props = undefined; } @@ -48834,12 +59384,12 @@ function validate477( evaluated0.items = undefined; } if ( - !validate478(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) + !validate495(data, { instancePath, parentData, parentDataProperty, rootData, dynamicAnchors }) ) { - vErrors = vErrors === null ? validate478.errors : vErrors.concat(validate478.errors); + vErrors = vErrors === null ? validate495.errors : vErrors.concat(validate495.errors); errors = vErrors.length; } - validate477.errors = vErrors; + validate494.errors = vErrors; return errors === 0; } -validate477.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; +validate494.evaluated = { props: true, dynamicProps: false, dynamicItems: false }; diff --git a/src/lib/dander-contracts/generated-contracts.test.ts b/src/lib/dander-contracts/generated-contracts.test.ts index c08386a..4e9ff9a 100644 --- a/src/lib/dander-contracts/generated-contracts.test.ts +++ b/src/lib/dander-contracts/generated-contracts.test.ts @@ -5,7 +5,10 @@ import connectorCatalogFixture from "@/generated/dander-contracts/bundle/fixture import controlBootstrapFixture from "@/generated/dander-contracts/bundle/fixtures/control-bootstrap.json"; import deploymentPreviewFixture from "@/generated/dander-contracts/bundle/fixtures/deployment-preview.json"; import graphCreateFixture from "@/generated/dander-contracts/bundle/fixtures/graph-create.json"; +import graphChangePreviewFixture from "@/generated/dander-contracts/bundle/fixtures/graph-change-preview.json"; import graphPageFixture from "@/generated/dander-contracts/bundle/fixtures/graph-page.json"; +import graphRepairPreviewFixture from "@/generated/dander-contracts/bundle/fixtures/graph-repair-preview.json"; +import graphRepairWindowFixture from "@/generated/dander-contracts/bundle/fixtures/graph-repair-window.json"; import graphResourceFixture from "@/generated/dander-contracts/bundle/fixtures/graph-resource.json"; import graphValidationFixture from "@/generated/dander-contracts/bundle/fixtures/graph-validation.json"; import logPageFixture from "@/generated/dander-contracts/bundle/fixtures/log-page.json"; @@ -16,6 +19,7 @@ import pipelineGraphFixture from "@/generated/dander-contracts/bundle/fixtures/p import pluginCatalogFixture from "@/generated/dander-contracts/bundle/fixtures/plugin-catalog.json"; import projectListFixture from "@/generated/dander-contracts/bundle/fixtures/project-list.json"; import runPageFixture from "@/generated/dander-contracts/bundle/fixtures/run-page.json"; +import runExplanationFixture from "@/generated/dander-contracts/bundle/fixtures/run-explanation.json"; import runRequestFixture from "@/generated/dander-contracts/bundle/fixtures/run-request.json"; import runStatusFixture from "@/generated/dander-contracts/bundle/fixtures/run-status.json"; import { @@ -26,7 +30,10 @@ import { DeploymentPreviewResponseSchema, DANDER_CONTRACT_BUNDLE_SHA256, GraphCreateRequestSchema, + GraphChangePreviewResponseSchema, GraphPageResponseSchema, + GraphRepairPreviewResponseSchema, + GraphRepairWindowSchema, GraphResourceResponseSchema, GraphValidationResponseSchema, IncompatibleDanderContractError, @@ -37,6 +44,7 @@ import { PluginCatalogResponseSchema, ProjectListResponseSchema, RunPageResponseSchema, + RunExplanationResponseSchema, RunRequestSchema, RunStatusResponseSchema, assertCompatibleCapabilities, @@ -51,7 +59,10 @@ const rootFixtures: [string, { parse(value: unknown): unknown }, unknown][] = [ ["Control bootstrap", ControlBootstrapDescriptorSchema, controlBootstrapFixture], ["deployment preview", DeploymentPreviewResponseSchema, deploymentPreviewFixture], ["graph create", GraphCreateRequestSchema, graphCreateFixture], + ["graph change preview", GraphChangePreviewResponseSchema, graphChangePreviewFixture], ["graph page", GraphPageResponseSchema, graphPageFixture], + ["graph repair preview", GraphRepairPreviewResponseSchema, graphRepairPreviewFixture], + ["graph repair window", GraphRepairWindowSchema, graphRepairWindowFixture], ["graph resource", GraphResourceResponseSchema, graphResourceFixture], ["graph validation", GraphValidationResponseSchema, graphValidationFixture], ["bounded log page", LogPageResponseSchema, logPageFixture], @@ -61,6 +72,7 @@ const rootFixtures: [string, { parse(value: unknown): unknown }, unknown][] = [ ["plugin catalog", PluginCatalogResponseSchema, pluginCatalogFixture], ["project list", ProjectListResponseSchema, projectListFixture], ["run page", RunPageResponseSchema, runPageFixture], + ["run explanation", RunExplanationResponseSchema, runExplanationFixture], ["run request", RunRequestSchema, runRequestFixture], ["run status", RunStatusResponseSchema, runStatusFixture], ]; @@ -79,6 +91,22 @@ describe("published Dander contract bundle", () => { expect(() => PipelineGraphDocumentSchema.parse({ ...minimal, provider: "gcp" })).toThrow(); }); + it("preserves repair boundaries and unknown estimates without inventing defaults", () => { + const preview = structuredClone(graphRepairPreviewFixture); + expect(GraphRepairPreviewResponseSchema.parse(preview)).toEqual(preview); + expect(preview.estimated_rows).toBeNull(); + expect(preview.estimated_cost_usd).toBeNull(); + expect(() => + GraphRepairWindowSchema.parse({ ...graphRepairWindowFixture, extract_source: true }), + ).toThrow(); + expect(() => + RunExplanationResponseSchema.parse({ + ...runExplanationFixture, + next_action: { ...runExplanationFixture.next_action, command: "unexpected-command" }, + }), + ).toThrow(); + }); + it("round-trips Dander's representative graph without semantic field loss", () => { const input = structuredClone(pipelineGraphFixture); const graph = PipelineGraphSchema.parse(input); diff --git a/src/lib/dander-contracts/index.ts b/src/lib/dander-contracts/index.ts index 9d33e51..13eebb9 100644 --- a/src/lib/dander-contracts/index.ts +++ b/src/lib/dander-contracts/index.ts @@ -10,8 +10,11 @@ export type { } from "@/generated/dander-contracts/types/connector-catalog"; export type { ControlBootstrapDescriptor } from "@/generated/dander-contracts/types/control-bootstrap"; export type { DeploymentPreviewResponse } from "@/generated/dander-contracts/types/deployment-preview"; +export type { GraphChangePreviewResponse } from "@/generated/dander-contracts/types/graph-change-preview"; export type { GraphCreateRequest } from "@/generated/dander-contracts/types/graph-create"; export type { GraphPageResponse } from "@/generated/dander-contracts/types/graph-page"; +export type { GraphRepairPreviewResponse } from "@/generated/dander-contracts/types/graph-repair-preview"; +export type { GraphRepairWindow } from "@/generated/dander-contracts/types/graph-repair-window"; export type { GraphResourceResponse } from "@/generated/dander-contracts/types/graph-resource"; export type { GraphValidationResponse } from "@/generated/dander-contracts/types/graph-validation"; export type { LogPageResponse } from "@/generated/dander-contracts/types/log-page"; @@ -20,6 +23,7 @@ export type { OperationCatalogResponse } from "@/generated/dander-contracts/type export type { PipelineGraphDocument } from "@/generated/dander-contracts/types/pipeline-graph"; export type { PluginCatalogResponse } from "@/generated/dander-contracts/types/plugin-catalog"; export type { ProjectListResponse } from "@/generated/dander-contracts/types/project-list"; +export type { RunExplanationResponse } from "@/generated/dander-contracts/types/run-explanation"; export type { RunPageResponse } from "@/generated/dander-contracts/types/run-page"; export type { RunRequest } from "@/generated/dander-contracts/types/run-request"; export type { RunStatusResponse } from "@/generated/dander-contracts/types/run-status"; diff --git a/src/lib/dander-contracts/runtime.ts b/src/lib/dander-contracts/runtime.ts index bc563af..804a191 100644 --- a/src/lib/dander-contracts/runtime.ts +++ b/src/lib/dander-contracts/runtime.ts @@ -11,7 +11,10 @@ import { validateFieldMapping, validateFieldTest, validateGraphCreate, + validateGraphChangePreview, validateGraphPage, + validateGraphRepairPreview, + validateGraphRepairWindow, validateGraphResource, validateGraphValidation, validateJoin, @@ -29,6 +32,7 @@ import { validatePosition, validateProjectList, validateRunPage, + validateRunExplanation, validateRunRequest, validateRunStatus, validateTransformation, @@ -101,6 +105,18 @@ export const GraphCreateRequestSchema = generatedContractSchema( "graph create request", validateGraphCreate, ); +export const GraphChangePreviewResponseSchema = generatedContractSchema( + "graph change preview", + validateGraphChangePreview, +); +export const GraphRepairPreviewResponseSchema = generatedContractSchema( + "graph repair preview", + validateGraphRepairPreview, +); +export const GraphRepairWindowSchema = generatedContractSchema( + "graph repair window", + validateGraphRepairWindow, +); export const GraphPageResponseSchema = generatedContractSchema("graph page", validateGraphPage); export const GraphResourceResponseSchema = generatedContractSchema( "graph resource", @@ -132,6 +148,10 @@ export const ProjectListResponseSchema = generatedContractSchema( validateProjectList, ); export const RunPageResponseSchema = generatedContractSchema("run page", validateRunPage); +export const RunExplanationResponseSchema = generatedContractSchema( + "run explanation", + validateRunExplanation, +); export const RunRequestSchema = generatedContractSchema("run request", validateRunRequest); export const RunStatusResponseSchema = generatedContractSchema("run status", validateRunStatus); diff --git a/steering/00-project-overview.md b/steering/00-project-overview.md index 334af02..bf4c0e2 100644 --- a/steering/00-project-overview.md +++ b/steering/00-project-overview.md @@ -80,6 +80,14 @@ execute in the browser; Druff produces/edits the pipeline-graph YAML/JSON and Da Append newest at top. Format: `- YYYY-MM-DD — decision — rationale`. +- 2026-10-01 — **One reviewed journey uses the existing Control boundary** — Hosted authoring + presents one primary action and keeps technical controls under advanced details. Unsaved + change review is bound to the exact draft and saved revision; a saved content hash must match + before the primary run action is available. Date repair is a separate, explicitly scoped + retained-raw output operation, with dates and revision invalidating stale previews. Dander + owns eligibility, execution, atomic output publication and recorded explanations; Druff neither + reimplements these semantics nor guesses missing result counts. See DRUFF-32. + - 2026-08-13 — **Druff 1.0 remains a static generated client of one Dander Control API** — Dander keeps graph and operation semantics, authorization, storage, execution, providers, state, and deployment. Druff uses an external-OIDC public client with authorization code plus PKCE and diff --git a/tickets/DRUFF-32-guided-pipeline-journey.md b/tickets/DRUFF-32-guided-pipeline-journey.md new file mode 100644 index 0000000..b1924b3 --- /dev/null +++ b/tickets/DRUFF-32-guided-pipeline-journey.md @@ -0,0 +1,46 @@ +--- +id: DRUFF-32 +title: Guide graph configuration, reviewed runs and date repair +status: in-review +component: frontend +created: 2026-10-01 +--- + +## Context + +The existing editor exposes persistence, validation and run commands in parallel. Connect those +capabilities into a first-success journey using Dander's published transport contracts, without +adding a browser runtime, provider clients or a second planner. + +## Acceptance Criteria + +- [x] Keep hosted sign-in, capability checks and loopback behavior intact. +- [x] Guide graph selection and configuration to an unsaved change preview, explicit save and run + of the exact reviewed saved graph; draft or saved-content changes invalidate review, and + submissions retain the saved graph's exact opaque revision precondition. +- [x] Show recorded run explanations and unknown measurements truthfully; preserve cancellation, + replay and logs with their existing permissions and idempotency semantics. +- [x] Preview and submit retained-raw date repair with the exact saved revision, date window and + advertised execution environment; explain its limits and never imply historical recovery. +- [x] Preserve existing editing and advanced controls. Verify new state transitions and API + contracts, exercise the browser with synthetic OIDC/API fixtures, and exercise the production + client against Dander's actual Control API. Record native provider proof separately. + +## Design + +One hosted journey panel composes the existing graph, validation and run hooks. A review is bound +to the graph address, draft content and opaque baseline revision, and survives only an exact save. +Date repair is a deliberate preview/start operation. Outcomes come from Dander's deterministic +explanation endpoint. The loopback editor remains separate. + +## Verification + +Final published-contract checks passed: 685 unit/component tests; TypeScript, ESLint, Prettier, static build; all +11 Playwright journeys; real HTTP acceptance against an ephemeral published-wheel Dander RC33 Control +API. Browser OIDC/API fixtures are synthetic. The actual HTTP test covers canonical canvas hash +identity, unsaved preview, exact save and stale preview rejection without a provider backend. + +Contracts were regenerated from the published RC33 GitHub wheel, with exact wheel/bundle hashes +and independent drift verification. This GitHub candidate does not promote the RC20 PyPI beta. +Native repair success and cleanup remain separate operator qualification; +`pnpm test:repair-observation` reads an accepted run without launching another workload. diff --git a/vitest.native-repair.config.ts b/vitest.native-repair.config.ts new file mode 100644 index 0000000..b026dda --- /dev/null +++ b/vitest.native-repair.config.ts @@ -0,0 +1,11 @@ +import path from "node:path"; +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + environment: "node", + include: ["integration/native-repair-observation.test.ts"], + testTimeout: 15_000, + }, + resolve: { alias: { "@": path.resolve(__dirname, "./src") } }, +}); From bd2a9c7d5756598be3835a3051b5b2858ac580d4 Mon Sep 17 00:00:00 2001 From: Harrison O'Connor-Hoover <130776285+harrisonoconnorhover@users.noreply.github.com> Date: Thu, 1 Oct 2026 09:43:33 -0400 Subject: [PATCH 2/3] Patch fixed Caddy dependency vulnerabilities --- Dockerfile | 3 ++- HANDOFF.md | 3 ++- tickets/DRUFF-32-guided-pipeline-journey.md | 6 ++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index e1ad3d5..863e9d7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -29,9 +29,10 @@ ARG TARGETARCH RUN XCADDY_SETCAP=0 CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH \ xcaddy build v2.11.4 \ --output /usr/bin/caddy \ + --replace golang.org/x/crypto=golang.org/x/crypto@v0.55.0 \ --replace golang.org/x/net=golang.org/x/net@v0.56.0 \ --replace golang.org/x/text=golang.org/x/text@v0.39.0 \ - --replace google.golang.org/grpc=google.golang.org/grpc@v1.82.1 + --replace google.golang.org/grpc=google.golang.org/grpc@v1.83.2 FROM scratch AS runner diff --git a/HANDOFF.md b/HANDOFF.md index a9cf076..f810d05 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -20,6 +20,7 @@ For real HTTP contract checks, start an ephemeral Dander Control API and use `DA - Passed all 11 Playwright journeys, including reviewed save/run, date invalidation, repair submission and existing conflict/retry behavior. Browser OIDC/API responses are synthetic. - Passed production-client real HTTP acceptance against an ephemeral Control API installed from the published RC33 wheel: exact hashes, canvas round trip, unsaved preview, save, stale preview rejection and truthful unsupported execution. - Visually inspected the synthetic browser screenshot; font and horizontal overflow defects are corrected. A focused test also confirms late explanations cannot replace newer run status. +- PR #25 frontend/secret checks passed; its container scan found three fixed high findings in existing Caddy dependencies. Pinned x/crypto 0.55.0 and gRPC 1.83.2; protected container recheck is pending. ## Decisions @@ -31,7 +32,7 @@ For real HTTP contract checks, start an ephemeral Dander Control API and use `DA - Candidate version is `0.2.0-rc.1`, paired with the exact published RC33 wheel and contract digest in README. This does not promote the RC20 public beta. - Observe the separately authorized native repair once its accepted run ID is available; no provider workload was launched by Druff tests. -- Commit the coordinated client/generator changes, then complete protected PR, exact-main checks and authorized release steps. +- Complete protected PR #25, exact-main checks and authorized candidate image publication after the container recheck. ## Review First diff --git a/tickets/DRUFF-32-guided-pipeline-journey.md b/tickets/DRUFF-32-guided-pipeline-journey.md index b1924b3..6ada010 100644 --- a/tickets/DRUFF-32-guided-pipeline-journey.md +++ b/tickets/DRUFF-32-guided-pipeline-journey.md @@ -44,3 +44,9 @@ Contracts were regenerated from the published RC33 GitHub wheel, with exact whee and independent drift verification. This GitHub candidate does not promote the RC20 PyPI beta. Native repair success and cleanup remain separate operator qualification; `pnpm test:repair-observation` reads an accepted run without launching another workload. + +Protected PR run `36869153273` passed frontend and secret checks but found three fixed high +vulnerabilities in the existing Caddy binary dependencies. Pin `golang.org/x/crypto` to `v0.55.0` +for CVE-2026-56854 and `google.golang.org/grpc` to `v1.83.2` for CVE-2026-84304 and +CVE-2026-84445. Keep the existing Caddy version, image pins and scan policy; the protected +container build and scan must pass with these replacements before merge. From 5132cf0cb3227993a17020475ea62d984333930b Mon Sep 17 00:00:00 2001 From: Harrison O'Connor-Hoover <130776285+harrisonoconnorhover@users.noreply.github.com> Date: Thu, 1 Oct 2026 10:25:35 -0400 Subject: [PATCH 3/3] Pair guided client with published RC34 Control --- HANDOFF.md | 8 ++++---- README.md | 20 ++++++++++--------- integration/native-repair-observation.test.ts | 6 ++++-- scripts/generate-dander-contracts.mjs | 8 ++++---- src/generated/dander-contracts/metadata.ts | 8 ++++---- .../dander-contracts/types/api-error.ts | 6 +++--- .../dander-contracts/types/capabilities.ts | 6 +++--- .../types/connector-catalog.ts | 6 +++--- .../types/control-bootstrap.ts | 6 +++--- .../types/deployment-preview.ts | 6 +++--- .../types/graph-change-preview.ts | 6 +++--- .../dander-contracts/types/graph-create.ts | 6 +++--- .../dander-contracts/types/graph-page.ts | 6 +++--- .../types/graph-repair-preview.ts | 6 +++--- .../types/graph-repair-window.ts | 6 +++--- .../dander-contracts/types/graph-resource.ts | 6 +++--- .../types/graph-validation.ts | 6 +++--- .../dander-contracts/types/log-page.ts | 6 +++--- .../dander-contracts/types/mutation-result.ts | 6 +++--- .../types/operation-catalog.ts | 6 +++--- .../dander-contracts/types/pipeline-graph.ts | 6 +++--- .../dander-contracts/types/plugin-catalog.ts | 6 +++--- .../dander-contracts/types/project-list.ts | 6 +++--- .../dander-contracts/types/run-explanation.ts | 6 +++--- .../dander-contracts/types/run-page.ts | 6 +++--- .../dander-contracts/types/run-request.ts | 6 +++--- .../dander-contracts/types/run-status.ts | 6 +++--- src/generated/dander-contracts/validators.js | 2 +- tickets/DRUFF-32-guided-pipeline-journey.md | 14 ++++++++----- 29 files changed, 103 insertions(+), 95 deletions(-) diff --git a/HANDOFF.md b/HANDOFF.md index f810d05..4895948 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -18,9 +18,9 @@ For real HTTP contract checks, start an ephemeral Dander Control API and use `DA - Passed 685 unit/component tests, nine artifact checks, TypeScript, ESLint, Prettier and static build against the verified published RC33 wheel; independent contract regeneration reports no drift. - Passed all 11 Playwright journeys, including reviewed save/run, date invalidation, repair submission and existing conflict/retry behavior. Browser OIDC/API responses are synthetic. -- Passed production-client real HTTP acceptance against an ephemeral Control API installed from the published RC33 wheel: exact hashes, canvas round trip, unsaved preview, save, stale preview rejection and truthful unsupported execution. +- Passed real HTTP acceptance against published RC34 Control: exact hashes, canvas round trip, unsaved preview/save, stale rejection and truthful unsupported execution. Final RC34 regeneration/drift, 29 contract tests, 18 journey/API tests, TypeScript and focused lint passed; its bundle is unchanged. - Visually inspected the synthetic browser screenshot; font and horizontal overflow defects are corrected. A focused test also confirms late explanations cannot replace newer run status. -- PR #25 frontend/secret checks passed; its container scan found three fixed high findings in existing Caddy dependencies. Pinned x/crypto 0.55.0 and gRPC 1.83.2; protected container recheck is pending. +- PR #25 initially found three fixed high Caddy dependency findings. Pinned x/crypto 0.55.0 and gRPC 1.83.2; CI `36870826744` passed both architecture scans, reproducibility, runtime checks and frontend/secret checks. ## Decisions @@ -30,9 +30,9 @@ For real HTTP contract checks, start an ephemeral Dander Control API and use `DA ## Remaining -- Candidate version is `0.2.0-rc.1`, paired with the exact published RC33 wheel and contract digest in README. This does not promote the RC20 public beta. +- Candidate version is `0.2.0-rc.1`, paired with published RC34 Control and the unchanged contract digest in README. This does not promote the RC20 public beta. - Observe the separately authorized native repair once its accepted run ID is available; no provider workload was launched by Druff tests. -- Complete protected PR #25, exact-main checks and authorized candidate image publication after the container recheck. +- Complete protected PR #25, exact-main checks and candidate image publication with the final RC34 pin. ## Review First diff --git a/README.md b/README.md index cbb8497..c39cf35 100644 --- a/README.md +++ b/README.md @@ -60,10 +60,10 @@ pnpm dev # http://localhost:3000 ``` Contract output is generated only from the pinned -[`dander-platform==0.9.0rc33` GitHub integration-candidate wheel](https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl), -SHA-256 `2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f`. +[`dander-platform==0.9.0rc34` GitHub integration-candidate wheel](https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl), +SHA-256 `d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad`. The generator verifies the wheel, manifest, every file, and the whole bundle before writing output; -it never reads a sibling Dander checkout. This client requires the matching RC33 bundle. The +it never reads a sibling Dander checkout. This client requires the matching RC34 bundle. The GitHub integration candidate does not promote Dander's public PyPI RC20 beta or qualify additional provider profiles. @@ -76,12 +76,12 @@ Release acceptance can additionally exercise Druff's production graph and operat against a locally running current Dander Control API: ```bash -# In an environment installed from the pinned RC33 wheel above (not the RC20 PyPI beta): +# In an environment installed from the pinned RC34 wheel above (not the RC20 PyPI beta): dander control serve --ephemeral --project demo-project --port 8770 # In Druff: DANDER_CONTROL_URL=http://127.0.0.1:8770 \ -DANDER_EXPECTED_VERSION=0.9.0rc33 \ +DANDER_EXPECTED_VERSION=0.9.0rc34 \ pnpm test:current-dander ``` @@ -164,14 +164,16 @@ To inspect an already-completed operator-owned native repair through Druff's rea without starting another workload: ```bash -DANDER_CONTROL_URL=http://127.0.0.1:8875 \ -DANDER_REPAIR_PROJECT=repair-proof \ -DANDER_REPAIR_GRAPH=repair-events \ +DANDER_CONTROL_URL=http://127.0.0.1:8876 \ +DANDER_REPAIR_PROJECT=repair-proof-rc34 \ +DANDER_REPAIR_GRAPH=repair-corrections \ DANDER_REPAIR_RUN_ID=REPLACE_WITH_ACCEPTED_RUN_ID \ pnpm test:repair-observation ``` -This observation verifies the exact contract, saved graph, repair preview, status and explanation. +This observation verifies the exact contract, saved graph, repair preview, status and explanation +for the September 10–12 synthetic fixture, including zero extracted rows, two output rows written +and four output rows affected. The operator's separate provider evidence must establish warehouse results, watermarks and cleanup. To enable the narrow operational controls for one graph that is already deployed, start Dander diff --git a/integration/native-repair-observation.test.ts b/integration/native-repair-observation.test.ts index 4a5256e..856545d 100644 --- a/integration/native-repair-observation.test.ts +++ b/integration/native-repair-observation.test.ts @@ -28,7 +28,7 @@ const request: HostedControlFetch = async (target, init) => { const control = new HostedControlApiClient(request); const persistence = new HostedGraphPersistence(request); -it("reads an accepted native repair through the production Druff clients without starting another workload", async () => { +it("reads the RC34 synthetic repair through the production Druff clients without starting another workload", async () => { const capabilities = await control.capabilities(); expect(capabilities.contract).toEqual({ id: DANDER_CONTRACT_BUNDLE_ID, @@ -38,8 +38,10 @@ it("reads an accepted native repair through the production Druff clients without const saved = await persistence.load(address); const run = await control.getRun(runId); expect(run.state).toBe("succeeded"); - expect(run.repair_window).toBeTruthy(); + expect(run.repair_window).toEqual({ start_date: "2026-09-10", end_date: "2026-09-12" }); expect(run.result_schema).toBeTruthy(); + expect(run.extracted).toBe(0); + expect(run.telemetry).toMatchObject({ rows_written: 2, rows_affected: 4 }); const preview = await control.previewRepair(address, saved.revision, run.repair_window!); expect(preview.graph_content_sha256).toBe(saved.contentSha256); expect(preview.window).toEqual(run.repair_window); diff --git a/scripts/generate-dander-contracts.mjs b/scripts/generate-dander-contracts.mjs index c1ee512..5286db8 100644 --- a/scripts/generate-dander-contracts.mjs +++ b/scripts/generate-dander-contracts.mjs @@ -12,11 +12,11 @@ import { compile } from "json-schema-to-typescript"; import { format, resolveConfig } from "prettier"; const DANDER_PACKAGE = "dander-platform"; -const DANDER_VERSION = "0.9.0rc33"; -const WHEEL_FILENAME = "dander_platform-0.9.0rc33-py3-none-any.whl"; +const DANDER_VERSION = "0.9.0rc34"; +const WHEEL_FILENAME = "dander_platform-0.9.0rc34-py3-none-any.whl"; const WHEEL_URL = - "https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/" + WHEEL_FILENAME; -const WHEEL_SHA256 = "2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f"; + "https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/" + WHEEL_FILENAME; +const WHEEL_SHA256 = "d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad"; const BUNDLE_ID = "io.dander.control.contracts/v1"; const BUNDLE_SHA256 = "a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279"; const BUNDLE_PATH = join("dander", "control", "contracts", "v1"); diff --git a/src/generated/dander-contracts/metadata.ts b/src/generated/dander-contracts/metadata.ts index a511b5c..a235269 100644 --- a/src/generated/dander-contracts/metadata.ts +++ b/src/generated/dander-contracts/metadata.ts @@ -1,11 +1,11 @@ /** Generated from the exact published Dander wheel; do not edit by hand. */ export const DANDER_CONTRACT_PACKAGE = "dander-platform" as const; -export const DANDER_CONTRACT_PACKAGE_VERSION = "0.9.0rc33" as const; -export const DANDER_CONTRACT_WHEEL = "dander_platform-0.9.0rc33-py3-none-any.whl" as const; +export const DANDER_CONTRACT_PACKAGE_VERSION = "0.9.0rc34" as const; +export const DANDER_CONTRACT_WHEEL = "dander_platform-0.9.0rc34-py3-none-any.whl" as const; export const DANDER_CONTRACT_WHEEL_URL = - "https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl" as const; + "https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl" as const; export const DANDER_CONTRACT_WHEEL_SHA256 = - "2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f" as const; + "d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad" as const; export const DANDER_CONTRACT_BUNDLE_ID = "io.dander.control.contracts/v1" as const; export const DANDER_CONTRACT_BUNDLE_SHA256 = "a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279" as const; diff --git a/src/generated/dander-contracts/types/api-error.ts b/src/generated/dander-contracts/types/api-error.ts index 1227db4..ad5fce8 100644 --- a/src/generated/dander-contracts/types/api-error.ts +++ b/src/generated/dander-contracts/types/api-error.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/capabilities.ts b/src/generated/dander-contracts/types/capabilities.ts index c4b4eb0..521e389 100644 --- a/src/generated/dander-contracts/types/capabilities.ts +++ b/src/generated/dander-contracts/types/capabilities.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/connector-catalog.ts b/src/generated/dander-contracts/types/connector-catalog.ts index 2e7005f..0722c74 100644 --- a/src/generated/dander-contracts/types/connector-catalog.ts +++ b/src/generated/dander-contracts/types/connector-catalog.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/control-bootstrap.ts b/src/generated/dander-contracts/types/control-bootstrap.ts index fa93c76..33ea432 100644 --- a/src/generated/dander-contracts/types/control-bootstrap.ts +++ b/src/generated/dander-contracts/types/control-bootstrap.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/deployment-preview.ts b/src/generated/dander-contracts/types/deployment-preview.ts index 6e202e1..2bdbf02 100644 --- a/src/generated/dander-contracts/types/deployment-preview.ts +++ b/src/generated/dander-contracts/types/deployment-preview.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/graph-change-preview.ts b/src/generated/dander-contracts/types/graph-change-preview.ts index 06fa3ac..7f158f8 100644 --- a/src/generated/dander-contracts/types/graph-change-preview.ts +++ b/src/generated/dander-contracts/types/graph-change-preview.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/graph-create.ts b/src/generated/dander-contracts/types/graph-create.ts index d552b68..4fe334a 100644 --- a/src/generated/dander-contracts/types/graph-create.ts +++ b/src/generated/dander-contracts/types/graph-create.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/graph-page.ts b/src/generated/dander-contracts/types/graph-page.ts index 94e1e1b..d4e4831 100644 --- a/src/generated/dander-contracts/types/graph-page.ts +++ b/src/generated/dander-contracts/types/graph-page.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/graph-repair-preview.ts b/src/generated/dander-contracts/types/graph-repair-preview.ts index 6198cc7..2472723 100644 --- a/src/generated/dander-contracts/types/graph-repair-preview.ts +++ b/src/generated/dander-contracts/types/graph-repair-preview.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/graph-repair-window.ts b/src/generated/dander-contracts/types/graph-repair-window.ts index f34a5bd..4cd0eb8 100644 --- a/src/generated/dander-contracts/types/graph-repair-window.ts +++ b/src/generated/dander-contracts/types/graph-repair-window.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/graph-resource.ts b/src/generated/dander-contracts/types/graph-resource.ts index eddbe51..55e2c1d 100644 --- a/src/generated/dander-contracts/types/graph-resource.ts +++ b/src/generated/dander-contracts/types/graph-resource.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/graph-validation.ts b/src/generated/dander-contracts/types/graph-validation.ts index e9753e4..cc139de 100644 --- a/src/generated/dander-contracts/types/graph-validation.ts +++ b/src/generated/dander-contracts/types/graph-validation.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/log-page.ts b/src/generated/dander-contracts/types/log-page.ts index b9e1cb3..86b2d5e 100644 --- a/src/generated/dander-contracts/types/log-page.ts +++ b/src/generated/dander-contracts/types/log-page.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/mutation-result.ts b/src/generated/dander-contracts/types/mutation-result.ts index 8f6d8c1..32f50ca 100644 --- a/src/generated/dander-contracts/types/mutation-result.ts +++ b/src/generated/dander-contracts/types/mutation-result.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/operation-catalog.ts b/src/generated/dander-contracts/types/operation-catalog.ts index 2a72a80..22de14b 100644 --- a/src/generated/dander-contracts/types/operation-catalog.ts +++ b/src/generated/dander-contracts/types/operation-catalog.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/pipeline-graph.ts b/src/generated/dander-contracts/types/pipeline-graph.ts index 3380d3c..bd65f28 100644 --- a/src/generated/dander-contracts/types/pipeline-graph.ts +++ b/src/generated/dander-contracts/types/pipeline-graph.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/plugin-catalog.ts b/src/generated/dander-contracts/types/plugin-catalog.ts index 0793e01..7e2f7fb 100644 --- a/src/generated/dander-contracts/types/plugin-catalog.ts +++ b/src/generated/dander-contracts/types/plugin-catalog.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/project-list.ts b/src/generated/dander-contracts/types/project-list.ts index 08d99a0..af8fd23 100644 --- a/src/generated/dander-contracts/types/project-list.ts +++ b/src/generated/dander-contracts/types/project-list.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/run-explanation.ts b/src/generated/dander-contracts/types/run-explanation.ts index c387df5..bc48cc1 100644 --- a/src/generated/dander-contracts/types/run-explanation.ts +++ b/src/generated/dander-contracts/types/run-explanation.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/run-page.ts b/src/generated/dander-contracts/types/run-page.ts index b89aac3..6fffe62 100644 --- a/src/generated/dander-contracts/types/run-page.ts +++ b/src/generated/dander-contracts/types/run-page.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/run-request.ts b/src/generated/dander-contracts/types/run-request.ts index e177ade..9c24b04 100644 --- a/src/generated/dander-contracts/types/run-request.ts +++ b/src/generated/dander-contracts/types/run-request.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/types/run-status.ts b/src/generated/dander-contracts/types/run-status.ts index 82a90a5..7677870 100644 --- a/src/generated/dander-contracts/types/run-status.ts +++ b/src/generated/dander-contracts/types/run-status.ts @@ -1,7 +1,7 @@ /** - * Generated from dander-platform==0.9.0rc33 (dander_platform-0.9.0rc33-py3-none-any.whl). - * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc33/dander_platform-0.9.0rc33-py3-none-any.whl - * Wheel SHA256: 2dd84610ab96093944d41f21706e410c30e83b6c92f719d1aa50ec0c7841661f + * Generated from dander-platform==0.9.0rc34 (dander_platform-0.9.0rc34-py3-none-any.whl). + * Published wheel: https://github.com/harrisonoconnorhover/dander/releases/download/v0.9.0rc34/dander_platform-0.9.0rc34-py3-none-any.whl + * Wheel SHA256: d37c1d91c15cca9ce3d080af6dec384f7cd9cbc521dea253e10dc44772d35bad * Contract bundle: io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279) * Do not edit by hand; run `pnpm contracts:generate`. */ diff --git a/src/generated/dander-contracts/validators.js b/src/generated/dander-contracts/validators.js index 49dde59..0ddebc8 100644 --- a/src/generated/dander-contracts/validators.js +++ b/src/generated/dander-contracts/validators.js @@ -1,4 +1,4 @@ -// Generated from dander-platform==0.9.0rc33; do not edit. +// Generated from dander-platform==0.9.0rc34; do not edit. // Contract bundle io.dander.control.contracts/v1 (a28316b7e5158e0520fe1c24d59885083714f47b67aa396892fa9742060fb279). "use strict"; export const validateApiError = validate20; diff --git a/tickets/DRUFF-32-guided-pipeline-journey.md b/tickets/DRUFF-32-guided-pipeline-journey.md index 6ada010..03429a3 100644 --- a/tickets/DRUFF-32-guided-pipeline-journey.md +++ b/tickets/DRUFF-32-guided-pipeline-journey.md @@ -35,18 +35,22 @@ explanation endpoint. The loopback editor remains separate. ## Verification -Final published-contract checks passed: 685 unit/component tests; TypeScript, ESLint, Prettier, static build; all +Published RC33 contract checks passed: 685 unit/component tests; TypeScript, ESLint, Prettier, static build; all 11 Playwright journeys; real HTTP acceptance against an ephemeral published-wheel Dander RC33 Control API. Browser OIDC/API fixtures are synthetic. The actual HTTP test covers canonical canvas hash identity, unsaved preview, exact save and stale preview rejection without a provider backend. -Contracts were regenerated from the published RC33 GitHub wheel, with exact wheel/bundle hashes -and independent drift verification. This GitHub candidate does not promote the RC20 PyPI beta. +Contracts were finally regenerated from the published RC34 GitHub wheel, with exact wheel/bundle +hashes and independent drift verification. RC34 fixes Control's native image identity reconciliation; +the contract bundle is unchanged. Final real HTTP acceptance against RC34, 29 contract tests, +18 journey/API tests, TypeScript and focused lint passed. This GitHub candidate does not promote +the RC20 PyPI beta. Native repair success and cleanup remain separate operator qualification; `pnpm test:repair-observation` reads an accepted run without launching another workload. Protected PR run `36869153273` passed frontend and secret checks but found three fixed high vulnerabilities in the existing Caddy binary dependencies. Pin `golang.org/x/crypto` to `v0.55.0` for CVE-2026-56854 and `google.golang.org/grpc` to `v1.83.2` for CVE-2026-84304 and -CVE-2026-84445. Keep the existing Caddy version, image pins and scan policy; the protected -container build and scan must pass with these replacements before merge. +CVE-2026-84445. The existing Caddy version, image pins and scan policy remain intact. Protected +run `36870826744` passed both architecture scans, reproducibility, runtime/routes/headers and +frontend/secret checks with those replacements.