vouchington-tooling 0.34.0 → 0.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -221
- package/dist/agent-blackboard/feedback-audit-source.mjs +2 -2
- package/dist/agent-blackboard/feedback-canonical.mjs +1 -1
- package/dist/agent-blackboard/feedback-codec.mjs +3 -3
- package/dist/agent-blackboard/feedback-compose.mjs +5 -5
- package/dist/agent-blackboard/feedback-deadline.mjs +1 -1
- package/dist/agent-blackboard/feedback-delivery.mjs +6 -6
- package/dist/agent-blackboard/feedback-fields.mjs +1 -1
- package/dist/agent-blackboard/feedback-identity.mjs +3 -3
- package/dist/agent-blackboard/feedback-journal-audit.mjs +4 -4
- package/dist/agent-blackboard/feedback-journal-sandbox.mjs +1 -1
- package/dist/agent-blackboard/feedback-online-error.mjs +1 -1
- package/dist/agent-blackboard/feedback-online.mjs +7 -7
- package/dist/agent-blackboard/feedback-outbox-counts.mjs +2 -2
- package/dist/agent-blackboard/feedback-outbox.mjs +7 -7
- package/dist/agent-blackboard/index.mjs +13 -13
- package/dist/agent-blackboard/journal.mjs +3 -3
- package/dist/agent-blackboard/session-tools.mjs +4 -4
- package/dist/agent-blackboard/snapshot-cleanup-directory.mjs +3 -3
- package/dist/agent-blackboard/snapshot-cleanup-receipt.mjs +1 -1
- package/dist/agent-blackboard/snapshot-cleanup-resume.mjs +2 -2
- package/dist/agent-blackboard/snapshot-partition-cleanup.mjs +3 -3
- package/dist/agent-blackboard/snapshot-partition-format.mjs +3 -3
- package/dist/agent-blackboard/snapshot-partition-predicates.mjs +2 -2
- package/dist/agent-blackboard/snapshot-partition-read.mjs +2 -2
- package/dist/agent-blackboard/snapshot-partition-validate.mjs +2 -2
- package/dist/agent-blackboard/snapshot-partition-write.mjs +2 -2
- package/dist/agent-blackboard/snapshot-partitions.mjs +4 -4
- package/dist/agent-blackboard/snapshot.mjs +2 -2
- package/dist/agent-harness-identity/index.d.mts +1 -1
- package/dist/api-fixtures/fixture-contract-validation.mjs +1 -1
- package/dist/api-fixtures/index.mjs +3 -3
- package/dist/ast-grep-examples/companion-parity.mjs +1 -1
- package/dist/ast-grep-examples/index.mjs +1 -1
- package/dist/basic-auth-doc-sync/index.mjs +2 -2
- package/dist/basic-auth-doc-sync/runbook.mjs +4 -4
- package/dist/basic-auth-doc-sync/source.mjs +2 -2
- package/dist/browser-session-runner/attempt.mjs +5 -5
- package/dist/browser-session-runner/index.mjs +4 -4
- package/dist/browser-session-runner/output.mjs +1 -1
- package/dist/ci-local/index.mjs +2 -2
- package/dist/cli/commands/agent-blackboard-flags.mjs +1 -1
- package/dist/cli/commands/agent-blackboard.mjs +3 -3
- package/dist/cli/commands/ast-grep-examples.mjs +1 -1
- package/dist/cli/commands/ast-grep-pack.mjs +1 -1
- package/dist/cli/commands/gha-artifacts-cleanup.mjs +1 -1
- package/dist/cli/commands/gha-runtime-audit.mjs +1 -1
- package/dist/cli/commands/gha-workspace-policy.mjs +2 -2
- package/dist/cli/commands/http-origin.mjs +1 -1
- package/dist/cli/commands/link-skill.mjs +1 -1
- package/dist/cli/commands/mcp.mjs +2 -2
- package/dist/cli/commands/nuget-central-version.mjs +1 -1
- package/dist/cli/commands/pnpm-install.mjs +1 -1
- package/dist/cli/commands/prepare-vitest-reports.mjs +1 -1
- package/dist/cli/commands/require-up-to-date.mjs +1 -1
- package/dist/cli/commands/retrospective-facts.mjs +1 -1
- package/dist/cli/commands/retrospective-transcript.mjs +1 -1
- package/dist/cli/commands/runner-port-policy.mjs +1 -1
- package/dist/cli/commands/vitest-blob-manifest.mjs +1 -1
- package/dist/cli/commands/vitest-report-attempt.mjs +1 -1
- package/dist/cli/index.mjs +27 -27
- package/dist/cli/installed-version.mjs +1 -1
- package/dist/cli/parse-gha-runtime-audit.mjs +1 -1
- package/dist/cli/parse-options.mjs +2 -2
- package/dist/cli/parse.mjs +5 -5
- package/dist/compiler-build/index.mjs +3 -3
- package/dist/compiler-build/program.mjs +3 -3
- package/dist/config-inventory/collect.mjs +5 -5
- package/dist/config-inventory/dynamic-configs.mjs +1 -1
- package/dist/config-inventory/env-expression-readers.mjs +1 -1
- package/dist/config-inventory/env-prefix-readers.mjs +2 -2
- package/dist/config-inventory/env-var-accumulator.mjs +1 -1
- package/dist/config-inventory/env-vars.mjs +5 -5
- package/dist/config-inventory/index.mjs +2 -2
- package/dist/contract-schema/contract-schema-bounded-array.mjs +2 -2
- package/dist/contract-schema/contract-schema-extractor.mjs +3 -3
- package/dist/contract-schema/contract-schema-object-tuple.mjs +2 -2
- package/dist/contract-schema/contract-schema-type-extractor.mjs +5 -5
- package/dist/contract-schema/contract-schema-type-utils.mjs +2 -2
- package/dist/contract-schema/contract-schema-validator.mjs +1 -1
- package/dist/contract-schema/index.mjs +7 -7
- package/dist/contract-schema/type-query-call.mjs +3 -3
- package/dist/contract-schema/type-query.mjs +2 -2
- package/dist/contract-schema/virtual-program.mjs +1 -1
- package/dist/coverage-transport/control-v2-parse-object.mjs +2 -2
- package/dist/coverage-transport/control-v2.mjs +4 -4
- package/dist/coverage-transport/control.mjs +2 -2
- package/dist/coverage-transport/discovery.mjs +4 -4
- package/dist/coverage-transport/http.mjs +1 -1
- package/dist/coverage-transport/index.mjs +10 -10
- package/dist/coverage-transport/keys.mjs +1 -1
- package/dist/coverage-transport/lib.mjs +6 -6
- package/dist/coverage-transport/prefix-transfer.mjs +4 -4
- package/dist/coverage-transport/prefix.mjs +3 -3
- package/dist/coverage-transport/presign.mjs +1 -1
- package/dist/coverage-transport/vitest-blob-transport.mjs +2 -2
- package/dist/dependency-license-policy/collect.mjs +5 -5
- package/dist/dependency-license-policy/index.mjs +3 -3
- package/dist/dependency-license-policy/policy.mjs +1 -1
- package/dist/dependency-license-policy/workspace.mjs +1 -1
- package/dist/dockerfile-parse/index.mjs +2 -2
- package/dist/dockerfile-parse/prewarm-ports.mjs +1 -1
- package/dist/dockerfile-parse/runtime-cmd.mjs +2 -2
- package/dist/finite-enum-ripple/check.mjs +3 -3
- package/dist/finite-enum-ripple/compare.mjs +3 -5
- package/dist/finite-enum-ripple/component-paths.mjs +2 -2
- package/dist/finite-enum-ripple/configured-object-mutations.mjs +1 -1
- package/dist/finite-enum-ripple/create-page-jsx.mjs +1 -1
- package/dist/finite-enum-ripple/create-page-literals.mjs +4 -4
- package/dist/finite-enum-ripple/create-page-object-visitor.mjs +2 -2
- package/dist/finite-enum-ripple/create-page-properties.mjs +1 -1
- package/dist/finite-enum-ripple/index.mjs +1 -1
- package/dist/finite-enum-ripple/model.d.mts +4 -0
- package/dist/finite-enum-ripple/parser-support.mjs +16 -3
- package/dist/finite-enum-ripple/parsers.mjs +5 -3
- package/dist/finite-enum-ripple/structured-route-check.mjs +5 -5
- package/dist/finite-enum-ripple/types.mjs +3 -3
- package/dist/finite-enum-ripple/union-factory-check.mjs +2 -2
- package/dist/finite-enum-ripple/union-types.mjs +5 -5
- package/dist/gh-api-shell-quoting/index.mjs +2 -2
- package/dist/gh-api-shell-quoting/logical-line.mjs +1 -1
- package/dist/gh-api-shell-quoting/scan.mjs +1 -1
- package/dist/gh-api-shell-quoting/yaml.mjs +1 -1
- package/dist/gh-cli/index.mjs +4 -4
- package/dist/gha-artifacts-cleanup/commands.mjs +2 -2
- package/dist/gha-artifacts-cleanup/index.mjs +4 -4
- package/dist/gha-check-run/cli.mjs +2 -2
- package/dist/gha-check-run/index.mjs +2 -2
- package/dist/gha-claude-post-review/index.mjs +2 -2
- package/dist/gha-post-review/claude-token.d.mts +2 -2
- package/dist/gha-post-review/claude-token.mjs +1 -1
- package/dist/gha-post-review/cli.mjs +1 -1
- package/dist/gha-post-review/github.mjs +7 -7
- package/dist/gha-post-review/index.mjs +6 -6
- package/dist/gha-post-review/post.mjs +2 -2
- package/dist/gha-post-review/pull-io.mjs +1 -1
- package/dist/gha-post-review/token.mjs +1 -1
- package/dist/gha-pr-checkpoint/index.mjs +3 -3
- package/dist/gha-pr-checkpoint/resume.mjs +1 -1
- package/dist/gha-pr-checkpoint/update.mjs +1 -1
- package/dist/gha-review-payload/cli.mjs +2 -2
- package/dist/gha-review-payload/file.mjs +1 -1
- package/dist/gha-review-payload/index.mjs +4 -4
- package/dist/gha-review-payload/remap.mjs +1 -1
- package/dist/gha-runtime-audit/audit.mjs +4 -4
- package/dist/gha-runtime-audit/index.mjs +3 -3
- package/dist/gha-workspace-policy/docker-options.mjs +1 -1
- package/dist/gha-workspace-policy/docker-workspace-user.mjs +2 -2
- package/dist/gha-workspace-policy/index.mjs +3 -3
- package/dist/gha-workspace-policy/shell-tokens.mjs +1 -1
- package/dist/gha-workspace-policy/sparse-checkout.mjs +1 -1
- package/dist/github-projects/index.mjs +2 -2
- package/dist/github-projects/project-audit.mjs +1 -1
- package/dist/index.mjs +55 -55
- package/dist/markdown/content-facts.mjs +1 -1
- package/dist/markdown/document-sections.mjs +2 -2
- package/dist/markdown/html-blocks.mjs +1 -1
- package/dist/markdown/index.mjs +10 -10
- package/dist/markdown/sections.mjs +2 -2
- package/dist/markdown/tables.mjs +2 -2
- package/dist/markdown/tasks.mjs +1 -1
- package/dist/mcp-server/context.mjs +2 -2
- package/dist/mcp-server/dispatch.mjs +8 -8
- package/dist/mcp-server/git-fixture.test-helpers.mjs +1 -1
- package/dist/mcp-server/handlers-journal.mjs +4 -4
- package/dist/mcp-server/handlers-outbox.mjs +2 -2
- package/dist/mcp-server/handlers-session.mjs +3 -3
- package/dist/mcp-server/harness.test-helpers.mjs +4 -4
- package/dist/mcp-server/main.mjs +1 -1
- package/dist/mcp-server/run.mjs +3 -3
- package/dist/mcp-server/sdk.mjs +1 -1
- package/dist/mcp-server/server.mjs +2 -2
- package/dist/mcp-server/worktree.mjs +2 -2
- package/dist/nuget-central-version/cli.mjs +1 -1
- package/dist/openapi-document/build-openapi-catalog-sse.mjs +1 -1
- package/dist/openapi-document/build-openapi-document.mjs +8 -8
- package/dist/openapi-document/build-openapi-request.mjs +1 -1
- package/dist/openapi-document/build-openapi-response.mjs +3 -3
- package/dist/openapi-document/build-openapi-sse-events.mjs +1 -1
- package/dist/openapi-document/component-registry.mjs +1 -1
- package/dist/openapi-document/contract-schema-intersection-merge.mjs +1 -1
- package/dist/openapi-document/contract-schema-to-openapi.mjs +1 -1
- package/dist/openapi-document/index.mjs +12 -12
- package/dist/openapi-document/openapi-route-helpers.mjs +1 -1
- package/dist/pg-schema-snapshot/build-snapshot.mjs +3 -3
- package/dist/pg-schema-snapshot/catalog-objects.mjs +1 -1
- package/dist/pg-schema-snapshot/catalog-queries.mjs +4 -4
- package/dist/pg-schema-snapshot/catalog-table-constraints.mjs +1 -1
- package/dist/pg-schema-snapshot/catalog-table-indexes.mjs +1 -1
- package/dist/pg-schema-snapshot/catalog-tables.mjs +1 -1
- package/dist/pg-schema-snapshot/generate.mjs +5 -5
- package/dist/pg-schema-snapshot/index.mjs +6 -6
- package/dist/pg-schema-snapshot/markdown-files.mjs +1 -1
- package/dist/pg-schema-snapshot/render-markdown.mjs +1 -1
- package/dist/pg-schema-snapshot/table-snapshot-constraints.mjs +1 -1
- package/dist/pg-schema-snapshot/table-snapshot.mjs +3 -3
- package/dist/pnpm-deploy/index.mjs +3 -3
- package/dist/pnpm-deploy/restore.mjs +1 -1
- package/dist/pnpm-install/exec.mjs +1 -1
- package/dist/pnpm-install/index.mjs +8 -8
- package/dist/pnpm-install/install-operations.mjs +6 -6
- package/dist/pnpm-install/metadata-legacy.mjs +1 -1
- package/dist/pnpm-install/metadata.d.mts +1 -1
- package/dist/pnpm-install/metadata.mjs +2 -2
- package/dist/pnpm-install/native-health.mjs +2 -2
- package/dist/pnpm-install/pnpm-install-fixture.test-helpers.mjs +2 -2
- package/dist/pnpm-install/runner.mjs +7 -7
- package/dist/post-publication-inventory/index.d.mts +6 -0
- package/dist/post-publication-inventory/index.mjs +6 -2
- package/dist/post-publication-inventory/readers/compose-appends.d.mts +7 -0
- package/dist/post-publication-inventory/readers/compose-appends.mjs +38 -0
- package/dist/post-publication-inventory/readers/composes.d.mts +2 -0
- package/dist/post-publication-inventory/readers/composes.mjs +79 -0
- package/dist/post-publication-inventory/readers/composition.d.mts +2 -0
- package/dist/post-publication-inventory/readers/composition.mjs +62 -0
- package/dist/post-publication-inventory/readers/public-boundary-ast.d.mts +5 -0
- package/dist/post-publication-inventory/readers/public-boundary-ast.mjs +33 -0
- package/dist/post-publication-inventory/readers/public-boundary-consumed.d.mts +3 -0
- package/dist/post-publication-inventory/readers/public-boundary-consumed.mjs +39 -0
- package/dist/post-publication-inventory/readers/public-boundary-dataflow.d.mts +3 -0
- package/dist/post-publication-inventory/readers/public-boundary-dataflow.mjs +61 -0
- package/dist/post-publication-inventory/readers/public-boundary-then.d.mts +9 -0
- package/dist/post-publication-inventory/readers/public-boundary-then.mjs +31 -0
- package/dist/post-publication-inventory/readers/public-boundary.d.mts +3 -0
- package/dist/post-publication-inventory/readers/public-boundary.mjs +71 -0
- package/dist/post-publication-inventory/readers/public-view-ast.d.mts +6 -0
- package/dist/post-publication-inventory/readers/public-view-ast.mjs +67 -0
- package/dist/post-publication-inventory/readers/public-view-options.d.mts +8 -0
- package/dist/post-publication-inventory/readers/public-view-protection.d.mts +2 -0
- package/dist/post-publication-inventory/readers/public-view-protection.mjs +83 -0
- package/dist/post-publication-inventory/readers/public-view.d.mts +2 -0
- package/dist/post-publication-inventory/readers/public-view.mjs +117 -0
- package/dist/post-publication-inventory/readers/source-ast.d.mts +30 -0
- package/dist/post-publication-inventory/readers/source-ast.mjs +52 -0
- package/dist/post-publication-inventory/readers/source-executors.d.mts +4 -0
- package/dist/post-publication-inventory/readers/source-executors.mjs +38 -0
- package/dist/post-publication-inventory/readers/source-helpers.d.mts +16 -0
- package/dist/post-publication-inventory/readers/source-helpers.mjs +72 -0
- package/dist/post-publication-inventory/readers/source-options.d.mts +8 -0
- package/dist/post-publication-inventory/readers/source-sql.d.mts +3 -0
- package/dist/post-publication-inventory/readers/source-sql.mjs +17 -0
- package/dist/post-publication-inventory/readers/sql-executors.mjs +2 -2
- package/dist/post-publication-inventory/readers/sql-source.mjs +3 -3
- package/dist/post-publication-inventory/readers/sql-template.mjs +1 -1
- package/dist/post-publication-inventory/writers/source.mjs +1 -1
- package/dist/retrospective-facts/coverage.mjs +1 -1
- package/dist/retrospective-facts/foreign.mjs +3 -3
- package/dist/retrospective-facts/index.mjs +4 -4
- package/dist/retrospective-facts/local.mjs +4 -4
- package/dist/retrospective-transcript/claude-blocks.mjs +1 -1
- package/dist/retrospective-transcript/claude.mjs +2 -2
- package/dist/retrospective-transcript/codex-messages.mjs +1 -1
- package/dist/retrospective-transcript/codex-payload.mjs +2 -2
- package/dist/retrospective-transcript/codex-records.mjs +3 -3
- package/dist/retrospective-transcript/codex-segment.mjs +1 -1
- package/dist/retrospective-transcript/codex.mjs +2 -2
- package/dist/retrospective-transcript/index.mjs +9 -9
- package/dist/retrospective-transcript/resolve-transcript-file.mjs +2 -2
- package/dist/scc-complexity/baseline.mjs +2 -2
- package/dist/scc-complexity/index.mjs +8 -8
- package/dist/scc-complexity/parser.mjs +1 -1
- package/dist/scc-complexity/scope-config.mjs +1 -1
- package/dist/session-friction/audit-block.mjs +1 -1
- package/dist/session-friction/ci-failures.mjs +2 -2
- package/dist/session-friction/classify.mjs +2 -2
- package/dist/session-friction/coverage-ledger.mjs +1 -1
- package/dist/session-friction/index.mjs +5 -5
- package/dist/session-friction/log-file.mjs +2 -2
- package/dist/session-friction/log.mjs +7 -7
- package/dist/session-friction/normalize.mjs +1 -1
- package/dist/session-friction/report.mjs +5 -5
- package/dist/session-friction/sandbox.mjs +1 -1
- package/dist/session-friction/session-id.mjs +1 -1
- package/dist/shared-context/index.mjs +1 -1
- package/dist/skill-discovery/index.mjs +3 -3
- package/dist/sql-ast/add-column.mjs +1 -1
- package/dist/sql-ast/constraint-do-block.mjs +2 -2
- package/dist/sql-ast/constraint-shared.mjs +1 -1
- package/dist/sql-ast/constraint.mjs +4 -4
- package/dist/sql-ast/create-table.mjs +2 -2
- package/dist/sql-ast/drop-index.mjs +2 -2
- package/dist/sql-ast/implicit-indexes.mjs +1 -1
- package/dist/sql-ast/index-metadata.mjs +3 -3
- package/dist/sql-ast/index.mjs +8 -8
- package/dist/sql-scanner/comments.mjs +1 -1
- package/dist/sql-scanner/index.mjs +3 -3
- package/dist/sql-scanner/literals.mjs +1 -1
- package/dist/swift-semantic-equal/cli.mjs +1 -1
- package/dist/swift-semantic-equal/index.mjs +1 -1
- package/dist/transient-retry/index.mjs +2 -2
- package/dist/vitest-blob-manifest/cli.mjs +2 -2
- package/dist/vitest-blob-manifest/index.mjs +4 -4
- package/dist/vitest-blob-manifest/report-attempt-cli.mjs +2 -2
- package/dist/vitest-blob-manifest/report-attempt.mjs +1 -1
- package/dist/vitest-blob-manifest/reports-cli.mjs +3 -3
- package/dist/vitest-blob-manifest/reports-source.mjs +2 -2
- package/dist/vitest-blob-manifest/reports.mjs +2 -2
- package/dist/vitest-diagnostics/index.mjs +8 -8
- package/dist/vitest-diagnostics/vitest-fork-exit-records.mjs +1 -1
- package/dist/vitest-diagnostics/vitest-fork-exit-sentinel.mjs +2 -2
- package/dist/vitest-diagnostics/vitest-fork-leak-detection.mjs +2 -2
- package/dist/vitest-diagnostics/vitest-worker-exit-diagnostics-reporter.mjs +2 -2
- package/dist/workflow-policy/condition-entailment.mjs +1 -1
- package/dist/workflow-policy/index.d.mts +1 -3
- package/dist/workflow-policy/index.mjs +4 -6
- package/dist/workflow-policy/permission-inheritance.mjs +1 -1
- package/dist/workflow-policy/permission-mismatches.mjs +2 -2
- package/dist/workflow-policy/secret-readiness.mjs +2 -2
- package/dist/workflow-policy/types.d.mts +2 -28
- package/dist/workspace-gates/first-party-graph.mjs +2 -2
- package/dist/workspace-gates/index.mjs +1 -1
- package/dist/workspace-gates/manifest-version-assertions.mjs +2 -2
- package/dist/workspace-gates/manifest-version-parser.mjs +1 -1
- package/dist/workspace-gates/options.mjs +1 -1
- package/dist/workspace-gates/policy.mjs +7 -7
- package/dist/workspace-gates/test-helpers.d.mts +2 -2
- package/docs/workflow-and-compiler.md +7 -16
- package/package.json +3 -6
- package/dist/api-contract-discovery/header-contract-parser.d.mts +0 -3
- package/dist/api-contract-discovery/header-contract-parser.mjs +0 -93
- package/dist/api-contract-discovery/header-contract-registry.d.mts +0 -3
- package/dist/api-contract-discovery/header-contract-registry.mjs +0 -40
- package/dist/api-contract-discovery/header-contract-types.d.mts +0 -19
- package/dist/api-contract-discovery/index.d.mts +0 -34
- package/dist/api-contract-discovery/index.mjs +0 -27
- package/dist/api-contract-discovery/protocol-analysis-cache.d.mts +0 -21
- package/dist/api-contract-discovery/protocol-analysis-cache.mjs +0 -7
- package/dist/api-contract-discovery/protocol-body-status.d.mts +0 -2
- package/dist/api-contract-discovery/protocol-body-status.mjs +0 -4
- package/dist/api-contract-discovery/protocol-callback-argument-bindings.d.mts +0 -7
- package/dist/api-contract-discovery/protocol-callback-argument-bindings.mjs +0 -33
- package/dist/api-contract-discovery/protocol-callback-invocation.d.mts +0 -6
- package/dist/api-contract-discovery/protocol-callback-invocation.mjs +0 -111
- package/dist/api-contract-discovery/protocol-callback-mutations.d.mts +0 -5
- package/dist/api-contract-discovery/protocol-callback-mutations.mjs +0 -42
- package/dist/api-contract-discovery/protocol-callback-registration.d.mts +0 -3
- package/dist/api-contract-discovery/protocol-callback-registration.mjs +0 -27
- package/dist/api-contract-discovery/protocol-callback-values.d.mts +0 -18
- package/dist/api-contract-discovery/protocol-callback-values.mjs +0 -114
- package/dist/api-contract-discovery/protocol-context-alias.d.mts +0 -3
- package/dist/api-contract-discovery/protocol-context-alias.mjs +0 -20
- package/dist/api-contract-discovery/protocol-contract-extraction.d.mts +0 -9
- package/dist/api-contract-discovery/protocol-contract-extraction.mjs +0 -87
- package/dist/api-contract-discovery/protocol-contract-keys.d.mts +0 -1
- package/dist/api-contract-discovery/protocol-contract-keys.mjs +0 -8
- package/dist/api-contract-discovery/protocol-contract-registry.d.mts +0 -5
- package/dist/api-contract-discovery/protocol-contract-registry.mjs +0 -133
- package/dist/api-contract-discovery/protocol-executable-path.d.mts +0 -3
- package/dist/api-contract-discovery/protocol-executable-path.mjs +0 -64
- package/dist/api-contract-discovery/protocol-execution-path.d.mts +0 -4
- package/dist/api-contract-discovery/protocol-execution-path.mjs +0 -16
- package/dist/api-contract-discovery/protocol-http-association.d.mts +0 -7
- package/dist/api-contract-discovery/protocol-http-association.mjs +0 -108
- package/dist/api-contract-discovery/protocol-http-body-kinds.d.mts +0 -3
- package/dist/api-contract-discovery/protocol-http-body-kinds.mjs +0 -19
- package/dist/api-contract-discovery/protocol-http-context-callers.d.mts +0 -7
- package/dist/api-contract-discovery/protocol-http-context-callers.mjs +0 -40
- package/dist/api-contract-discovery/protocol-http-context-escapes.d.mts +0 -3
- package/dist/api-contract-discovery/protocol-http-context-escapes.mjs +0 -95
- package/dist/api-contract-discovery/protocol-http-context.d.mts +0 -8
- package/dist/api-contract-discovery/protocol-http-context.mjs +0 -85
- package/dist/api-contract-discovery/protocol-http-emission.d.mts +0 -3
- package/dist/api-contract-discovery/protocol-http-emission.mjs +0 -76
- package/dist/api-contract-discovery/protocol-http-implicit-taint.d.mts +0 -7
- package/dist/api-contract-discovery/protocol-http-implicit-taint.mjs +0 -26
- package/dist/api-contract-discovery/protocol-http-method-access.d.mts +0 -9
- package/dist/api-contract-discovery/protocol-http-method-access.mjs +0 -34
- package/dist/api-contract-discovery/protocol-http-method-mutations.d.mts +0 -3
- package/dist/api-contract-discovery/protocol-http-method-mutations.mjs +0 -31
- package/dist/api-contract-discovery/protocol-http-reflect.d.mts +0 -5
- package/dist/api-contract-discovery/protocol-http-reflect.mjs +0 -45
- package/dist/api-contract-discovery/protocol-http-registration.d.mts +0 -12
- package/dist/api-contract-discovery/protocol-http-registration.mjs +0 -53
- package/dist/api-contract-discovery/protocol-http-response-mutations.d.mts +0 -3
- package/dist/api-contract-discovery/protocol-http-response-mutations.mjs +0 -31
- package/dist/api-contract-discovery/protocol-marker-analysis.d.mts +0 -7
- package/dist/api-contract-discovery/protocol-marker-analysis.mjs +0 -50
- package/dist/api-contract-discovery/protocol-opaque-callback.d.mts +0 -3
- package/dist/api-contract-discovery/protocol-opaque-callback.mjs +0 -107
- package/dist/api-contract-discovery/protocol-platform-callbacks.d.mts +0 -7
- package/dist/api-contract-discovery/protocol-platform-callbacks.mjs +0 -76
- package/dist/api-contract-discovery/protocol-platform-mutation-targets.d.mts +0 -5
- package/dist/api-contract-discovery/protocol-platform-mutation-targets.mjs +0 -89
- package/dist/api-contract-discovery/protocol-platform-writes.d.mts +0 -3
- package/dist/api-contract-discovery/protocol-platform-writes.mjs +0 -92
- package/dist/api-contract-discovery/protocol-requested-keys.d.mts +0 -5
- package/dist/api-contract-discovery/protocol-requested-keys.mjs +0 -45
- package/dist/api-contract-discovery/protocol-sse-callers.d.mts +0 -7
- package/dist/api-contract-discovery/protocol-sse-callers.mjs +0 -67
- package/dist/api-contract-discovery/protocol-sse-emission.d.mts +0 -11
- package/dist/api-contract-discovery/protocol-sse-emission.mjs +0 -61
- package/dist/api-contract-discovery/protocol-sse-feasible-status.d.mts +0 -3
- package/dist/api-contract-discovery/protocol-sse-feasible-status.mjs +0 -24
- package/dist/api-contract-discovery/protocol-sse-raw-writes.d.mts +0 -9
- package/dist/api-contract-discovery/protocol-sse-raw-writes.mjs +0 -99
- package/dist/api-contract-discovery/protocol-sse-status.d.mts +0 -3
- package/dist/api-contract-discovery/protocol-sse-status.mjs +0 -84
- package/dist/api-contract-discovery/protocol-sse-write-access.d.mts +0 -9
- package/dist/api-contract-discovery/protocol-sse-write-access.mjs +0 -42
- package/dist/api-contract-discovery/protocol-sse-write-helpers.d.mts +0 -7
- package/dist/api-contract-discovery/protocol-sse-write-helpers.mjs +0 -82
- package/dist/api-contract-discovery/protocol-sse-write-mutations.d.mts +0 -9
- package/dist/api-contract-discovery/protocol-sse-write-mutations.mjs +0 -42
- package/dist/api-contract-discovery/protocol-sse-write-resolution.d.mts +0 -14
- package/dist/api-contract-discovery/protocol-sse-write-resolution.mjs +0 -79
- package/dist/api-contract-discovery/protocol-status-dominance.d.mts +0 -5
- package/dist/api-contract-discovery/protocol-status-dominance.mjs +0 -35
- package/dist/api-contract-discovery/protocol-write-receiver.d.mts +0 -9
- package/dist/api-contract-discovery/protocol-write-receiver.mjs +0 -79
- package/dist/api-contract-discovery/query-contract-extraction.d.mts +0 -3
- package/dist/api-contract-discovery/query-contract-extraction.mjs +0 -82
- package/dist/api-contract-discovery/query-contract-literals.d.mts +0 -13
- package/dist/api-contract-discovery/query-contract-literals.mjs +0 -83
- package/dist/api-contract-discovery/query-contract-registry.d.mts +0 -3
- package/dist/api-contract-discovery/query-contract-registry.mjs +0 -70
- package/dist/api-contract-discovery/query-contract-types.d.mts +0 -8
- package/dist/api-contract-discovery/registered-route-binding-writes.d.mts +0 -4
- package/dist/api-contract-discovery/registered-route-binding-writes.mjs +0 -47
- package/dist/api-contract-discovery/registered-route-catalog.d.mts +0 -10
- package/dist/api-contract-discovery/registered-route-catalog.mjs +0 -85
- package/dist/api-contract-discovery/registered-route-factory-returns.d.mts +0 -3
- package/dist/api-contract-discovery/registered-route-factory-returns.mjs +0 -29
- package/dist/api-contract-discovery/registered-route-handler-analysis.d.mts +0 -12
- package/dist/api-contract-discovery/registered-route-handler-analysis.mjs +0 -119
- package/dist/api-contract-discovery/registered-route-handler-helpers.d.mts +0 -3
- package/dist/api-contract-discovery/registered-route-handler-helpers.mjs +0 -16
- package/dist/api-contract-discovery/registered-route-runtime-parameters.d.mts +0 -3
- package/dist/api-contract-discovery/registered-route-runtime-parameters.mjs +0 -5
- package/dist/api-contract-discovery/registered-route-terminal-error.d.mts +0 -3
- package/dist/api-contract-discovery/registered-route-terminal-error.mjs +0 -98
- package/dist/api-contract-discovery/request-contract-implicit.d.mts +0 -17
- package/dist/api-contract-discovery/request-contract-implicit.mjs +0 -73
- package/dist/api-contract-discovery/request-contract-lenient.d.mts +0 -28
- package/dist/api-contract-discovery/request-contract-lenient.mjs +0 -59
- package/dist/api-contract-discovery/request-contract-registry.d.mts +0 -14
- package/dist/api-contract-discovery/request-contract-registry.mjs +0 -63
- package/dist/api-contract-discovery/request-contract-route-analysis.d.mts +0 -25
- package/dist/api-contract-discovery/request-contract-route-analysis.mjs +0 -68
- package/dist/api-contract-discovery/request-contract-types.d.mts +0 -12
- package/dist/api-contract-discovery/request-contract-types.mjs +0 -1
- package/dist/api-contract-discovery/request-validation-callbacks.d.mts +0 -9
- package/dist/api-contract-discovery/request-validation-callbacks.mjs +0 -27
- package/dist/api-contract-discovery/request-validation-checker.d.mts +0 -7
- package/dist/api-contract-discovery/request-validation-checker.mjs +0 -25
- package/dist/api-contract-discovery/request-validation-conditional.d.mts +0 -6
- package/dist/api-contract-discovery/request-validation-conditional.mjs +0 -31
- package/dist/api-contract-discovery/request-validation-factory-calls.d.mts +0 -11
- package/dist/api-contract-discovery/request-validation-factory-calls.mjs +0 -23
- package/dist/api-contract-discovery/request-validation-facts.d.mts +0 -16
- package/dist/api-contract-discovery/request-validation-facts.mjs +0 -64
- package/dist/api-contract-discovery/request-validation-follow.d.mts +0 -24
- package/dist/api-contract-discovery/request-validation-follow.mjs +0 -38
- package/dist/api-contract-discovery/request-validation-handler-state.d.mts +0 -8
- package/dist/api-contract-discovery/request-validation-handler-state.mjs +0 -35
- package/dist/api-contract-discovery/request-validation-input.d.mts +0 -12
- package/dist/api-contract-discovery/request-validation-input.mjs +0 -43
- package/dist/api-contract-discovery/request-validation-keys.d.mts +0 -25
- package/dist/api-contract-discovery/request-validation-keys.mjs +0 -119
- package/dist/api-contract-discovery/request-validation-match.d.mts +0 -11
- package/dist/api-contract-discovery/request-validation-match.mjs +0 -47
- package/dist/api-contract-discovery/request-validation-mutation.d.mts +0 -7
- package/dist/api-contract-discovery/request-validation-mutation.mjs +0 -80
- package/dist/api-contract-discovery/request-validation-origin.d.mts +0 -20
- package/dist/api-contract-discovery/request-validation-origin.mjs +0 -71
- package/dist/api-contract-discovery/request-validation-reads.d.mts +0 -13
- package/dist/api-contract-discovery/request-validation-reads.mjs +0 -88
- package/dist/api-contract-discovery/request-validation-registration.d.mts +0 -9
- package/dist/api-contract-discovery/request-validation-registration.mjs +0 -32
- package/dist/api-contract-discovery/request-validation-report.d.mts +0 -3
- package/dist/api-contract-discovery/request-validation-report.mjs +0 -21
- package/dist/api-contract-discovery/request-validation-request-origin.d.mts +0 -5
- package/dist/api-contract-discovery/request-validation-request-origin.mjs +0 -13
- package/dist/api-contract-discovery/request-validation-select.d.mts +0 -9
- package/dist/api-contract-discovery/request-validation-select.mjs +0 -36
- package/dist/api-contract-discovery/request-validation-sites.d.mts +0 -9
- package/dist/api-contract-discovery/request-validation-sites.mjs +0 -77
- package/dist/api-contract-discovery/request-validation-state-key.d.mts +0 -13
- package/dist/api-contract-discovery/request-validation-state-key.mjs +0 -30
- package/dist/api-contract-discovery/request-validation-trace-helpers.d.mts +0 -14
- package/dist/api-contract-discovery/request-validation-trace-helpers.mjs +0 -80
- package/dist/api-contract-discovery/request-validation-trace-select.d.mts +0 -23
- package/dist/api-contract-discovery/request-validation-trace-select.mjs +0 -45
- package/dist/api-contract-discovery/request-validation-trace.d.mts +0 -8
- package/dist/api-contract-discovery/request-validation-trace.mjs +0 -130
- package/dist/api-contract-discovery/request-validation-types.d.mts +0 -84
- package/dist/api-contract-discovery/request-validation-types.mjs +0 -1
- package/dist/api-contract-discovery/request-validation-walker.d.mts +0 -26
- package/dist/api-contract-discovery/request-validation-walker.mjs +0 -143
- package/dist/api-contract-discovery/request-validation.test-helpers.d.mts +0 -39
- package/dist/api-contract-discovery/request-validation.test-helpers.mjs +0 -108
- package/dist/api-contract-discovery/response-contract-attribution-facts.d.mts +0 -2
- package/dist/api-contract-discovery/response-contract-attribution-facts.mjs +0 -18
- package/dist/api-contract-discovery/response-contract-attribution.d.mts +0 -3
- package/dist/api-contract-discovery/response-contract-attribution.mjs +0 -23
- package/dist/api-contract-discovery/response-contract-call-classification.d.mts +0 -3
- package/dist/api-contract-discovery/response-contract-call-classification.mjs +0 -37
- package/dist/api-contract-discovery/response-contract-ctx-analysis.d.mts +0 -7
- package/dist/api-contract-discovery/response-contract-ctx-analysis.mjs +0 -28
- package/dist/api-contract-discovery/response-contract-error-branch.d.mts +0 -15
- package/dist/api-contract-discovery/response-contract-error-branch.mjs +0 -150
- package/dist/api-contract-discovery/response-contract-handler-bindings.d.mts +0 -3
- package/dist/api-contract-discovery/response-contract-handler-bindings.mjs +0 -126
- package/dist/api-contract-discovery/response-contract-handler-calls.d.mts +0 -3
- package/dist/api-contract-discovery/response-contract-handler-calls.mjs +0 -81
- package/dist/api-contract-discovery/response-contract-implicit-sources.test-helpers.d.mts +0 -145
- package/dist/api-contract-discovery/response-contract-implicit-sources.test-helpers.mjs +0 -145
- package/dist/api-contract-discovery/response-contract-implicit-variants.d.mts +0 -2
- package/dist/api-contract-discovery/response-contract-implicit-variants.mjs +0 -6
- package/dist/api-contract-discovery/response-contract-implicit.d.mts +0 -6
- package/dist/api-contract-discovery/response-contract-implicit.mjs +0 -120
- package/dist/api-contract-discovery/response-contract-lenient.d.mts +0 -41
- package/dist/api-contract-discovery/response-contract-lenient.mjs +0 -52
- package/dist/api-contract-discovery/response-contract-media.d.mts +0 -3
- package/dist/api-contract-discovery/response-contract-media.mjs +0 -46
- package/dist/api-contract-discovery/response-contract-object-symbols.d.mts +0 -3
- package/dist/api-contract-discovery/response-contract-object-symbols.mjs +0 -80
- package/dist/api-contract-discovery/response-contract-property-mutations.d.mts +0 -5
- package/dist/api-contract-discovery/response-contract-property-mutations.mjs +0 -84
- package/dist/api-contract-discovery/response-contract-registration.d.mts +0 -11
- package/dist/api-contract-discovery/response-contract-registration.mjs +0 -65
- package/dist/api-contract-discovery/response-contract-registry.d.mts +0 -7
- package/dist/api-contract-discovery/response-contract-registry.mjs +0 -124
- package/dist/api-contract-discovery/response-contract-route-analysis.d.mts +0 -12
- package/dist/api-contract-discovery/response-contract-route-analysis.mjs +0 -65
- package/dist/api-contract-discovery/response-contract-route-syntax.d.mts +0 -7
- package/dist/api-contract-discovery/response-contract-route-syntax.mjs +0 -41
- package/dist/api-contract-discovery/response-contract-status.d.mts +0 -27
- package/dist/api-contract-discovery/response-contract-status.mjs +0 -82
- package/dist/api-contract-discovery/response-contract-symbols.d.mts +0 -5
- package/dist/api-contract-discovery/response-contract-symbols.mjs +0 -82
- package/dist/api-contract-discovery/response-contract-types.d.mts +0 -23
- package/dist/api-contract-discovery/response-contract-types.mjs +0 -1
- package/dist/api-contract-discovery/test-setup.test-helpers.d.mts +0 -3
- package/dist/api-contract-discovery/test-setup.test-helpers.mjs +0 -2
- package/dist/workflow-policy/concurrency-scope.d.mts +0 -4
- package/dist/workflow-policy/concurrency-scope.mjs +0 -66
- package/dist/workflow-policy/concurrency.d.mts +0 -10
- package/dist/workflow-policy/concurrency.mjs +0 -77
- package/dist/workflow-policy/graph.d.mts +0 -2
- package/dist/workflow-policy/graph.mjs +0 -138
- /package/dist/{api-contract-discovery/header-contract-types.mjs → post-publication-inventory/readers/public-view-options.mjs} +0 -0
- /package/dist/{api-contract-discovery/query-contract-types.mjs → post-publication-inventory/readers/source-options.mjs} +0 -0
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import ts from '../contract-schema/typescript-api.mjs';
|
|
2
|
-
import { ABSENT, findProperty, stableConstInitializer } from './request-validation-keys.mjs';
|
|
3
|
-
import { unwrapTransparentExpression } from './response-contract-route-syntax.mjs';
|
|
4
|
-
/** The property name or array position a destructured binding selects, when it is static. */
|
|
5
|
-
export function bindingKey(element) {
|
|
6
|
-
if (element.dotDotDotToken)
|
|
7
|
-
return undefined;
|
|
8
|
-
if (ts.isArrayBindingPattern(element.parent))
|
|
9
|
-
return element.parent.elements.indexOf(element);
|
|
10
|
-
const name = element.propertyName ?? element.name;
|
|
11
|
-
return ts.isIdentifier(name) || ts.isStringLiteral(name) ? name.text : undefined;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* The expression a literal (or a const naming one) holds at a property or position: `null` when
|
|
15
|
-
* nothing is there, `undefined` when it cannot be resolved statically.
|
|
16
|
-
*/
|
|
17
|
-
export function literalMember(node, key, scope, seen = new Set()) {
|
|
18
|
-
const value = unwrapTransparentExpression(node);
|
|
19
|
-
if (seen.has(value))
|
|
20
|
-
return undefined;
|
|
21
|
-
if (ts.isIdentifier(value)) {
|
|
22
|
-
const initializer = stableConstInitializer(value, scope.checker);
|
|
23
|
-
return initializer && literalMember(initializer, key, scope, new Set(seen).add(value));
|
|
24
|
-
}
|
|
25
|
-
if (typeof key === 'number') {
|
|
26
|
-
if (!ts.isArrayLiteralExpression(value))
|
|
27
|
-
return undefined;
|
|
28
|
-
if (value.elements.slice(0, key + 1).some(ts.isSpreadElement))
|
|
29
|
-
return undefined;
|
|
30
|
-
return value.elements[key] ?? null;
|
|
31
|
-
}
|
|
32
|
-
if (!ts.isObjectLiteralExpression(value))
|
|
33
|
-
return undefined;
|
|
34
|
-
const found = findProperty(value, key, scope.checker, scope.roots, new Set([value]));
|
|
35
|
-
return found === ABSENT ? null : found;
|
|
36
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import ts from '../contract-schema/typescript-api.mts';
|
|
2
|
-
import type { Scope } from './request-validation-follow.mts';
|
|
3
|
-
import { type FactoryConfig, type FactorySite, type ValidatorConfig, type ValidatorSite } from './request-validation-types.mts';
|
|
4
|
-
export declare function sourceOf(node: ts.Node): string;
|
|
5
|
-
export declare function validatorSite(call: ts.CallExpression, config: ValidatorConfig, scope: Scope, conditional: boolean): {
|
|
6
|
-
site: ValidatorSite;
|
|
7
|
-
inputNodes: ts.Node[];
|
|
8
|
-
};
|
|
9
|
-
export declare function factorySite(call: ts.CallExpression, config: FactoryConfig, scope: Scope, conditional: boolean): FactorySite;
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import ts from '../contract-schema/typescript-api.mjs';
|
|
2
|
-
import { ABSENT, findProperty, resolveKey, resolveObject, resolveOptionString, } from './request-validation-keys.mjs';
|
|
3
|
-
import { unwrapTransparentExpression } from './response-contract-route-syntax.mjs';
|
|
4
|
-
import { resolveInput } from './request-validation-input.mjs';
|
|
5
|
-
import {} from './request-validation-types.mjs';
|
|
6
|
-
export function sourceOf(node) {
|
|
7
|
-
const file = node.getSourceFile();
|
|
8
|
-
return `${file.fileName}:${file.getLineAndCharacterOfPosition(node.getStart()).line + 1}`;
|
|
9
|
-
}
|
|
10
|
-
/** Whether the options object ends with `property: true`, applying spreads in order. */
|
|
11
|
-
function optionEnabled(options, property, scope) {
|
|
12
|
-
if (!options)
|
|
13
|
-
return { enabled: false };
|
|
14
|
-
const object = resolveObject(options, scope.checker, scope.roots);
|
|
15
|
-
if (!object)
|
|
16
|
-
return {
|
|
17
|
-
enabled: false,
|
|
18
|
-
unresolved: `options \`${options.getText()}\` are not statically resolvable`,
|
|
19
|
-
};
|
|
20
|
-
const found = findProperty(object, property, scope.checker, scope.roots, new Set([object]));
|
|
21
|
-
if (found === undefined)
|
|
22
|
-
return { enabled: false, unresolved: `option "${property}" is not statically resolvable` };
|
|
23
|
-
return {
|
|
24
|
-
enabled: found !== ABSENT && unwrapTransparentExpression(found).kind === ts.SyntaxKind.TrueKeyword,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
function fixedInput(config, call, scope) {
|
|
28
|
-
const options = (config.optionCarriers ?? []).map((option) => ({
|
|
29
|
-
option,
|
|
30
|
-
...optionEnabled(call.arguments[option.argument], option.property, scope),
|
|
31
|
-
}));
|
|
32
|
-
const added = options.filter((item) => item.enabled).map((item) => item.option.carrier);
|
|
33
|
-
const unresolved = options.find((item) => item.unresolved)?.unresolved;
|
|
34
|
-
return {
|
|
35
|
-
carriers: [...new Set([...config.carriers, ...added])].map((carrier) => ({
|
|
36
|
-
carrier,
|
|
37
|
-
origins: [carrier],
|
|
38
|
-
})),
|
|
39
|
-
...(unresolved && { unresolved }),
|
|
40
|
-
nodes: [],
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
export function validatorSite(call, config, scope, conditional) {
|
|
44
|
-
const argument = call.arguments[config.operationArgument];
|
|
45
|
-
const operation = resolveKey(argument, scope.checker, scope.keys) ?? null;
|
|
46
|
-
const input = config.carriers.kind === 'input-object'
|
|
47
|
-
? resolveInput(call.arguments[config.carriers.argument], scope)
|
|
48
|
-
: fixedInput(config.carriers, call, scope);
|
|
49
|
-
const site = {
|
|
50
|
-
exportName: config.exportName,
|
|
51
|
-
source: sourceOf(call),
|
|
52
|
-
operation,
|
|
53
|
-
...(operation === null && { unresolvedReason: unresolved(argument) }),
|
|
54
|
-
carriers: input.carriers,
|
|
55
|
-
...(input.unresolved && { unresolvedCarriers: input.unresolved }),
|
|
56
|
-
conditional,
|
|
57
|
-
};
|
|
58
|
-
return { site, inputNodes: input.nodes };
|
|
59
|
-
}
|
|
60
|
-
export function factorySite(call, config, scope, conditional) {
|
|
61
|
-
const operation = resolveOptionString(call.arguments[config.optionsArgument], config.operationProperty, scope.checker, scope.keys, scope.roots) ?? null;
|
|
62
|
-
return {
|
|
63
|
-
exportName: config.exportName,
|
|
64
|
-
source: sourceOf(call),
|
|
65
|
-
operation,
|
|
66
|
-
...(operation === null && {
|
|
67
|
-
unresolvedReason: `option "${config.operationProperty}" is not statically resolvable`,
|
|
68
|
-
}),
|
|
69
|
-
carriers: [...config.carriers],
|
|
70
|
-
conditional,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
function unresolved(argument) {
|
|
74
|
-
return argument
|
|
75
|
-
? `operation key \`${argument.getText()}\` is not statically resolvable`
|
|
76
|
-
: 'operation argument is missing';
|
|
77
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type ts from '../contract-schema/typescript-api.mts';
|
|
2
|
-
import type { KeyBindings } from './request-validation-keys.mts';
|
|
3
|
-
import type { RootBindings } from './request-validation-origin.mts';
|
|
4
|
-
export type WalkState = {
|
|
5
|
-
keys: KeyBindings;
|
|
6
|
-
roots: RootBindings;
|
|
7
|
-
conditional: boolean;
|
|
8
|
-
/** The calls this walk was entered through, innermost last; a call may build a validator input. */
|
|
9
|
-
via: ReadonlySet<ts.Node>;
|
|
10
|
-
};
|
|
11
|
-
export declare const emptyState: WalkState;
|
|
12
|
-
/** A stable identity for the bindings a function is walked with, used to stop repeat walks. */
|
|
13
|
-
export declare function createStateKey(): (state: WalkState) => string;
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
export const emptyState = {
|
|
2
|
-
keys: new Map(),
|
|
3
|
-
roots: new Map(),
|
|
4
|
-
conditional: false,
|
|
5
|
-
via: new Set(),
|
|
6
|
-
};
|
|
7
|
-
/** A stable identity for the bindings a function is walked with, used to stop repeat walks. */
|
|
8
|
-
export function createStateKey() {
|
|
9
|
-
const symbolIds = new Map();
|
|
10
|
-
const symbolId = (symbol) => {
|
|
11
|
-
if (!symbolIds.has(symbol))
|
|
12
|
-
symbolIds.set(symbol, symbolIds.size);
|
|
13
|
-
return symbolIds.get(symbol);
|
|
14
|
-
};
|
|
15
|
-
const nodeIds = new Map();
|
|
16
|
-
const nodeId = (node) => {
|
|
17
|
-
if (!nodeIds.has(node))
|
|
18
|
-
nodeIds.set(node, nodeIds.size);
|
|
19
|
-
return nodeIds.get(node);
|
|
20
|
-
};
|
|
21
|
-
const bound = (value) => JSON.stringify(value, (name, item) => name === 'expression' ? nodeId(item) : item);
|
|
22
|
-
return (state) => [
|
|
23
|
-
...[...state.keys].map(([symbol, value]) => JSON.stringify(['k', symbolId(symbol), value])),
|
|
24
|
-
...[...state.roots].map(([symbol, value]) => bound(['r', symbolId(symbol), value])),
|
|
25
|
-
JSON.stringify(state.conditional),
|
|
26
|
-
JSON.stringify([...state.via].map(nodeId).toSorted((left, right) => left - right)),
|
|
27
|
-
]
|
|
28
|
-
.toSorted((left, right) => left.localeCompare(right))
|
|
29
|
-
.join('|');
|
|
30
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import ts from '../contract-schema/typescript-api.mts';
|
|
2
|
-
import type { ProtocolCache } from './protocol-analysis-cache.mts';
|
|
3
|
-
import type { Followable } from './request-validation-follow.mts';
|
|
4
|
-
/**
|
|
5
|
-
* The assignments that can supply a value at the use: property writes, plus reassignments of the
|
|
6
|
-
* identifier itself made earlier in the same function. An unconditional reassignment replaces
|
|
7
|
-
* everything before it, including the initializer; conditional ones merge.
|
|
8
|
-
*/
|
|
9
|
-
export declare function reachingWrites(use: ts.Node, symbol: ts.Symbol, checker: ts.TypeChecker, cache?: ProtocolCache): {
|
|
10
|
-
writes: ts.Expression[];
|
|
11
|
-
initializer: boolean;
|
|
12
|
-
};
|
|
13
|
-
/** Returned expressions of a function, including an arrow function's expression body. */
|
|
14
|
-
export declare function returnedValues(fn: Followable): ts.Node[];
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import ts from '../contract-schema/typescript-api.mjs';
|
|
2
|
-
import { isConditionalPosition } from './request-validation-conditional.mjs';
|
|
3
|
-
import { potentiallyExecuted } from './protocol-executable-path.mjs';
|
|
4
|
-
const owningFunction = (node) => {
|
|
5
|
-
let current = node.parent;
|
|
6
|
-
while (current && !ts.isFunctionLike(current))
|
|
7
|
-
current = current.parent;
|
|
8
|
-
return current;
|
|
9
|
-
};
|
|
10
|
-
function writtenSymbol(left, checker) {
|
|
11
|
-
let current = left;
|
|
12
|
-
while (ts.isPropertyAccessExpression(current) || ts.isElementAccessExpression(current))
|
|
13
|
-
current = current.expression;
|
|
14
|
-
return ts.isIdentifier(current) ? checker.getSymbolAtLocation(current) : undefined;
|
|
15
|
-
}
|
|
16
|
-
/** True when the node may not run, within its function: conditional branches and `try` blocks. */
|
|
17
|
-
function maybeSkipped(node) {
|
|
18
|
-
if (isConditionalPosition(node))
|
|
19
|
-
return true;
|
|
20
|
-
let child = node;
|
|
21
|
-
for (let parent = node.parent; parent && !ts.isFunctionLike(parent); parent = parent.parent) {
|
|
22
|
-
if (ts.isTryStatement(parent) && child === parent.tryBlock)
|
|
23
|
-
return true;
|
|
24
|
-
child = parent;
|
|
25
|
-
}
|
|
26
|
-
return false;
|
|
27
|
-
}
|
|
28
|
-
/** Plain assignments to the symbol within the scope, excluding nested functions, in source order. */
|
|
29
|
-
function assignmentsTo(scope, symbol, checker, cache) {
|
|
30
|
-
let bySymbol = cache?.assignments.get(scope);
|
|
31
|
-
if (!bySymbol) {
|
|
32
|
-
const found = new Map();
|
|
33
|
-
const scan = (node) => {
|
|
34
|
-
if (node !== scope && ts.isFunctionLike(node))
|
|
35
|
-
return;
|
|
36
|
-
if (ts.isBinaryExpression(node) && node.operatorToken.kind === ts.SyntaxKind.EqualsToken) {
|
|
37
|
-
const written = writtenSymbol(node.left, checker);
|
|
38
|
-
const entry = { node, direct: ts.isIdentifier(node.left), start: node.getStart() };
|
|
39
|
-
if (written)
|
|
40
|
-
found.set(written, [...(found.get(written) ?? []), entry]);
|
|
41
|
-
}
|
|
42
|
-
ts.forEachChild(node, scan);
|
|
43
|
-
};
|
|
44
|
-
scan(scope);
|
|
45
|
-
bySymbol = found;
|
|
46
|
-
cache?.assignments.set(scope, bySymbol);
|
|
47
|
-
}
|
|
48
|
-
return bySymbol.get(symbol) ?? [];
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* The assignments that can supply a value at the use: property writes, plus reassignments of the
|
|
52
|
-
* identifier itself made earlier in the same function. An unconditional reassignment replaces
|
|
53
|
-
* everything before it, including the initializer; conditional ones merge.
|
|
54
|
-
*/
|
|
55
|
-
export function reachingWrites(use, symbol, checker, cache) {
|
|
56
|
-
const scope = owningFunction(use) ?? use.getSourceFile();
|
|
57
|
-
const before = use.getStart();
|
|
58
|
-
const entries = assignmentsTo(scope, symbol, checker, cache).filter((entry) => entry.start < before &&
|
|
59
|
-
(!entry.direct || entry.node.getEnd() <= before) &&
|
|
60
|
-
potentiallyExecuted(entry.node));
|
|
61
|
-
const killer = entries.findLast((entry) => entry.direct && !maybeSkipped(entry.node));
|
|
62
|
-
const kept = entries.filter((entry) => !entry.direct || !killer || entries.indexOf(entry) >= entries.indexOf(killer));
|
|
63
|
-
return { writes: kept.map((entry) => entry.node.right), initializer: !killer };
|
|
64
|
-
}
|
|
65
|
-
/** Returned expressions of a function, including an arrow function's expression body. */
|
|
66
|
-
export function returnedValues(fn) {
|
|
67
|
-
const body = fn.body;
|
|
68
|
-
if (!ts.isBlock(body))
|
|
69
|
-
return [body];
|
|
70
|
-
const values = [];
|
|
71
|
-
const scan = (node) => {
|
|
72
|
-
if (ts.isFunctionLike(node))
|
|
73
|
-
return;
|
|
74
|
-
if (ts.isReturnStatement(node) && node.expression && potentiallyExecuted(node.expression))
|
|
75
|
-
values.push(node.expression);
|
|
76
|
-
ts.forEachChild(node, scan);
|
|
77
|
-
};
|
|
78
|
-
ts.forEachChild(body, scan);
|
|
79
|
-
return values;
|
|
80
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import ts from '../contract-schema/typescript-api.mts';
|
|
2
|
-
import { type Scope } from './request-validation-follow.mts';
|
|
3
|
-
import type { Carrier } from './request-validation-types.mts';
|
|
4
|
-
/** The request carriers a value derives from, and why part of it could not be traced. */
|
|
5
|
-
export type Trace = {
|
|
6
|
-
origins: Set<Carrier>;
|
|
7
|
-
unresolved?: string | undefined;
|
|
8
|
-
};
|
|
9
|
-
export type Visit = {
|
|
10
|
-
trace: Trace;
|
|
11
|
-
seen: Set<ts.Node>;
|
|
12
|
-
functions: Set<ts.Node>;
|
|
13
|
-
/** Calls whose arguments are being traced, so a value that feeds its own call terminates. */
|
|
14
|
-
calls: Set<ts.Node>;
|
|
15
|
-
};
|
|
16
|
-
/** The tracer's own entry points, passed in so this module does not import it back. */
|
|
17
|
-
type Deps = {
|
|
18
|
-
visitValue: (node: ts.Node, scope: Scope, visit: Visit) => void;
|
|
19
|
-
bindArguments: (fn: ts.FunctionLikeDeclaration, call: ts.CallExpression, scope: Scope, calls: Set<ts.Node>) => Scope;
|
|
20
|
-
};
|
|
21
|
-
/** Traces only what a destructured local binds; false when the selection cannot be resolved. */
|
|
22
|
-
export declare function visitSelected(element: ts.BindingElement, initializer: ts.Expression, scope: Scope, visit: Visit, deps: Deps): boolean;
|
|
23
|
-
export {};
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import ts from '../contract-schema/typescript-api.mjs';
|
|
2
|
-
import { followedImplementations } from './request-validation-follow.mjs';
|
|
3
|
-
import { bindingKey, literalMember } from './request-validation-select.mjs';
|
|
4
|
-
import { returnedValues } from './request-validation-trace-helpers.mjs';
|
|
5
|
-
import { unwrapTransparentExpression } from './response-contract-route-syntax.mjs';
|
|
6
|
-
/** Traces only what a destructured local binds; false when the selection cannot be resolved. */
|
|
7
|
-
export function visitSelected(element, initializer, scope, visit, deps) {
|
|
8
|
-
const key = bindingKey(element);
|
|
9
|
-
const selected = { ...visit, trace: { origins: new Set() } };
|
|
10
|
-
if (key === undefined || !visitMember(initializer, key, scope, selected, deps))
|
|
11
|
-
return false;
|
|
12
|
-
if (element.initializer)
|
|
13
|
-
deps.visitValue(element.initializer, scope, selected);
|
|
14
|
-
selected.trace.origins.forEach((origin) => visit.trace.origins.add(origin));
|
|
15
|
-
visit.trace.unresolved ??= selected.trace.unresolved;
|
|
16
|
-
return true;
|
|
17
|
-
}
|
|
18
|
-
/** Visits one member of a literal, a const naming one, or a followed helper's returned value. */
|
|
19
|
-
function visitMember(node, key, scope, visit, deps) {
|
|
20
|
-
const value = unwrapTransparentExpression(node);
|
|
21
|
-
if (ts.isAwaitExpression(value))
|
|
22
|
-
return visitMember(value.expression, key, scope, visit, deps);
|
|
23
|
-
const literal = literalMember(value, key, scope);
|
|
24
|
-
if (literal !== undefined) {
|
|
25
|
-
if (literal)
|
|
26
|
-
deps.visitValue(literal, scope, visit);
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
if (!ts.isCallExpression(value) || visit.calls.has(value))
|
|
30
|
-
return false;
|
|
31
|
-
const followed = followedImplementations(value, scope);
|
|
32
|
-
return (followed.length > 0 &&
|
|
33
|
-
followed.every((fn) => {
|
|
34
|
-
if (visit.functions.has(fn))
|
|
35
|
-
return false;
|
|
36
|
-
const next = {
|
|
37
|
-
...visit,
|
|
38
|
-
seen: new Set(),
|
|
39
|
-
functions: new Set(visit.functions).add(fn),
|
|
40
|
-
calls: new Set(visit.calls).add(value),
|
|
41
|
-
};
|
|
42
|
-
const bound = deps.bindArguments(fn, value, scope, next.calls);
|
|
43
|
-
return returnedValues(fn).every((returned) => visitMember(returned, key, bound, next, deps));
|
|
44
|
-
}));
|
|
45
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import ts from '../contract-schema/typescript-api.mts';
|
|
2
|
-
import { type Scope } from './request-validation-follow.mts';
|
|
3
|
-
import { type Trace } from './request-validation-trace-select.mts';
|
|
4
|
-
export type { Trace };
|
|
5
|
-
/** Binds a followed function's parameters to what the call passes, with their origins. */
|
|
6
|
-
export declare function bindArguments(fn: ts.FunctionLikeDeclaration, call: ts.CallExpression, scope: Scope, calls?: Set<ts.Node>): Scope;
|
|
7
|
-
/** Unions the request origins found anywhere in a value expression. */
|
|
8
|
-
export declare function traceValue(node: ts.Node, scope: Scope, calls?: Set<ts.Node>): Trace;
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import ts from '../contract-schema/typescript-api.mjs';
|
|
2
|
-
import { followedImplementations } from './request-validation-follow.mjs';
|
|
3
|
-
import { reachingWrites, returnedValues } from './request-validation-trace-helpers.mjs';
|
|
4
|
-
import { identifierSymbol, resolveKey } from './request-validation-keys.mjs';
|
|
5
|
-
import { rootKind } from './request-validation-origin.mjs';
|
|
6
|
-
import { visitSelected } from './request-validation-trace-select.mjs';
|
|
7
|
-
import { requestOrigin } from './request-validation-request-origin.mjs';
|
|
8
|
-
import { runtimeParameters } from './registered-route-runtime-parameters.mjs';
|
|
9
|
-
/** Binds a followed function's parameters to what the call passes, with their origins. */
|
|
10
|
-
export function bindArguments(fn, call, scope, calls = new Set()) {
|
|
11
|
-
const keys = new Map(scope.keys);
|
|
12
|
-
const roots = new Map(scope.roots);
|
|
13
|
-
runtimeParameters(fn).forEach((parameter, index) => {
|
|
14
|
-
const symbol = ts.isIdentifier(parameter.name)
|
|
15
|
-
? scope.checker.getSymbolAtLocation(parameter.name)
|
|
16
|
-
: undefined;
|
|
17
|
-
if (!symbol)
|
|
18
|
-
return;
|
|
19
|
-
keys.delete(symbol);
|
|
20
|
-
roots.delete(symbol);
|
|
21
|
-
const argument = call.arguments[index];
|
|
22
|
-
const key = resolveKey(argument, scope.checker, scope.keys);
|
|
23
|
-
if (key !== undefined)
|
|
24
|
-
keys.set(symbol, key);
|
|
25
|
-
const bound = boundValue(parameter, argument, scope, calls);
|
|
26
|
-
if (bound)
|
|
27
|
-
roots.set(symbol, bound);
|
|
28
|
-
});
|
|
29
|
-
return { ...scope, keys, roots };
|
|
30
|
-
}
|
|
31
|
-
function boundValue(parameter, argument, scope, calls) {
|
|
32
|
-
// An omitted optional or defaulted parameter is not request-derived: it stays resolved.
|
|
33
|
-
if (!argument)
|
|
34
|
-
return parameter.questionToken || parameter.initializer ? { origins: [] } : undefined;
|
|
35
|
-
const traced = traceValue(argument, scope, calls);
|
|
36
|
-
return {
|
|
37
|
-
kind: rootKind(argument, scope.roots, scope.checker),
|
|
38
|
-
origins: [...traced.origins],
|
|
39
|
-
unresolved: traced.unresolved,
|
|
40
|
-
expression: argument,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
function visitIdentifier(identifier, scope, visit) {
|
|
44
|
-
const { seen } = visit;
|
|
45
|
-
const symbol = identifierSymbol(identifier, scope.checker);
|
|
46
|
-
if (!symbol || seen.has(identifier))
|
|
47
|
-
return;
|
|
48
|
-
seen.add(identifier);
|
|
49
|
-
const { writes, initializer } = reachingWrites(identifier, symbol, scope.checker, scope.cache);
|
|
50
|
-
if (initializer)
|
|
51
|
-
visitDeclared(identifier, symbol, scope, visit);
|
|
52
|
-
for (const write of writes)
|
|
53
|
-
visitValue(write, scope, visit);
|
|
54
|
-
}
|
|
55
|
-
/** The value a binding starts with: a call-site binding, a parameter, or its initializer. */
|
|
56
|
-
function visitDeclared(identifier, symbol, scope, visit) {
|
|
57
|
-
const { trace } = visit;
|
|
58
|
-
const bound = scope.roots.get(symbol);
|
|
59
|
-
if (bound) {
|
|
60
|
-
bound.origins.forEach((origin) => trace.origins.add(origin));
|
|
61
|
-
trace.unresolved ??= bound.unresolved;
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
for (const declaration of symbol.declarations ?? []) {
|
|
65
|
-
if (ts.isParameter(declaration)) {
|
|
66
|
-
if (!scope.keys.has(symbol))
|
|
67
|
-
trace.unresolved ??= `parameter \`${identifier.text}\` has no call-site binding`;
|
|
68
|
-
continue;
|
|
69
|
-
}
|
|
70
|
-
const owner = ts.isBindingElement(declaration) ? declaration.parent.parent : declaration;
|
|
71
|
-
if (ts.isVariableDeclaration(owner) && owner.initializer) {
|
|
72
|
-
if (!ts.isBindingElement(declaration) ||
|
|
73
|
-
!visitSelected(declaration, owner.initializer, scope, visit, { visitValue, bindArguments }))
|
|
74
|
-
visitValue(owner.initializer, scope, visit);
|
|
75
|
-
}
|
|
76
|
-
// `for (const [key, value] of Object.entries(x))` derives from the iterated expression.
|
|
77
|
-
else if (ts.isVariableDeclaration(owner) && ts.isForOfStatement(owner.parent.parent))
|
|
78
|
-
visitValue(owner.parent.parent.expression, scope, visit);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
function visitCall(call, scope, visit) {
|
|
82
|
-
if (visit.calls.has(call))
|
|
83
|
-
return;
|
|
84
|
-
const followed = followedImplementations(call, scope);
|
|
85
|
-
for (const fn of followed) {
|
|
86
|
-
if (visit.functions.has(fn))
|
|
87
|
-
continue;
|
|
88
|
-
const next = {
|
|
89
|
-
...visit,
|
|
90
|
-
seen: new Set(),
|
|
91
|
-
functions: new Set(visit.functions).add(fn),
|
|
92
|
-
calls: new Set(visit.calls).add(call),
|
|
93
|
-
};
|
|
94
|
-
const bound = bindArguments(fn, call, scope, next.calls);
|
|
95
|
-
for (const value of returnedValues(fn))
|
|
96
|
-
visitValue(value, bound, next);
|
|
97
|
-
}
|
|
98
|
-
// An opaque call may use any argument; a followed helper's return values already say which.
|
|
99
|
-
if (followed.length === 0)
|
|
100
|
-
ts.forEachChild(call, (child) => visitValue(child, scope, visit));
|
|
101
|
-
}
|
|
102
|
-
function visitValue(node, scope, visit) {
|
|
103
|
-
const { checker, roots } = scope;
|
|
104
|
-
const { trace } = visit;
|
|
105
|
-
if (ts.isFunctionLike(node))
|
|
106
|
-
return;
|
|
107
|
-
const origin = requestOrigin(node, roots, checker);
|
|
108
|
-
if (origin)
|
|
109
|
-
trace.origins.add(origin);
|
|
110
|
-
else if (ts.isCallExpression(node))
|
|
111
|
-
visitCall(node, scope, visit);
|
|
112
|
-
else if (ts.isConditionalExpression(node)) {
|
|
113
|
-
visitValue(node.whenTrue, scope, visit);
|
|
114
|
-
visitValue(node.whenFalse, scope, visit);
|
|
115
|
-
}
|
|
116
|
-
else if (ts.isPropertyAccessExpression(node) || ts.isElementAccessExpression(node))
|
|
117
|
-
visitValue(node.expression, scope, visit);
|
|
118
|
-
else if (ts.isPropertyAssignment(node))
|
|
119
|
-
visitValue(node.initializer, scope, visit);
|
|
120
|
-
else if (ts.isIdentifier(node))
|
|
121
|
-
visitIdentifier(node, scope, visit);
|
|
122
|
-
else
|
|
123
|
-
ts.forEachChild(node, (child) => visitValue(child, scope, visit));
|
|
124
|
-
}
|
|
125
|
-
/** Unions the request origins found anywhere in a value expression. */
|
|
126
|
-
export function traceValue(node, scope, calls = new Set()) {
|
|
127
|
-
const trace = { origins: new Set() };
|
|
128
|
-
visitValue(node, scope, { trace, seen: new Set(), functions: new Set(), calls });
|
|
129
|
-
return trace;
|
|
130
|
-
}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import type { RegisteredRoute } from './registered-route-catalog.mts';
|
|
2
|
-
export type Carrier = 'path' | 'query' | 'body' | 'header';
|
|
3
|
-
export declare const CARRIERS: readonly Carrier[];
|
|
4
|
-
export type ValidatorConfig = {
|
|
5
|
-
/** Resolved declaration file path suffix, or a package specifier, of the export. */
|
|
6
|
-
module: string;
|
|
7
|
-
exportName: string;
|
|
8
|
-
operationArgument: number;
|
|
9
|
-
carriers: {
|
|
10
|
-
kind: 'input-object';
|
|
11
|
-
argument: number;
|
|
12
|
-
} | {
|
|
13
|
-
kind: 'fixed';
|
|
14
|
-
carriers: readonly Carrier[];
|
|
15
|
-
optionCarriers?: readonly {
|
|
16
|
-
argument: number;
|
|
17
|
-
property: string;
|
|
18
|
-
carrier: Carrier;
|
|
19
|
-
}[];
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
export type FactoryConfig = {
|
|
23
|
-
module: string;
|
|
24
|
-
exportName: string;
|
|
25
|
-
optionsArgument: number;
|
|
26
|
-
operationProperty: string;
|
|
27
|
-
carriers: readonly Carrier[];
|
|
28
|
-
};
|
|
29
|
-
/** A validated carrier and the request carriers its value derives from. */
|
|
30
|
-
export type ValidatorSiteCarrier = {
|
|
31
|
-
carrier: Carrier;
|
|
32
|
-
origins: Carrier[];
|
|
33
|
-
/** Set when part of the value cannot be traced, such as an unbound parameter. */
|
|
34
|
-
unresolved?: string;
|
|
35
|
-
};
|
|
36
|
-
export type ExecutedCallbackConfig = {
|
|
37
|
-
module: string;
|
|
38
|
-
exportName: string;
|
|
39
|
-
/** Index of the object-literal argument. */
|
|
40
|
-
argument: number;
|
|
41
|
-
/** Function-valued properties of that object treated as executed. */
|
|
42
|
-
properties: readonly string[];
|
|
43
|
-
};
|
|
44
|
-
export type ValidatorSite = {
|
|
45
|
-
exportName: string;
|
|
46
|
-
source: string;
|
|
47
|
-
operation: string | null;
|
|
48
|
-
unresolvedReason?: string;
|
|
49
|
-
carriers: ValidatorSiteCarrier[];
|
|
50
|
-
/**
|
|
51
|
-
* Set when the input object cannot be fully resolved (a non-literal input, an unresolvable
|
|
52
|
-
* spread or a computed property name), so `carriers` may be incomplete.
|
|
53
|
-
*/
|
|
54
|
-
unresolvedCarriers?: string;
|
|
55
|
-
conditional: boolean;
|
|
56
|
-
};
|
|
57
|
-
export type FactorySite = {
|
|
58
|
-
exportName: string;
|
|
59
|
-
source: string;
|
|
60
|
-
operation: string | null;
|
|
61
|
-
unresolvedReason?: string;
|
|
62
|
-
carriers: Carrier[];
|
|
63
|
-
/** True when the factory call is reached only under a branch, loop or short-circuit. */
|
|
64
|
-
conditional: boolean;
|
|
65
|
-
};
|
|
66
|
-
/**
|
|
67
|
-
* `key` for a static key, `computed` for a non-static key (`key: null`), `whole` for the carrier
|
|
68
|
-
* used as a value or a body read (`key: null`).
|
|
69
|
-
*/
|
|
70
|
-
type CarrierReadAccess = 'key' | 'computed' | 'whole';
|
|
71
|
-
export type CarrierRead = {
|
|
72
|
-
carrier: Carrier;
|
|
73
|
-
key: string | null;
|
|
74
|
-
access: CarrierReadAccess;
|
|
75
|
-
source: string;
|
|
76
|
-
};
|
|
77
|
-
export type RouteValidationFacts = {
|
|
78
|
-
kind: RegisteredRoute['kind'];
|
|
79
|
-
source: string;
|
|
80
|
-
validatorSites: ValidatorSite[];
|
|
81
|
-
factorySites: FactorySite[];
|
|
82
|
-
carrierReads: CarrierRead[];
|
|
83
|
-
};
|
|
84
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const CARRIERS = ['path', 'query', 'body', 'header'];
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import ts from '../contract-schema/typescript-api.mts';
|
|
2
|
-
import type { ProtocolCache } from './protocol-analysis-cache.mts';
|
|
3
|
-
import type { HandlerProof } from './registered-route-handler-analysis.mts';
|
|
4
|
-
import type { CarrierRead, ExecutedCallbackConfig, FactoryConfig, FactorySite, ValidatorConfig, ValidatorSite } from './request-validation-types.mts';
|
|
5
|
-
type RouteFacts = {
|
|
6
|
-
validatorSites: ValidatorSite[];
|
|
7
|
-
factorySites: FactorySite[];
|
|
8
|
-
carrierReads: CarrierRead[];
|
|
9
|
-
};
|
|
10
|
-
export type WalkerConfig = {
|
|
11
|
-
checker: ts.TypeChecker;
|
|
12
|
-
sourceFiles: ReadonlySet<ts.SourceFile>;
|
|
13
|
-
validators: readonly ValidatorConfig[];
|
|
14
|
-
factories: readonly FactoryConfig[];
|
|
15
|
-
executedCallbacks: readonly ExecutedCallbackConfig[];
|
|
16
|
-
/** Shared across the routes of one facts run. */
|
|
17
|
-
protocolCache?: ProtocolCache;
|
|
18
|
-
};
|
|
19
|
-
/** Walks handlers and the helpers they run, collecting validation facts for one route. */
|
|
20
|
-
export declare function createRouteWalker(config: WalkerConfig): {
|
|
21
|
-
/** The collected facts; reads that only build a validator's input are left out. */
|
|
22
|
-
readonly facts: RouteFacts;
|
|
23
|
-
scanRegistration: (node: ts.Node) => void;
|
|
24
|
-
walkHandler(proof: HandlerProof): void;
|
|
25
|
-
};
|
|
26
|
-
export {};
|