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
package/dist/sql-ast/index.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { extractAlterTableAddColumnLocations } from
|
|
2
|
-
export { extractMigrationConstraintMetadata } from
|
|
3
|
-
export { extractCreateTableMetadata } from
|
|
4
|
-
export { extractDefaultFunction, extractFuncCallArgColumnNames } from
|
|
5
|
-
export { extractDropIndexMetadata } from
|
|
6
|
-
export { extractCreateIndexMetadata } from
|
|
7
|
-
export { lineOfUtf8ByteOffset } from
|
|
8
|
-
export { initSqlAst, MissingSqlAstParserError, parseSql } from
|
|
1
|
+
export { extractAlterTableAddColumnLocations } from "./add-column.mjs";
|
|
2
|
+
export { extractMigrationConstraintMetadata } from "./constraint.mjs";
|
|
3
|
+
export { extractCreateTableMetadata } from "./create-table.mjs";
|
|
4
|
+
export { extractDefaultFunction, extractFuncCallArgColumnNames } from "./default-function.mjs";
|
|
5
|
+
export { extractDropIndexMetadata } from "./drop-index.mjs";
|
|
6
|
+
export { extractCreateIndexMetadata } from "./index-metadata.mjs";
|
|
7
|
+
export { lineOfUtf8ByteOffset } from "./line-of-offset.mjs";
|
|
8
|
+
export { initSqlAst, MissingSqlAstParserError, parseSql } from "./parser.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { readDollarQuoteDelimiter, stringLiteralQuoteStart } from
|
|
2
|
-
export { dollarQuoteEnd, maskSqlQuotedText, readDollarQuoteDelimiter, readStringLiteral, sqlFragments, } from
|
|
3
|
-
export { stripSqlComments } from
|
|
1
|
+
import { readDollarQuoteDelimiter, stringLiteralQuoteStart } from "./literals.mjs";
|
|
2
|
+
export { dollarQuoteEnd, maskSqlQuotedText, readDollarQuoteDelimiter, readStringLiteral, sqlFragments, } from "./literals.mjs";
|
|
3
|
+
export { stripSqlComments } from "./comments.mjs";
|
|
4
4
|
export function lineOf(content, index) {
|
|
5
5
|
return content.slice(0, index).split('\n').length;
|
|
6
6
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { execFileSync } from 'node:child_process';
|
|
2
|
-
import { normalizeSwiftSource } from
|
|
2
|
+
import { normalizeSwiftSource } from "./normalize.mjs";
|
|
3
3
|
export function runSwiftSemanticEqualCli(args, gitShow = execFileSync) {
|
|
4
4
|
const [base, head, file] = args;
|
|
5
5
|
if (!base || !head || !file || args.length !== 3 || !file.endsWith('.swift')) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { normalizeSwiftSource } from
|
|
1
|
+
export { normalizeSwiftSource } from "./normalize.mjs";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { deriveRetryAttempt } from
|
|
2
|
-
export { decide } from
|
|
1
|
+
export { deriveRetryAttempt } from "./attempts.mjs";
|
|
2
|
+
export { decide } from "./decision-evaluator.mjs";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { execFileSync } from 'node:child_process';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
|
-
import { writeVitestBlobManifest } from
|
|
5
|
-
import { parseGitHubRunAttempt } from
|
|
4
|
+
import { writeVitestBlobManifest } from "./index.mjs";
|
|
5
|
+
import { parseGitHubRunAttempt } from "./run-attempt.mjs";
|
|
6
6
|
function failRepository() {
|
|
7
7
|
throw new Error('GITHUB_REPOSITORY is required');
|
|
8
8
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { createHash, randomUUID } from 'node:crypto';
|
|
2
2
|
import { lstatSync, readFileSync, readdirSync, renameSync, unlinkSync, writeFileSync, } from 'node:fs';
|
|
3
3
|
import { basename, join } from 'node:path';
|
|
4
|
-
import { VITEST_SUITE_PATTERN } from
|
|
5
|
-
import { VitestBlobBundleError } from
|
|
6
|
-
export * from
|
|
7
|
-
export { VITEST_SUITE_PATTERN } from
|
|
4
|
+
import { VITEST_SUITE_PATTERN } from "./constants.mjs";
|
|
5
|
+
import { VitestBlobBundleError } from "./bundle-error.mjs";
|
|
6
|
+
export * from "./report-attempt.mjs";
|
|
7
|
+
export { VITEST_SUITE_PATTERN } from "./constants.mjs";
|
|
8
8
|
export const VITEST_BLOB_MANIFEST_FILENAME = 'vitest-blob-manifest.json';
|
|
9
9
|
export const VITEST_BLOB_MANIFEST_VERSION = 'vitest-blob-manifest:v1';
|
|
10
10
|
function isRecord(value) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { readVitestReportAttempts, writeVitestReportAttempt, } from
|
|
2
|
-
import { parseGitHubRunAttempt } from
|
|
1
|
+
import { readVitestReportAttempts, writeVitestReportAttempt, } from "./report-attempt.mjs";
|
|
2
|
+
import { parseGitHubRunAttempt } from "./run-attempt.mjs";
|
|
3
3
|
function required(env, name) {
|
|
4
4
|
const value = env[name];
|
|
5
5
|
if (!value)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, renameSync, unlinkSync, writeFileSync, } from 'node:fs';
|
|
3
3
|
import { basename, join } from 'node:path';
|
|
4
|
-
import { VITEST_SUITE_PATTERN } from
|
|
4
|
+
import { VITEST_SUITE_PATTERN } from "./constants.mjs";
|
|
5
5
|
export const VITEST_REPORT_ATTEMPT_VERSION = 'vitest-report-attempt:v1';
|
|
6
6
|
export const VITEST_REPORT_ATTEMPT_PREFIX = 'vitest-report-attempt-';
|
|
7
7
|
function isRecord(value) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { VITEST_SUITE_PATTERN } from
|
|
2
|
-
import { prepareVitestReports } from
|
|
3
|
-
import { parseGitHubRunAttempt } from
|
|
1
|
+
import { VITEST_SUITE_PATTERN } from "./constants.mjs";
|
|
2
|
+
import { prepareVitestReports } from "./reports.mjs";
|
|
3
|
+
import { parseGitHubRunAttempt } from "./run-attempt.mjs";
|
|
4
4
|
function required(env, name) {
|
|
5
5
|
const value = env[name];
|
|
6
6
|
if (!value)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { lstatSync, readdirSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
-
import { inspectVitestBlobBundle, VITEST_BLOB_MANIFEST_FILENAME, VITEST_SUITE_PATTERN, } from
|
|
4
|
-
import { VitestBlobBundleError } from
|
|
3
|
+
import { inspectVitestBlobBundle, VITEST_BLOB_MANIFEST_FILENAME, VITEST_SUITE_PATTERN, } from "./index.mjs";
|
|
4
|
+
import { VitestBlobBundleError } from "./bundle-error.mjs";
|
|
5
5
|
class SourceFailure extends Error {
|
|
6
6
|
reason;
|
|
7
7
|
constructor(reason) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { existsSync, lstatSync, mkdirSync, mkdtempSync, renameSync, rmSync, writeFileSync, } from 'node:fs';
|
|
3
3
|
import { basename, dirname, join } from 'node:path';
|
|
4
|
-
import { VITEST_SUITE_PATTERN } from
|
|
5
|
-
import { inspectVitestReportSource, } from
|
|
4
|
+
import { VITEST_SUITE_PATTERN } from "./index.mjs";
|
|
5
|
+
import { inspectVitestReportSource, } from "./reports-source.mjs";
|
|
6
6
|
function validateOptions(options) {
|
|
7
7
|
if (!/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(options.repository))
|
|
8
8
|
throw new Error('Invalid Vitest repository');
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { join, posix, win32 } from 'node:path';
|
|
2
|
-
export { registerForkExitSentinel, setCurrentForkExitModule, setCurrentForkExitProject, } from
|
|
3
|
-
export { clearForkExitRecords, formatForkExitSentinelSection, readForkExitRecords, summarizeForkExitRecords, } from
|
|
4
|
-
export { createVitestWorkerExitDiagnosticsReporter, formatWorkerExitDiagnostics, isWorkerExitError, } from
|
|
5
|
-
export { createForkLeakDetector, formatForkLeakDiagnostics, waitForResourceCloseCallbacks, } from
|
|
6
|
-
import { isDiagnosticReportDirectoryCurrent, readDiagnosticReportDirectory } from
|
|
7
|
-
import { readBoundedRegularFile } from
|
|
8
|
-
export { MAX_DIAGNOSTIC_REPORT_BYTES } from
|
|
2
|
+
export { registerForkExitSentinel, setCurrentForkExitModule, setCurrentForkExitProject, } from "./vitest-fork-exit-sentinel.mjs";
|
|
3
|
+
export { clearForkExitRecords, formatForkExitSentinelSection, readForkExitRecords, summarizeForkExitRecords, } from "./vitest-fork-exit-records.mjs";
|
|
4
|
+
export { createVitestWorkerExitDiagnosticsReporter, formatWorkerExitDiagnostics, isWorkerExitError, } from "./vitest-worker-exit-diagnostics-reporter.mjs";
|
|
5
|
+
export { createForkLeakDetector, formatForkLeakDiagnostics, waitForResourceCloseCallbacks, } from "./vitest-fork-leak-detection.mjs";
|
|
6
|
+
import { isDiagnosticReportDirectoryCurrent, readDiagnosticReportDirectory } from "./directory.mjs";
|
|
7
|
+
import { readBoundedRegularFile } from "./read-file.mjs";
|
|
8
|
+
export { MAX_DIAGNOSTIC_REPORT_BYTES } from "./read-file.mjs";
|
|
9
9
|
export const DEFAULT_MAX_DIAGNOSTIC_REPORTS = 100;
|
|
10
10
|
export const DEFAULT_MAX_FORMATTED_DIAGNOSTIC_REPORTS = 20;
|
|
11
11
|
export const HARD_MAX_DIAGNOSTIC_REPORTS = 100;
|
|
12
|
-
export { HARD_MAX_DIAGNOSTIC_DIRECTORY_ENTRIES } from
|
|
12
|
+
export { HARD_MAX_DIAGNOSTIC_DIRECTORY_ENTRIES } from "./directory.mjs";
|
|
13
13
|
const TEXT_LIMIT = 200;
|
|
14
14
|
const PATH_LIMIT = 240;
|
|
15
15
|
function objectValue(value) {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// identifies a death before the sentinel handler ran. Synchronous writes avoid async pipe loss.
|
|
3
3
|
import { closeSync, constants, lstatSync, mkdirSync, openSync, readdirSync, readFileSync, unlinkSync, writeSync, } from 'node:fs';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
|
-
import { sanitizeInlineErrorMessage } from
|
|
5
|
+
import { sanitizeInlineErrorMessage } from "./vitest-fork-exit-error-detail.mjs";
|
|
6
6
|
const recordFileFds = new Map();
|
|
7
7
|
function recordFileDescriptor(directory) {
|
|
8
8
|
const cached = recordFileFds.get(directory);
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
import { writeSync } from 'node:fs';
|
|
11
11
|
import { constants as osConstants } from 'node:os';
|
|
12
12
|
import { getHeapStatistics } from 'node:v8';
|
|
13
|
-
import { MAX_RECORDED_ERROR_STACK_CHARS, sanitizeInlineErrorMessage, toErrorDetail, } from
|
|
14
|
-
import { writeForkExitRecord } from
|
|
13
|
+
import { MAX_RECORDED_ERROR_STACK_CHARS, sanitizeInlineErrorMessage, toErrorDetail, } from "./vitest-fork-exit-error-detail.mjs";
|
|
14
|
+
import { writeForkExitRecord } from "./vitest-fork-exit-records.mjs";
|
|
15
15
|
const SENTINEL_REGISTERED = Symbol.for('vouchington-tooling.vitest-fork-exit-sentinel.registered');
|
|
16
16
|
let currentModule = null;
|
|
17
17
|
// isolate: false lets one fork run files from multiple projects. Track the current project per test.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// Fork-side growth-delta leak detector for Vitest's reused forks pool.
|
|
2
2
|
// It spans setup-file resets with one episode per type and stable candidate plateau.
|
|
3
3
|
// Episodes combine new high-water marks with rolling samples for transient-high recovery.
|
|
4
|
-
export { formatForkLeakDiagnostics } from
|
|
5
|
-
import { createForkLeakEpisode, findForkLeakEpisodeEvidence, recordForkLeakEpisode, setForkLeakCandidate, takeConfirmedForkLeakCandidate, } from
|
|
4
|
+
export { formatForkLeakDiagnostics } from "./vitest-fork-leak-diagnostics.mjs";
|
|
5
|
+
import { createForkLeakEpisode, findForkLeakEpisodeEvidence, recordForkLeakEpisode, setForkLeakCandidate, takeConfirmedForkLeakCandidate, } from "./vitest-fork-leak-episode.mjs";
|
|
6
6
|
const realSetTimeout = globalThis.setTimeout;
|
|
7
7
|
const PERSISTENT_HANDLE_TYPES = new Set([
|
|
8
8
|
'TCPSocketWrap',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EOL } from 'node:os';
|
|
2
|
-
import { clearForkExitRecords, formatForkExitSentinelSection, readForkExitRecords, summarizeForkExitRecords, } from
|
|
3
|
-
import { collectStringValues, serializeDiagnosticsError, } from
|
|
2
|
+
import { clearForkExitRecords, formatForkExitSentinelSection, readForkExitRecords, summarizeForkExitRecords, } from "./vitest-fork-exit-records.mjs";
|
|
3
|
+
import { collectStringValues, serializeDiagnosticsError, } from "./vitest-worker-exit-diagnostics-errors.mjs";
|
|
4
4
|
const MAX_RECENT_MODULE_EVENTS = 8;
|
|
5
5
|
const MAX_RECENT_STDERR_LINES = 12;
|
|
6
6
|
const MAX_UNHANDLED_ERRORS = 2;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { splitTopLevel, hasTopLevelMixedOperators } from
|
|
1
|
+
import { splitTopLevel, hasTopLevelMixedOperators } from "./condition-split.mjs";
|
|
2
2
|
/**
|
|
3
3
|
* Conservative GitHub Actions `if:` condition comparison.
|
|
4
4
|
* Deliberately conservative: a condition shape this can't reason about is treated as NOT entailed
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
export { evaluateGraphPolicy } from './graph.mts';
|
|
2
|
-
export { evaluateLockPolicy, type ConcurrencyPolicy } from './concurrency.mts';
|
|
3
1
|
export { conditionEntails } from './condition-entailment.mts';
|
|
4
2
|
export { unprovisionedSecretsWithoutReadinessStep } from './secret-readiness.mts';
|
|
5
3
|
export { callerCalleePermissionMismatches, type CallerCalleePermissionPolicy, } from './permission-mismatches.mts';
|
|
6
4
|
export { missingTopLevelPermissionPaths, parsePermissions, parseWorkflow, requiredWorkflowPermissions, type Workflow, } from './permissions.mts';
|
|
7
|
-
export type { WorkflowTopology, WorkflowTopologyIndex,
|
|
5
|
+
export type { WorkflowTopology, WorkflowTopologyIndex, WorkflowNode, WorkflowJobNode, WorkflowStep, } from './types.mts';
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export { callerCalleePermissionMismatches, } from './permission-mismatches.mjs';
|
|
6
|
-
export { missingTopLevelPermissionPaths, parsePermissions, parseWorkflow, requiredWorkflowPermissions, } from './permissions.mjs';
|
|
1
|
+
export { conditionEntails } from "./condition-entailment.mjs";
|
|
2
|
+
export { unprovisionedSecretsWithoutReadinessStep } from "./secret-readiness.mjs";
|
|
3
|
+
export { callerCalleePermissionMismatches, } from "./permission-mismatches.mjs";
|
|
4
|
+
export { missingTopLevelPermissionPaths, parsePermissions, parseWorkflow, requiredWorkflowPermissions, } from "./permissions.mjs";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isPlainRecord, isValidDeclaration, isValidPermissionMap, mergePermissionMaps, permissionMap, PERMISSION_LEVEL_RANK, } from
|
|
1
|
+
import { isPlainRecord, isValidDeclaration, isValidPermissionMap, mergePermissionMaps, permissionMap, PERMISSION_LEVEL_RANK, } from "./permission-declarations.mjs";
|
|
2
2
|
function sortedEntries(value) {
|
|
3
3
|
return [...value].toSorted(([left], [right]) => left.localeCompare(right));
|
|
4
4
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { parsePermissions, permissionsToMap, requiredWorkflowPermissions, } from
|
|
2
|
-
import { inheritanceAwarePermissionMismatches } from
|
|
1
|
+
import { parsePermissions, permissionsToMap, requiredWorkflowPermissions, } from "./permissions.mjs";
|
|
2
|
+
import { inheritanceAwarePermissionMismatches } from "./permission-inheritance.mjs";
|
|
3
3
|
function formatPermissions(value) {
|
|
4
4
|
if (value === null)
|
|
5
5
|
return 'none';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { conditionEntails } from
|
|
2
|
-
import { stripShellComments } from
|
|
1
|
+
import { conditionEntails } from "./condition-entailment.mjs";
|
|
2
|
+
import { stripShellComments } from "./shell-comments.mjs";
|
|
3
3
|
function referencingWorkflowsByName(topology) {
|
|
4
4
|
const byName = new Map();
|
|
5
5
|
const paths = new Map(topology.workflows.map((workflow) => [workflow.id, workflow.path]));
|
|
@@ -9,7 +9,7 @@ export interface WorkflowStep {
|
|
|
9
9
|
run?: string;
|
|
10
10
|
secretReferences?: readonly string[];
|
|
11
11
|
}
|
|
12
|
-
|
|
12
|
+
interface WorkflowConcurrency {
|
|
13
13
|
effective: {
|
|
14
14
|
group: string;
|
|
15
15
|
cancelInProgress: boolean | string;
|
|
@@ -61,30 +61,4 @@ export interface WorkflowTopologyIndex {
|
|
|
61
61
|
match?: string;
|
|
62
62
|
}[];
|
|
63
63
|
}
|
|
64
|
-
export
|
|
65
|
-
export type StepSelector = {
|
|
66
|
-
id?: string;
|
|
67
|
-
uses?: string;
|
|
68
|
-
name?: string;
|
|
69
|
-
};
|
|
70
|
-
export type WorkflowTopologyPolicy = {
|
|
71
|
-
jobInventory: Readonly<Record<string, readonly string[]>>;
|
|
72
|
-
requiredJobs: readonly string[];
|
|
73
|
-
forbiddenJobs: readonly string[];
|
|
74
|
-
requiredDirectEdges: readonly EdgeRule[];
|
|
75
|
-
forbiddenDirectEdges: readonly EdgeRule[];
|
|
76
|
-
requiredTransitiveEdges: readonly EdgeRule[];
|
|
77
|
-
forbiddenTransitiveEdges: readonly EdgeRule[];
|
|
78
|
-
requiredArtifactEdges: readonly {
|
|
79
|
-
from: string;
|
|
80
|
-
to: string;
|
|
81
|
-
name: string;
|
|
82
|
-
match?: string;
|
|
83
|
-
}[];
|
|
84
|
-
exactFanIns: Readonly<Record<string, readonly string[]>>;
|
|
85
|
-
exactCallerJobs: Readonly<Record<string, readonly string[]>>;
|
|
86
|
-
stepOrders: readonly {
|
|
87
|
-
jobId: string;
|
|
88
|
-
steps: readonly StepSelector[];
|
|
89
|
-
}[];
|
|
90
|
-
};
|
|
64
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { readFile } from 'node:fs/promises';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
-
import { packageNameFromPnpmLockKey, pnpmLockPackageKeyMatchesSelector, } from
|
|
4
|
-
import { loadYaml } from
|
|
3
|
+
import { packageNameFromPnpmLockKey, pnpmLockPackageKeyMatchesSelector, } from "../pnpm-install/index.mjs";
|
|
4
|
+
import { loadYaml } from "./yaml-loader.mjs";
|
|
5
5
|
const PACKAGE_DEPENDENCY_FIELDS = [
|
|
6
6
|
'dependencies',
|
|
7
7
|
'devDependencies',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { checkWorkspaceGatesPolicy } from
|
|
1
|
+
export { checkWorkspaceGatesPolicy } from "./policy.mjs";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
-
import { findExpectations } from
|
|
4
|
-
import { buildDependencyMatchers, SEMVER_LITERAL } from
|
|
3
|
+
import { findExpectations } from "./manifest-version-parser.mjs";
|
|
4
|
+
import { buildDependencyMatchers, SEMVER_LITERAL } from "./manifest-version-patterns.mjs";
|
|
5
5
|
const TEST_SOURCE_FILE = /(?:^|\/)[^/]+\.(?:test|spec)\.[cm]?[jt]sx?$/u;
|
|
6
6
|
const PACKAGE_JSON_FILE = /(?:^|\/)package\.json$/u;
|
|
7
7
|
const TEST_OR_FIXTURE_DIRECTORY = /(?:^|\/)(?:test|tests|__tests__|fixture|fixtures|__fixtures__)(?:\/|$)/u;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { skipLiteralOrComment } from
|
|
1
|
+
import { skipLiteralOrComment } from "./manifest-version-skips.mjs";
|
|
2
2
|
const EXPECTATION_MATCHER = /^\s*(?:\.|\?\.)\s*(?:not\s*\.\s*)?to(?:Be|Equal|StrictEqual|MatchObject|Contain|ContainEqual|HaveProperty)\s*\(/u;
|
|
3
3
|
function closingParenthesis(source, open) {
|
|
4
4
|
let depth = 1;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { validateReleaseAgeExemptionGroups } from
|
|
2
|
-
import { checkDependabotCrosslist } from
|
|
3
|
-
import { checkExcludeRegistry } from
|
|
4
|
-
import { checkManifestDependencyVersionAssertions } from
|
|
5
|
-
import { checkActiveFirstPartyGraph, checkTemporaryReleaseAgeSelectorsInLockfile, } from
|
|
6
|
-
import { resolveWorkspaceGatesOptions, shouldValidateTemporaryGroups, } from
|
|
7
|
-
import { loadYaml } from
|
|
1
|
+
import { validateReleaseAgeExemptionGroups } from "../pnpm-install/index.mjs";
|
|
2
|
+
import { checkDependabotCrosslist } from "./dependabot.mjs";
|
|
3
|
+
import { checkExcludeRegistry } from "./exclude-registry.mjs";
|
|
4
|
+
import { checkManifestDependencyVersionAssertions } from "./manifest-version-assertions.mjs";
|
|
5
|
+
import { checkActiveFirstPartyGraph, checkTemporaryReleaseAgeSelectorsInLockfile, } from "./first-party-graph.mjs";
|
|
6
|
+
import { resolveWorkspaceGatesOptions, shouldValidateTemporaryGroups, } from "./options.mjs";
|
|
7
|
+
import { loadYaml } from "./yaml-loader.mjs";
|
|
8
8
|
export async function checkWorkspaceGatesPolicy(ctx, options) {
|
|
9
9
|
const errors = [];
|
|
10
10
|
const resolved = resolveWorkspaceGatesOptions(options);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { SharedContext } from '../shared-context/index.mts';
|
|
2
2
|
import type { WorkspaceGatesOptions } from './options.mts';
|
|
3
|
-
export declare const FIRST_PARTY_NAMES: readonly [
|
|
4
|
-
export declare const SCOPED_PREFIXES: readonly [
|
|
3
|
+
export declare const FIRST_PARTY_NAMES: readonly ["acme-lib", "@acme/core"];
|
|
4
|
+
export declare const SCOPED_PREFIXES: readonly ["@acme/"];
|
|
5
5
|
export declare const TEMPORARY_SELECTOR = "demo-temporary-package@9.9.9";
|
|
6
6
|
export declare function defaultOptions(overrides?: Partial<WorkspaceGatesOptions>): WorkspaceGatesOptions;
|
|
7
7
|
export declare function stubCtx(repoRoot: string, trackedFiles: readonly string[]): SharedContext;
|
|
@@ -1,33 +1,24 @@
|
|
|
1
1
|
# Workflow and compiler primitives
|
|
2
2
|
|
|
3
|
-
`workflow-policy`
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
concurrency intent separately. Its scope classifier recognizes GitHub expression references and
|
|
9
|
-
reports unsupported contexts.
|
|
10
|
-
|
|
11
|
-
Inventory compares workflow `jobIds` against each corresponding job's `key`; job IDs may use any
|
|
12
|
-
format. Fan-in and caller comparisons ignore ordering of index results.
|
|
3
|
+
`workflow-policy` checks parsed GitHub Actions topology against data supplied by the consumer. It
|
|
4
|
+
has no workflow inventory or secret names of its own. Supply a topology shaped like
|
|
5
|
+
`WorkflowTopology`; a parser may expose additional fields. Topology, job-graph and concurrency
|
|
6
|
+
policy lives in the `no-mistakes` `workflow-topology-policy` rule, not here. This breaking minor removed `evaluateGraphPolicy`, `evaluateLockPolicy`,
|
|
7
|
+
`ConcurrencyPolicy` and `WorkflowTopologyPolicy`; migrate to that rule.
|
|
13
8
|
|
|
14
9
|
```ts
|
|
15
10
|
import {
|
|
16
11
|
conditionEntails,
|
|
17
|
-
evaluateGraphPolicy,
|
|
18
|
-
evaluateLockPolicy,
|
|
19
12
|
callerCalleePermissionMismatches,
|
|
20
13
|
parseWorkflow,
|
|
21
14
|
unprovisionedSecretsWithoutReadinessStep,
|
|
22
15
|
} from 'vouchington-tooling/workflow-policy'
|
|
23
16
|
|
|
24
|
-
const diagnostics =
|
|
25
|
-
diagnostics.push(...evaluateLockPolicy(topology, unlockedReasons, concurrencyIntent))
|
|
26
|
-
diagnostics.push(
|
|
17
|
+
const diagnostics = [
|
|
27
18
|
...unprovisionedSecretsWithoutReadinessStep(topology, {
|
|
28
19
|
RELEASE_KEY: { provisioned: false },
|
|
29
20
|
}),
|
|
30
|
-
|
|
21
|
+
]
|
|
31
22
|
const documents = Object.fromEntries(
|
|
32
23
|
Object.entries(workflowSources).map(([path, yaml]) => [path, parseWorkflow(yaml)]),
|
|
33
24
|
)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vouchington-tooling",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.36.0",
|
|
4
4
|
"description": "Vouchington CLI and extractable tooling libraries.",
|
|
5
5
|
"homepage": "https://github.com/vouchington/vouchington-tooling/tree/main/packages/vouchington-tooling#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -181,11 +181,6 @@
|
|
|
181
181
|
"import": "./dist/api-fixtures/index.mjs",
|
|
182
182
|
"default": "./dist/api-fixtures/index.mjs"
|
|
183
183
|
},
|
|
184
|
-
"./api-contract-discovery": {
|
|
185
|
-
"types": "./dist/api-contract-discovery/index.d.mts",
|
|
186
|
-
"import": "./dist/api-contract-discovery/index.mjs",
|
|
187
|
-
"default": "./dist/api-contract-discovery/index.mjs"
|
|
188
|
-
},
|
|
189
184
|
"./transient-retry": {
|
|
190
185
|
"types": "./dist/transient-retry/index.d.mts",
|
|
191
186
|
"import": "./dist/transient-retry/index.mjs",
|
|
@@ -364,6 +359,7 @@
|
|
|
364
359
|
"dependencies": {
|
|
365
360
|
"@types/mdast": "4.0.4",
|
|
366
361
|
"@types/unist": "3.0.3",
|
|
362
|
+
"@typescript-eslint/parser": "^8.71.1",
|
|
367
363
|
"csv-parse": "7.0.3",
|
|
368
364
|
"csv-stringify": "6.9.0",
|
|
369
365
|
"dockerfile-ast": "0.7.1",
|
|
@@ -371,6 +367,7 @@
|
|
|
371
367
|
"remark": "15.0.1",
|
|
372
368
|
"remark-gfm": "4.0.1",
|
|
373
369
|
"spdx-expression-parse": "5.0.0",
|
|
370
|
+
"typescript": "npm:@typescript/typescript6@^6.0.2",
|
|
374
371
|
"yaml": "2.9.1"
|
|
375
372
|
},
|
|
376
373
|
"devDependencies": {
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import ts from '../contract-schema/typescript-api.mjs';
|
|
2
|
-
import { contractError } from './response-contract-registration.mjs';
|
|
3
|
-
export function parseHeaderContract(sourceFile, node) {
|
|
4
|
-
const request = propertyObject(sourceFile, node, 'request');
|
|
5
|
-
const responses = propertyObject(sourceFile, node, 'responses');
|
|
6
|
-
return {
|
|
7
|
-
requestHeaders: request ? parseHeaders(sourceFile, request) : {},
|
|
8
|
-
responseHeaders: responses ? parseResponses(sourceFile, responses) : {},
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
function parseResponses(sourceFile, node) {
|
|
12
|
-
const result = {};
|
|
13
|
-
for (const property of node.properties) {
|
|
14
|
-
if (!ts.isPropertyAssignment(property) ||
|
|
15
|
-
!ts.isNumericLiteral(property.name) ||
|
|
16
|
-
!ts.isObjectLiteralExpression(property.initializer))
|
|
17
|
-
throw contractError(sourceFile, property, 'apiHeaders response status must be a numeric object property');
|
|
18
|
-
const status = Number(property.name.text);
|
|
19
|
-
const errors = property.initializer.properties.find((item) => ts.isPropertyAssignment(item) && item.name.getText(sourceFile) === 'errors');
|
|
20
|
-
const headers = propertyObject(sourceFile, property.initializer, 'headers');
|
|
21
|
-
const description = stringProperty(property.initializer, 'description');
|
|
22
|
-
result[status] = {
|
|
23
|
-
...(description ? { description } : {}),
|
|
24
|
-
...(errors ? { errors: parseErrors(sourceFile, property.initializer) } : {}),
|
|
25
|
-
headers: headers ? parseHeaders(sourceFile, headers) : {},
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
return result;
|
|
29
|
-
}
|
|
30
|
-
function parseErrors(sourceFile, node) {
|
|
31
|
-
const property = findProperty(node, 'errors', sourceFile);
|
|
32
|
-
if (!property || !ts.isArrayLiteralExpression(property.initializer))
|
|
33
|
-
throw contractError(sourceFile, node, 'apiHeaders errors must be an array');
|
|
34
|
-
return property.initializer.elements.map((element) => {
|
|
35
|
-
if (!ts.isObjectLiteralExpression(element))
|
|
36
|
-
throw contractError(sourceFile, element, 'apiHeaders errors entries must be objects');
|
|
37
|
-
return {
|
|
38
|
-
code: requiredString(sourceFile, element, 'code'),
|
|
39
|
-
message: requiredString(sourceFile, element, 'message'),
|
|
40
|
-
};
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
function parseHeaders(sourceFile, node) {
|
|
44
|
-
const result = Object.create(null);
|
|
45
|
-
for (const property of node.properties) {
|
|
46
|
-
if (!ts.isPropertyAssignment(property) ||
|
|
47
|
-
!ts.isStringLiteral(property.name) ||
|
|
48
|
-
!ts.isObjectLiteralExpression(property.initializer))
|
|
49
|
-
throw contractError(sourceFile, property, 'apiHeaders header must be a string-keyed object property');
|
|
50
|
-
const description = stringProperty(property.initializer, 'description');
|
|
51
|
-
const format = stringProperty(property.initializer, 'format');
|
|
52
|
-
result[property.name.text] = {
|
|
53
|
-
type: requiredString(sourceFile, property.initializer, 'type'),
|
|
54
|
-
required: booleanProperty(property.initializer, 'required') ?? false,
|
|
55
|
-
...(format ? { format: format } : {}),
|
|
56
|
-
...(description ? { description } : {}),
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
return result;
|
|
60
|
-
}
|
|
61
|
-
function propertyObject(sourceFile, node, name) {
|
|
62
|
-
const property = findProperty(node, name, sourceFile);
|
|
63
|
-
if (!property)
|
|
64
|
-
return undefined;
|
|
65
|
-
if (!ts.isObjectLiteralExpression(property.initializer))
|
|
66
|
-
throw contractError(sourceFile, property, `apiHeaders ${name} must be an object`);
|
|
67
|
-
return property.initializer;
|
|
68
|
-
}
|
|
69
|
-
function stringProperty(node, name) {
|
|
70
|
-
const property = findProperty(node, name);
|
|
71
|
-
return property && ts.isStringLiteral(property.initializer)
|
|
72
|
-
? property.initializer.text
|
|
73
|
-
: undefined;
|
|
74
|
-
}
|
|
75
|
-
function requiredString(sourceFile, node, name) {
|
|
76
|
-
const value = stringProperty(node, name);
|
|
77
|
-
if (!value)
|
|
78
|
-
throw contractError(sourceFile, node, `apiHeaders requires string ${name}`);
|
|
79
|
-
return value;
|
|
80
|
-
}
|
|
81
|
-
function booleanProperty(node, name) {
|
|
82
|
-
const property = findProperty(node, name);
|
|
83
|
-
if (!property)
|
|
84
|
-
return undefined;
|
|
85
|
-
if (property.initializer.kind === ts.SyntaxKind.TrueKeyword)
|
|
86
|
-
return true;
|
|
87
|
-
if (property.initializer.kind === ts.SyntaxKind.FalseKeyword)
|
|
88
|
-
return false;
|
|
89
|
-
return undefined;
|
|
90
|
-
}
|
|
91
|
-
function findProperty(node, name, sourceFile) {
|
|
92
|
-
return node.properties.find((item) => ts.isPropertyAssignment(item) && item.name.getText(sourceFile) === name);
|
|
93
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import ts from '../contract-schema/typescript-api.mts';
|
|
2
|
-
import type { HeaderContractRegistry } from './header-contract-types.mts';
|
|
3
|
-
export declare function discoverApiHeaderContracts(program: ts.Program, sourceFiles: readonly ts.SourceFile[], knownResponseRoutes: ReadonlySet<string>): HeaderContractRegistry;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import ts from '../contract-schema/typescript-api.mjs';
|
|
2
|
-
import { registerPlatformCompilerLibraries } from './protocol-platform-callbacks.mjs';
|
|
3
|
-
import { contractError } from './response-contract-registration.mjs';
|
|
4
|
-
import { parseHeaderContract } from './header-contract-parser.mjs';
|
|
5
|
-
import { collectHandlerBindings, enclosingRouteBinding, visit, } from './response-contract-route-analysis.mjs';
|
|
6
|
-
export function discoverApiHeaderContracts(program, sourceFiles, knownResponseRoutes) {
|
|
7
|
-
registerPlatformCompilerLibraries(program);
|
|
8
|
-
const checker = program.getTypeChecker();
|
|
9
|
-
const bindings = collectHandlerBindings(sourceFiles, checker);
|
|
10
|
-
const contracts = new Map();
|
|
11
|
-
const knownOperations = new Set([...knownResponseRoutes].map((key) => key.split('#')[0]));
|
|
12
|
-
for (const sourceFile of sourceFiles) {
|
|
13
|
-
visit(sourceFile, (node) => {
|
|
14
|
-
if (!ts.isCallExpression(node) || !isMarker(node.expression))
|
|
15
|
-
return;
|
|
16
|
-
const [keyNode, contractNode] = node.arguments;
|
|
17
|
-
if (!keyNode ||
|
|
18
|
-
!ts.isStringLiteral(keyNode) ||
|
|
19
|
-
!contractNode ||
|
|
20
|
-
!ts.isObjectLiteralExpression(contractNode)) {
|
|
21
|
-
throw contractError(sourceFile, node, 'apiHeaders requires a literal operation key and object contract');
|
|
22
|
-
}
|
|
23
|
-
const binding = enclosingRouteBinding(node, checker, bindings);
|
|
24
|
-
if (!binding)
|
|
25
|
-
throw contractError(sourceFile, node, 'apiHeaders must be inside an app.route handler');
|
|
26
|
-
const key = `${binding.method}:${binding.routeTemplate}`;
|
|
27
|
-
if (keyNode.text !== key)
|
|
28
|
-
throw contractError(sourceFile, keyNode, `Header operation key "${keyNode.text}" does not match enclosing route ${key}`);
|
|
29
|
-
if (!knownOperations.has(key))
|
|
30
|
-
throw contractError(sourceFile, keyNode, `apiHeaders references unknown response route ${key}`);
|
|
31
|
-
if (contracts.has(key))
|
|
32
|
-
throw contractError(sourceFile, keyNode, `Duplicate apiHeaders marker for ${key}`);
|
|
33
|
-
contracts.set(key, parseHeaderContract(sourceFile, contractNode));
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
return Object.fromEntries([...contracts.entries()].toSorted(([a], [b]) => a.localeCompare(b)));
|
|
37
|
-
}
|
|
38
|
-
function isMarker(expression) {
|
|
39
|
-
return ts.isIdentifier(expression) && expression.text === 'apiHeaders';
|
|
40
|
-
}
|