vouchington-tooling 0.35.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.
Files changed (532) hide show
  1. package/README.md +24 -221
  2. package/dist/agent-blackboard/feedback-audit-source.mjs +2 -2
  3. package/dist/agent-blackboard/feedback-canonical.mjs +1 -1
  4. package/dist/agent-blackboard/feedback-codec.mjs +3 -3
  5. package/dist/agent-blackboard/feedback-compose.mjs +5 -5
  6. package/dist/agent-blackboard/feedback-deadline.mjs +1 -1
  7. package/dist/agent-blackboard/feedback-delivery.mjs +6 -6
  8. package/dist/agent-blackboard/feedback-fields.mjs +1 -1
  9. package/dist/agent-blackboard/feedback-identity.mjs +3 -3
  10. package/dist/agent-blackboard/feedback-journal-audit.mjs +4 -4
  11. package/dist/agent-blackboard/feedback-journal-sandbox.mjs +1 -1
  12. package/dist/agent-blackboard/feedback-online-error.mjs +1 -1
  13. package/dist/agent-blackboard/feedback-online.mjs +7 -7
  14. package/dist/agent-blackboard/feedback-outbox-counts.mjs +2 -2
  15. package/dist/agent-blackboard/feedback-outbox.mjs +7 -7
  16. package/dist/agent-blackboard/index.mjs +13 -13
  17. package/dist/agent-blackboard/journal.mjs +3 -3
  18. package/dist/agent-blackboard/session-tools.mjs +4 -4
  19. package/dist/agent-blackboard/snapshot-cleanup-directory.mjs +3 -3
  20. package/dist/agent-blackboard/snapshot-cleanup-receipt.mjs +1 -1
  21. package/dist/agent-blackboard/snapshot-cleanup-resume.mjs +2 -2
  22. package/dist/agent-blackboard/snapshot-partition-cleanup.mjs +3 -3
  23. package/dist/agent-blackboard/snapshot-partition-format.mjs +3 -3
  24. package/dist/agent-blackboard/snapshot-partition-predicates.mjs +2 -2
  25. package/dist/agent-blackboard/snapshot-partition-read.mjs +2 -2
  26. package/dist/agent-blackboard/snapshot-partition-validate.mjs +2 -2
  27. package/dist/agent-blackboard/snapshot-partition-write.mjs +2 -2
  28. package/dist/agent-blackboard/snapshot-partitions.mjs +4 -4
  29. package/dist/agent-blackboard/snapshot.mjs +2 -2
  30. package/dist/agent-harness-identity/index.d.mts +1 -1
  31. package/dist/api-fixtures/fixture-contract-validation.mjs +1 -1
  32. package/dist/api-fixtures/index.mjs +3 -3
  33. package/dist/ast-grep-examples/companion-parity.mjs +1 -1
  34. package/dist/ast-grep-examples/index.mjs +1 -1
  35. package/dist/basic-auth-doc-sync/index.mjs +2 -2
  36. package/dist/basic-auth-doc-sync/runbook.mjs +4 -4
  37. package/dist/basic-auth-doc-sync/source.mjs +2 -2
  38. package/dist/browser-session-runner/attempt.mjs +5 -5
  39. package/dist/browser-session-runner/index.mjs +4 -4
  40. package/dist/browser-session-runner/output.mjs +1 -1
  41. package/dist/ci-local/index.mjs +2 -2
  42. package/dist/cli/commands/agent-blackboard-flags.mjs +1 -1
  43. package/dist/cli/commands/agent-blackboard.mjs +3 -3
  44. package/dist/cli/commands/ast-grep-examples.mjs +1 -1
  45. package/dist/cli/commands/ast-grep-pack.mjs +1 -1
  46. package/dist/cli/commands/gha-artifacts-cleanup.mjs +1 -1
  47. package/dist/cli/commands/gha-runtime-audit.mjs +1 -1
  48. package/dist/cli/commands/gha-workspace-policy.mjs +2 -2
  49. package/dist/cli/commands/http-origin.mjs +1 -1
  50. package/dist/cli/commands/link-skill.mjs +1 -1
  51. package/dist/cli/commands/mcp.mjs +2 -2
  52. package/dist/cli/commands/nuget-central-version.mjs +1 -1
  53. package/dist/cli/commands/pnpm-install.mjs +1 -1
  54. package/dist/cli/commands/prepare-vitest-reports.mjs +1 -1
  55. package/dist/cli/commands/require-up-to-date.mjs +1 -1
  56. package/dist/cli/commands/retrospective-facts.mjs +1 -1
  57. package/dist/cli/commands/retrospective-transcript.mjs +1 -1
  58. package/dist/cli/commands/runner-port-policy.mjs +1 -1
  59. package/dist/cli/commands/vitest-blob-manifest.mjs +1 -1
  60. package/dist/cli/commands/vitest-report-attempt.mjs +1 -1
  61. package/dist/cli/index.mjs +27 -27
  62. package/dist/cli/installed-version.mjs +1 -1
  63. package/dist/cli/parse-gha-runtime-audit.mjs +1 -1
  64. package/dist/cli/parse-options.mjs +2 -2
  65. package/dist/cli/parse.mjs +5 -5
  66. package/dist/compiler-build/index.mjs +3 -3
  67. package/dist/compiler-build/program.mjs +3 -3
  68. package/dist/config-inventory/collect.mjs +5 -5
  69. package/dist/config-inventory/dynamic-configs.mjs +1 -1
  70. package/dist/config-inventory/env-expression-readers.mjs +1 -1
  71. package/dist/config-inventory/env-prefix-readers.mjs +2 -2
  72. package/dist/config-inventory/env-var-accumulator.mjs +1 -1
  73. package/dist/config-inventory/env-vars.mjs +5 -5
  74. package/dist/config-inventory/index.mjs +2 -2
  75. package/dist/contract-schema/contract-schema-bounded-array.mjs +2 -2
  76. package/dist/contract-schema/contract-schema-extractor.mjs +3 -3
  77. package/dist/contract-schema/contract-schema-object-tuple.mjs +2 -2
  78. package/dist/contract-schema/contract-schema-type-extractor.mjs +5 -5
  79. package/dist/contract-schema/contract-schema-type-utils.mjs +2 -2
  80. package/dist/contract-schema/contract-schema-validator.mjs +1 -1
  81. package/dist/contract-schema/index.mjs +7 -7
  82. package/dist/contract-schema/type-query-call.mjs +3 -3
  83. package/dist/contract-schema/type-query.mjs +2 -2
  84. package/dist/contract-schema/virtual-program.mjs +1 -1
  85. package/dist/coverage-transport/control-v2-parse-object.mjs +2 -2
  86. package/dist/coverage-transport/control-v2.mjs +4 -4
  87. package/dist/coverage-transport/control.mjs +2 -2
  88. package/dist/coverage-transport/discovery.mjs +4 -4
  89. package/dist/coverage-transport/http.mjs +1 -1
  90. package/dist/coverage-transport/index.mjs +10 -10
  91. package/dist/coverage-transport/keys.mjs +1 -1
  92. package/dist/coverage-transport/lib.mjs +6 -6
  93. package/dist/coverage-transport/prefix-transfer.mjs +4 -4
  94. package/dist/coverage-transport/prefix.mjs +3 -3
  95. package/dist/coverage-transport/presign.mjs +1 -1
  96. package/dist/coverage-transport/vitest-blob-transport.mjs +2 -2
  97. package/dist/dependency-license-policy/collect.mjs +5 -5
  98. package/dist/dependency-license-policy/index.mjs +3 -3
  99. package/dist/dependency-license-policy/policy.mjs +1 -1
  100. package/dist/dependency-license-policy/workspace.mjs +1 -1
  101. package/dist/dockerfile-parse/index.mjs +2 -2
  102. package/dist/dockerfile-parse/prewarm-ports.mjs +1 -1
  103. package/dist/dockerfile-parse/runtime-cmd.mjs +2 -2
  104. package/dist/finite-enum-ripple/check.mjs +3 -3
  105. package/dist/finite-enum-ripple/compare.mjs +2 -2
  106. package/dist/finite-enum-ripple/component-paths.mjs +2 -2
  107. package/dist/finite-enum-ripple/configured-object-mutations.mjs +1 -1
  108. package/dist/finite-enum-ripple/create-page-jsx.mjs +1 -1
  109. package/dist/finite-enum-ripple/create-page-literals.mjs +4 -4
  110. package/dist/finite-enum-ripple/create-page-object-visitor.mjs +2 -2
  111. package/dist/finite-enum-ripple/create-page-properties.mjs +1 -1
  112. package/dist/finite-enum-ripple/index.mjs +1 -1
  113. package/dist/finite-enum-ripple/parser-support.mjs +2 -2
  114. package/dist/finite-enum-ripple/parsers.mjs +3 -3
  115. package/dist/finite-enum-ripple/structured-route-check.mjs +4 -4
  116. package/dist/finite-enum-ripple/types.mjs +3 -3
  117. package/dist/finite-enum-ripple/union-factory-check.mjs +2 -2
  118. package/dist/finite-enum-ripple/union-types.mjs +4 -4
  119. package/dist/gh-api-shell-quoting/index.mjs +2 -2
  120. package/dist/gh-api-shell-quoting/logical-line.mjs +1 -1
  121. package/dist/gh-api-shell-quoting/scan.mjs +1 -1
  122. package/dist/gh-api-shell-quoting/yaml.mjs +1 -1
  123. package/dist/gh-cli/index.mjs +4 -4
  124. package/dist/gha-artifacts-cleanup/commands.mjs +2 -2
  125. package/dist/gha-artifacts-cleanup/index.mjs +4 -4
  126. package/dist/gha-check-run/cli.mjs +2 -2
  127. package/dist/gha-check-run/index.mjs +2 -2
  128. package/dist/gha-claude-post-review/index.mjs +2 -2
  129. package/dist/gha-post-review/claude-token.d.mts +2 -2
  130. package/dist/gha-post-review/claude-token.mjs +1 -1
  131. package/dist/gha-post-review/cli.mjs +1 -1
  132. package/dist/gha-post-review/github.mjs +7 -7
  133. package/dist/gha-post-review/index.mjs +6 -6
  134. package/dist/gha-post-review/post.mjs +2 -2
  135. package/dist/gha-post-review/pull-io.mjs +1 -1
  136. package/dist/gha-post-review/token.mjs +1 -1
  137. package/dist/gha-pr-checkpoint/index.mjs +3 -3
  138. package/dist/gha-pr-checkpoint/resume.mjs +1 -1
  139. package/dist/gha-pr-checkpoint/update.mjs +1 -1
  140. package/dist/gha-review-payload/cli.mjs +2 -2
  141. package/dist/gha-review-payload/file.mjs +1 -1
  142. package/dist/gha-review-payload/index.mjs +4 -4
  143. package/dist/gha-review-payload/remap.mjs +1 -1
  144. package/dist/gha-runtime-audit/audit.mjs +4 -4
  145. package/dist/gha-runtime-audit/index.mjs +3 -3
  146. package/dist/gha-workspace-policy/docker-options.mjs +1 -1
  147. package/dist/gha-workspace-policy/docker-workspace-user.mjs +2 -2
  148. package/dist/gha-workspace-policy/index.mjs +3 -3
  149. package/dist/gha-workspace-policy/shell-tokens.mjs +1 -1
  150. package/dist/gha-workspace-policy/sparse-checkout.mjs +1 -1
  151. package/dist/github-projects/index.mjs +2 -2
  152. package/dist/github-projects/project-audit.mjs +1 -1
  153. package/dist/index.mjs +55 -55
  154. package/dist/markdown/content-facts.mjs +1 -1
  155. package/dist/markdown/document-sections.mjs +2 -2
  156. package/dist/markdown/html-blocks.mjs +1 -1
  157. package/dist/markdown/index.mjs +10 -10
  158. package/dist/markdown/sections.mjs +2 -2
  159. package/dist/markdown/tables.mjs +2 -2
  160. package/dist/markdown/tasks.mjs +1 -1
  161. package/dist/mcp-server/context.mjs +2 -2
  162. package/dist/mcp-server/dispatch.mjs +8 -8
  163. package/dist/mcp-server/git-fixture.test-helpers.mjs +1 -1
  164. package/dist/mcp-server/handlers-journal.mjs +4 -4
  165. package/dist/mcp-server/handlers-outbox.mjs +2 -2
  166. package/dist/mcp-server/handlers-session.mjs +3 -3
  167. package/dist/mcp-server/harness.test-helpers.mjs +4 -4
  168. package/dist/mcp-server/main.mjs +1 -1
  169. package/dist/mcp-server/run.mjs +3 -3
  170. package/dist/mcp-server/sdk.mjs +1 -1
  171. package/dist/mcp-server/server.mjs +2 -2
  172. package/dist/mcp-server/worktree.mjs +2 -2
  173. package/dist/nuget-central-version/cli.mjs +1 -1
  174. package/dist/openapi-document/build-openapi-catalog-sse.mjs +1 -1
  175. package/dist/openapi-document/build-openapi-document.mjs +8 -8
  176. package/dist/openapi-document/build-openapi-request.mjs +1 -1
  177. package/dist/openapi-document/build-openapi-response.mjs +3 -3
  178. package/dist/openapi-document/build-openapi-sse-events.mjs +1 -1
  179. package/dist/openapi-document/component-registry.mjs +1 -1
  180. package/dist/openapi-document/contract-schema-intersection-merge.mjs +1 -1
  181. package/dist/openapi-document/contract-schema-to-openapi.mjs +1 -1
  182. package/dist/openapi-document/index.mjs +12 -12
  183. package/dist/openapi-document/openapi-route-helpers.mjs +1 -1
  184. package/dist/pg-schema-snapshot/build-snapshot.mjs +3 -3
  185. package/dist/pg-schema-snapshot/catalog-objects.mjs +1 -1
  186. package/dist/pg-schema-snapshot/catalog-queries.mjs +4 -4
  187. package/dist/pg-schema-snapshot/catalog-table-constraints.mjs +1 -1
  188. package/dist/pg-schema-snapshot/catalog-table-indexes.mjs +1 -1
  189. package/dist/pg-schema-snapshot/catalog-tables.mjs +1 -1
  190. package/dist/pg-schema-snapshot/generate.mjs +5 -5
  191. package/dist/pg-schema-snapshot/index.mjs +6 -6
  192. package/dist/pg-schema-snapshot/markdown-files.mjs +1 -1
  193. package/dist/pg-schema-snapshot/render-markdown.mjs +1 -1
  194. package/dist/pg-schema-snapshot/table-snapshot-constraints.mjs +1 -1
  195. package/dist/pg-schema-snapshot/table-snapshot.mjs +3 -3
  196. package/dist/pnpm-deploy/index.mjs +3 -3
  197. package/dist/pnpm-deploy/restore.mjs +1 -1
  198. package/dist/pnpm-install/exec.mjs +1 -1
  199. package/dist/pnpm-install/index.mjs +8 -8
  200. package/dist/pnpm-install/install-operations.mjs +6 -6
  201. package/dist/pnpm-install/metadata-legacy.mjs +1 -1
  202. package/dist/pnpm-install/metadata.d.mts +1 -1
  203. package/dist/pnpm-install/metadata.mjs +2 -2
  204. package/dist/pnpm-install/native-health.mjs +2 -2
  205. package/dist/pnpm-install/pnpm-install-fixture.test-helpers.mjs +2 -2
  206. package/dist/pnpm-install/runner.mjs +7 -7
  207. package/dist/post-publication-inventory/index.d.mts +6 -0
  208. package/dist/post-publication-inventory/index.mjs +6 -2
  209. package/dist/post-publication-inventory/readers/compose-appends.d.mts +7 -0
  210. package/dist/post-publication-inventory/readers/compose-appends.mjs +38 -0
  211. package/dist/post-publication-inventory/readers/composes.d.mts +2 -0
  212. package/dist/post-publication-inventory/readers/composes.mjs +79 -0
  213. package/dist/post-publication-inventory/readers/composition.d.mts +2 -0
  214. package/dist/post-publication-inventory/readers/composition.mjs +62 -0
  215. package/dist/post-publication-inventory/readers/public-boundary-ast.d.mts +5 -0
  216. package/dist/post-publication-inventory/readers/public-boundary-ast.mjs +33 -0
  217. package/dist/post-publication-inventory/readers/public-boundary-consumed.d.mts +3 -0
  218. package/dist/post-publication-inventory/readers/public-boundary-consumed.mjs +39 -0
  219. package/dist/post-publication-inventory/readers/public-boundary-dataflow.d.mts +3 -0
  220. package/dist/post-publication-inventory/readers/public-boundary-dataflow.mjs +61 -0
  221. package/dist/post-publication-inventory/readers/public-boundary-then.d.mts +9 -0
  222. package/dist/post-publication-inventory/readers/public-boundary-then.mjs +31 -0
  223. package/dist/post-publication-inventory/readers/public-boundary.d.mts +3 -0
  224. package/dist/post-publication-inventory/readers/public-boundary.mjs +71 -0
  225. package/dist/post-publication-inventory/readers/public-view-ast.d.mts +6 -0
  226. package/dist/post-publication-inventory/readers/public-view-ast.mjs +67 -0
  227. package/dist/post-publication-inventory/readers/public-view-options.d.mts +8 -0
  228. package/dist/post-publication-inventory/readers/public-view-protection.d.mts +2 -0
  229. package/dist/post-publication-inventory/readers/public-view-protection.mjs +83 -0
  230. package/dist/post-publication-inventory/readers/public-view.d.mts +2 -0
  231. package/dist/post-publication-inventory/readers/public-view.mjs +117 -0
  232. package/dist/post-publication-inventory/readers/source-ast.d.mts +30 -0
  233. package/dist/post-publication-inventory/readers/source-ast.mjs +52 -0
  234. package/dist/post-publication-inventory/readers/source-executors.d.mts +4 -0
  235. package/dist/post-publication-inventory/readers/source-executors.mjs +38 -0
  236. package/dist/post-publication-inventory/readers/source-helpers.d.mts +16 -0
  237. package/dist/post-publication-inventory/readers/source-helpers.mjs +72 -0
  238. package/dist/post-publication-inventory/readers/source-options.d.mts +8 -0
  239. package/dist/post-publication-inventory/readers/source-sql.d.mts +3 -0
  240. package/dist/post-publication-inventory/readers/source-sql.mjs +17 -0
  241. package/dist/post-publication-inventory/readers/sql-executors.mjs +2 -2
  242. package/dist/post-publication-inventory/readers/sql-source.mjs +3 -3
  243. package/dist/post-publication-inventory/readers/sql-template.mjs +1 -1
  244. package/dist/post-publication-inventory/writers/source.mjs +1 -1
  245. package/dist/retrospective-facts/coverage.mjs +1 -1
  246. package/dist/retrospective-facts/foreign.mjs +3 -3
  247. package/dist/retrospective-facts/index.mjs +4 -4
  248. package/dist/retrospective-facts/local.mjs +4 -4
  249. package/dist/retrospective-transcript/claude-blocks.mjs +1 -1
  250. package/dist/retrospective-transcript/claude.mjs +2 -2
  251. package/dist/retrospective-transcript/codex-messages.mjs +1 -1
  252. package/dist/retrospective-transcript/codex-payload.mjs +2 -2
  253. package/dist/retrospective-transcript/codex-records.mjs +3 -3
  254. package/dist/retrospective-transcript/codex-segment.mjs +1 -1
  255. package/dist/retrospective-transcript/codex.mjs +2 -2
  256. package/dist/retrospective-transcript/index.mjs +9 -9
  257. package/dist/retrospective-transcript/resolve-transcript-file.mjs +2 -2
  258. package/dist/scc-complexity/baseline.mjs +2 -2
  259. package/dist/scc-complexity/index.mjs +8 -8
  260. package/dist/scc-complexity/parser.mjs +1 -1
  261. package/dist/scc-complexity/scope-config.mjs +1 -1
  262. package/dist/session-friction/audit-block.mjs +1 -1
  263. package/dist/session-friction/ci-failures.mjs +2 -2
  264. package/dist/session-friction/classify.mjs +2 -2
  265. package/dist/session-friction/coverage-ledger.mjs +1 -1
  266. package/dist/session-friction/index.mjs +5 -5
  267. package/dist/session-friction/log-file.mjs +2 -2
  268. package/dist/session-friction/log.mjs +7 -7
  269. package/dist/session-friction/normalize.mjs +1 -1
  270. package/dist/session-friction/report.mjs +5 -5
  271. package/dist/session-friction/sandbox.mjs +1 -1
  272. package/dist/session-friction/session-id.mjs +1 -1
  273. package/dist/shared-context/index.mjs +1 -1
  274. package/dist/skill-discovery/index.mjs +3 -3
  275. package/dist/sql-ast/add-column.mjs +1 -1
  276. package/dist/sql-ast/constraint-do-block.mjs +2 -2
  277. package/dist/sql-ast/constraint-shared.mjs +1 -1
  278. package/dist/sql-ast/constraint.mjs +4 -4
  279. package/dist/sql-ast/create-table.mjs +2 -2
  280. package/dist/sql-ast/drop-index.mjs +2 -2
  281. package/dist/sql-ast/implicit-indexes.mjs +1 -1
  282. package/dist/sql-ast/index-metadata.mjs +3 -3
  283. package/dist/sql-ast/index.mjs +8 -8
  284. package/dist/sql-scanner/comments.mjs +1 -1
  285. package/dist/sql-scanner/index.mjs +3 -3
  286. package/dist/sql-scanner/literals.mjs +1 -1
  287. package/dist/swift-semantic-equal/cli.mjs +1 -1
  288. package/dist/swift-semantic-equal/index.mjs +1 -1
  289. package/dist/transient-retry/index.mjs +2 -2
  290. package/dist/vitest-blob-manifest/cli.mjs +2 -2
  291. package/dist/vitest-blob-manifest/index.mjs +4 -4
  292. package/dist/vitest-blob-manifest/report-attempt-cli.mjs +2 -2
  293. package/dist/vitest-blob-manifest/report-attempt.mjs +1 -1
  294. package/dist/vitest-blob-manifest/reports-cli.mjs +3 -3
  295. package/dist/vitest-blob-manifest/reports-source.mjs +2 -2
  296. package/dist/vitest-blob-manifest/reports.mjs +2 -2
  297. package/dist/vitest-diagnostics/index.mjs +8 -8
  298. package/dist/vitest-diagnostics/vitest-fork-exit-records.mjs +1 -1
  299. package/dist/vitest-diagnostics/vitest-fork-exit-sentinel.mjs +2 -2
  300. package/dist/vitest-diagnostics/vitest-fork-leak-detection.mjs +2 -2
  301. package/dist/vitest-diagnostics/vitest-worker-exit-diagnostics-reporter.mjs +2 -2
  302. package/dist/workflow-policy/condition-entailment.mjs +1 -1
  303. package/dist/workflow-policy/index.mjs +4 -4
  304. package/dist/workflow-policy/permission-inheritance.mjs +1 -1
  305. package/dist/workflow-policy/permission-mismatches.mjs +2 -2
  306. package/dist/workflow-policy/secret-readiness.mjs +2 -2
  307. package/dist/workspace-gates/first-party-graph.mjs +2 -2
  308. package/dist/workspace-gates/index.mjs +1 -1
  309. package/dist/workspace-gates/manifest-version-assertions.mjs +2 -2
  310. package/dist/workspace-gates/manifest-version-parser.mjs +1 -1
  311. package/dist/workspace-gates/options.mjs +1 -1
  312. package/dist/workspace-gates/policy.mjs +7 -7
  313. package/dist/workspace-gates/test-helpers.d.mts +2 -2
  314. package/package.json +3 -6
  315. package/dist/api-contract-discovery/header-contract-parser.d.mts +0 -3
  316. package/dist/api-contract-discovery/header-contract-parser.mjs +0 -93
  317. package/dist/api-contract-discovery/header-contract-registry.d.mts +0 -3
  318. package/dist/api-contract-discovery/header-contract-registry.mjs +0 -40
  319. package/dist/api-contract-discovery/header-contract-types.d.mts +0 -19
  320. package/dist/api-contract-discovery/index.d.mts +0 -34
  321. package/dist/api-contract-discovery/index.mjs +0 -27
  322. package/dist/api-contract-discovery/protocol-analysis-cache.d.mts +0 -21
  323. package/dist/api-contract-discovery/protocol-analysis-cache.mjs +0 -7
  324. package/dist/api-contract-discovery/protocol-body-status.d.mts +0 -2
  325. package/dist/api-contract-discovery/protocol-body-status.mjs +0 -4
  326. package/dist/api-contract-discovery/protocol-callback-argument-bindings.d.mts +0 -7
  327. package/dist/api-contract-discovery/protocol-callback-argument-bindings.mjs +0 -33
  328. package/dist/api-contract-discovery/protocol-callback-invocation.d.mts +0 -6
  329. package/dist/api-contract-discovery/protocol-callback-invocation.mjs +0 -111
  330. package/dist/api-contract-discovery/protocol-callback-mutations.d.mts +0 -5
  331. package/dist/api-contract-discovery/protocol-callback-mutations.mjs +0 -42
  332. package/dist/api-contract-discovery/protocol-callback-registration.d.mts +0 -3
  333. package/dist/api-contract-discovery/protocol-callback-registration.mjs +0 -27
  334. package/dist/api-contract-discovery/protocol-callback-values.d.mts +0 -18
  335. package/dist/api-contract-discovery/protocol-callback-values.mjs +0 -114
  336. package/dist/api-contract-discovery/protocol-context-alias.d.mts +0 -3
  337. package/dist/api-contract-discovery/protocol-context-alias.mjs +0 -20
  338. package/dist/api-contract-discovery/protocol-contract-extraction.d.mts +0 -9
  339. package/dist/api-contract-discovery/protocol-contract-extraction.mjs +0 -87
  340. package/dist/api-contract-discovery/protocol-contract-keys.d.mts +0 -1
  341. package/dist/api-contract-discovery/protocol-contract-keys.mjs +0 -8
  342. package/dist/api-contract-discovery/protocol-contract-registry.d.mts +0 -5
  343. package/dist/api-contract-discovery/protocol-contract-registry.mjs +0 -133
  344. package/dist/api-contract-discovery/protocol-executable-path.d.mts +0 -3
  345. package/dist/api-contract-discovery/protocol-executable-path.mjs +0 -64
  346. package/dist/api-contract-discovery/protocol-execution-path.d.mts +0 -4
  347. package/dist/api-contract-discovery/protocol-execution-path.mjs +0 -16
  348. package/dist/api-contract-discovery/protocol-http-association.d.mts +0 -7
  349. package/dist/api-contract-discovery/protocol-http-association.mjs +0 -108
  350. package/dist/api-contract-discovery/protocol-http-body-kinds.d.mts +0 -3
  351. package/dist/api-contract-discovery/protocol-http-body-kinds.mjs +0 -19
  352. package/dist/api-contract-discovery/protocol-http-context-callers.d.mts +0 -7
  353. package/dist/api-contract-discovery/protocol-http-context-callers.mjs +0 -40
  354. package/dist/api-contract-discovery/protocol-http-context-escapes.d.mts +0 -3
  355. package/dist/api-contract-discovery/protocol-http-context-escapes.mjs +0 -95
  356. package/dist/api-contract-discovery/protocol-http-context.d.mts +0 -8
  357. package/dist/api-contract-discovery/protocol-http-context.mjs +0 -85
  358. package/dist/api-contract-discovery/protocol-http-emission.d.mts +0 -3
  359. package/dist/api-contract-discovery/protocol-http-emission.mjs +0 -76
  360. package/dist/api-contract-discovery/protocol-http-implicit-taint.d.mts +0 -7
  361. package/dist/api-contract-discovery/protocol-http-implicit-taint.mjs +0 -26
  362. package/dist/api-contract-discovery/protocol-http-method-access.d.mts +0 -9
  363. package/dist/api-contract-discovery/protocol-http-method-access.mjs +0 -34
  364. package/dist/api-contract-discovery/protocol-http-method-mutations.d.mts +0 -3
  365. package/dist/api-contract-discovery/protocol-http-method-mutations.mjs +0 -31
  366. package/dist/api-contract-discovery/protocol-http-reflect.d.mts +0 -5
  367. package/dist/api-contract-discovery/protocol-http-reflect.mjs +0 -45
  368. package/dist/api-contract-discovery/protocol-http-registration.d.mts +0 -12
  369. package/dist/api-contract-discovery/protocol-http-registration.mjs +0 -53
  370. package/dist/api-contract-discovery/protocol-http-response-mutations.d.mts +0 -3
  371. package/dist/api-contract-discovery/protocol-http-response-mutations.mjs +0 -31
  372. package/dist/api-contract-discovery/protocol-marker-analysis.d.mts +0 -7
  373. package/dist/api-contract-discovery/protocol-marker-analysis.mjs +0 -50
  374. package/dist/api-contract-discovery/protocol-opaque-callback.d.mts +0 -3
  375. package/dist/api-contract-discovery/protocol-opaque-callback.mjs +0 -107
  376. package/dist/api-contract-discovery/protocol-platform-callbacks.d.mts +0 -7
  377. package/dist/api-contract-discovery/protocol-platform-callbacks.mjs +0 -76
  378. package/dist/api-contract-discovery/protocol-platform-mutation-targets.d.mts +0 -5
  379. package/dist/api-contract-discovery/protocol-platform-mutation-targets.mjs +0 -89
  380. package/dist/api-contract-discovery/protocol-platform-writes.d.mts +0 -3
  381. package/dist/api-contract-discovery/protocol-platform-writes.mjs +0 -92
  382. package/dist/api-contract-discovery/protocol-requested-keys.d.mts +0 -5
  383. package/dist/api-contract-discovery/protocol-requested-keys.mjs +0 -45
  384. package/dist/api-contract-discovery/protocol-sse-callers.d.mts +0 -7
  385. package/dist/api-contract-discovery/protocol-sse-callers.mjs +0 -67
  386. package/dist/api-contract-discovery/protocol-sse-emission.d.mts +0 -11
  387. package/dist/api-contract-discovery/protocol-sse-emission.mjs +0 -61
  388. package/dist/api-contract-discovery/protocol-sse-feasible-status.d.mts +0 -3
  389. package/dist/api-contract-discovery/protocol-sse-feasible-status.mjs +0 -24
  390. package/dist/api-contract-discovery/protocol-sse-raw-writes.d.mts +0 -9
  391. package/dist/api-contract-discovery/protocol-sse-raw-writes.mjs +0 -99
  392. package/dist/api-contract-discovery/protocol-sse-status.d.mts +0 -3
  393. package/dist/api-contract-discovery/protocol-sse-status.mjs +0 -84
  394. package/dist/api-contract-discovery/protocol-sse-write-access.d.mts +0 -9
  395. package/dist/api-contract-discovery/protocol-sse-write-access.mjs +0 -42
  396. package/dist/api-contract-discovery/protocol-sse-write-helpers.d.mts +0 -7
  397. package/dist/api-contract-discovery/protocol-sse-write-helpers.mjs +0 -82
  398. package/dist/api-contract-discovery/protocol-sse-write-mutations.d.mts +0 -9
  399. package/dist/api-contract-discovery/protocol-sse-write-mutations.mjs +0 -42
  400. package/dist/api-contract-discovery/protocol-sse-write-resolution.d.mts +0 -14
  401. package/dist/api-contract-discovery/protocol-sse-write-resolution.mjs +0 -79
  402. package/dist/api-contract-discovery/protocol-status-dominance.d.mts +0 -5
  403. package/dist/api-contract-discovery/protocol-status-dominance.mjs +0 -35
  404. package/dist/api-contract-discovery/protocol-write-receiver.d.mts +0 -9
  405. package/dist/api-contract-discovery/protocol-write-receiver.mjs +0 -79
  406. package/dist/api-contract-discovery/query-contract-extraction.d.mts +0 -3
  407. package/dist/api-contract-discovery/query-contract-extraction.mjs +0 -82
  408. package/dist/api-contract-discovery/query-contract-literals.d.mts +0 -13
  409. package/dist/api-contract-discovery/query-contract-literals.mjs +0 -83
  410. package/dist/api-contract-discovery/query-contract-registry.d.mts +0 -3
  411. package/dist/api-contract-discovery/query-contract-registry.mjs +0 -70
  412. package/dist/api-contract-discovery/query-contract-types.d.mts +0 -8
  413. package/dist/api-contract-discovery/registered-route-binding-writes.d.mts +0 -4
  414. package/dist/api-contract-discovery/registered-route-binding-writes.mjs +0 -47
  415. package/dist/api-contract-discovery/registered-route-catalog.d.mts +0 -10
  416. package/dist/api-contract-discovery/registered-route-catalog.mjs +0 -85
  417. package/dist/api-contract-discovery/registered-route-factory-returns.d.mts +0 -3
  418. package/dist/api-contract-discovery/registered-route-factory-returns.mjs +0 -29
  419. package/dist/api-contract-discovery/registered-route-handler-analysis.d.mts +0 -12
  420. package/dist/api-contract-discovery/registered-route-handler-analysis.mjs +0 -119
  421. package/dist/api-contract-discovery/registered-route-handler-helpers.d.mts +0 -3
  422. package/dist/api-contract-discovery/registered-route-handler-helpers.mjs +0 -16
  423. package/dist/api-contract-discovery/registered-route-runtime-parameters.d.mts +0 -3
  424. package/dist/api-contract-discovery/registered-route-runtime-parameters.mjs +0 -5
  425. package/dist/api-contract-discovery/registered-route-terminal-error.d.mts +0 -3
  426. package/dist/api-contract-discovery/registered-route-terminal-error.mjs +0 -98
  427. package/dist/api-contract-discovery/request-contract-implicit.d.mts +0 -17
  428. package/dist/api-contract-discovery/request-contract-implicit.mjs +0 -73
  429. package/dist/api-contract-discovery/request-contract-lenient.d.mts +0 -28
  430. package/dist/api-contract-discovery/request-contract-lenient.mjs +0 -59
  431. package/dist/api-contract-discovery/request-contract-registry.d.mts +0 -14
  432. package/dist/api-contract-discovery/request-contract-registry.mjs +0 -63
  433. package/dist/api-contract-discovery/request-contract-route-analysis.d.mts +0 -25
  434. package/dist/api-contract-discovery/request-contract-route-analysis.mjs +0 -68
  435. package/dist/api-contract-discovery/request-contract-types.d.mts +0 -12
  436. package/dist/api-contract-discovery/request-contract-types.mjs +0 -1
  437. package/dist/api-contract-discovery/request-validation-callbacks.d.mts +0 -9
  438. package/dist/api-contract-discovery/request-validation-callbacks.mjs +0 -27
  439. package/dist/api-contract-discovery/request-validation-checker.d.mts +0 -7
  440. package/dist/api-contract-discovery/request-validation-checker.mjs +0 -25
  441. package/dist/api-contract-discovery/request-validation-conditional.d.mts +0 -6
  442. package/dist/api-contract-discovery/request-validation-conditional.mjs +0 -31
  443. package/dist/api-contract-discovery/request-validation-factory-calls.d.mts +0 -11
  444. package/dist/api-contract-discovery/request-validation-factory-calls.mjs +0 -23
  445. package/dist/api-contract-discovery/request-validation-facts.d.mts +0 -16
  446. package/dist/api-contract-discovery/request-validation-facts.mjs +0 -64
  447. package/dist/api-contract-discovery/request-validation-follow.d.mts +0 -24
  448. package/dist/api-contract-discovery/request-validation-follow.mjs +0 -38
  449. package/dist/api-contract-discovery/request-validation-handler-state.d.mts +0 -8
  450. package/dist/api-contract-discovery/request-validation-handler-state.mjs +0 -35
  451. package/dist/api-contract-discovery/request-validation-input.d.mts +0 -12
  452. package/dist/api-contract-discovery/request-validation-input.mjs +0 -43
  453. package/dist/api-contract-discovery/request-validation-keys.d.mts +0 -25
  454. package/dist/api-contract-discovery/request-validation-keys.mjs +0 -119
  455. package/dist/api-contract-discovery/request-validation-match.d.mts +0 -11
  456. package/dist/api-contract-discovery/request-validation-match.mjs +0 -47
  457. package/dist/api-contract-discovery/request-validation-mutation.d.mts +0 -7
  458. package/dist/api-contract-discovery/request-validation-mutation.mjs +0 -80
  459. package/dist/api-contract-discovery/request-validation-origin.d.mts +0 -20
  460. package/dist/api-contract-discovery/request-validation-origin.mjs +0 -71
  461. package/dist/api-contract-discovery/request-validation-reads.d.mts +0 -13
  462. package/dist/api-contract-discovery/request-validation-reads.mjs +0 -88
  463. package/dist/api-contract-discovery/request-validation-registration.d.mts +0 -9
  464. package/dist/api-contract-discovery/request-validation-registration.mjs +0 -32
  465. package/dist/api-contract-discovery/request-validation-report.d.mts +0 -3
  466. package/dist/api-contract-discovery/request-validation-report.mjs +0 -21
  467. package/dist/api-contract-discovery/request-validation-request-origin.d.mts +0 -5
  468. package/dist/api-contract-discovery/request-validation-request-origin.mjs +0 -13
  469. package/dist/api-contract-discovery/request-validation-select.d.mts +0 -9
  470. package/dist/api-contract-discovery/request-validation-select.mjs +0 -36
  471. package/dist/api-contract-discovery/request-validation-sites.d.mts +0 -9
  472. package/dist/api-contract-discovery/request-validation-sites.mjs +0 -77
  473. package/dist/api-contract-discovery/request-validation-state-key.d.mts +0 -13
  474. package/dist/api-contract-discovery/request-validation-state-key.mjs +0 -30
  475. package/dist/api-contract-discovery/request-validation-trace-helpers.d.mts +0 -14
  476. package/dist/api-contract-discovery/request-validation-trace-helpers.mjs +0 -80
  477. package/dist/api-contract-discovery/request-validation-trace-select.d.mts +0 -23
  478. package/dist/api-contract-discovery/request-validation-trace-select.mjs +0 -45
  479. package/dist/api-contract-discovery/request-validation-trace.d.mts +0 -8
  480. package/dist/api-contract-discovery/request-validation-trace.mjs +0 -130
  481. package/dist/api-contract-discovery/request-validation-types.d.mts +0 -84
  482. package/dist/api-contract-discovery/request-validation-types.mjs +0 -1
  483. package/dist/api-contract-discovery/request-validation-walker.d.mts +0 -26
  484. package/dist/api-contract-discovery/request-validation-walker.mjs +0 -143
  485. package/dist/api-contract-discovery/request-validation.test-helpers.d.mts +0 -39
  486. package/dist/api-contract-discovery/request-validation.test-helpers.mjs +0 -108
  487. package/dist/api-contract-discovery/response-contract-attribution-facts.d.mts +0 -2
  488. package/dist/api-contract-discovery/response-contract-attribution-facts.mjs +0 -18
  489. package/dist/api-contract-discovery/response-contract-attribution.d.mts +0 -3
  490. package/dist/api-contract-discovery/response-contract-attribution.mjs +0 -23
  491. package/dist/api-contract-discovery/response-contract-call-classification.d.mts +0 -3
  492. package/dist/api-contract-discovery/response-contract-call-classification.mjs +0 -37
  493. package/dist/api-contract-discovery/response-contract-ctx-analysis.d.mts +0 -7
  494. package/dist/api-contract-discovery/response-contract-ctx-analysis.mjs +0 -28
  495. package/dist/api-contract-discovery/response-contract-error-branch.d.mts +0 -15
  496. package/dist/api-contract-discovery/response-contract-error-branch.mjs +0 -150
  497. package/dist/api-contract-discovery/response-contract-handler-bindings.d.mts +0 -3
  498. package/dist/api-contract-discovery/response-contract-handler-bindings.mjs +0 -126
  499. package/dist/api-contract-discovery/response-contract-handler-calls.d.mts +0 -3
  500. package/dist/api-contract-discovery/response-contract-handler-calls.mjs +0 -81
  501. package/dist/api-contract-discovery/response-contract-implicit-sources.test-helpers.d.mts +0 -145
  502. package/dist/api-contract-discovery/response-contract-implicit-sources.test-helpers.mjs +0 -145
  503. package/dist/api-contract-discovery/response-contract-implicit-variants.d.mts +0 -2
  504. package/dist/api-contract-discovery/response-contract-implicit-variants.mjs +0 -6
  505. package/dist/api-contract-discovery/response-contract-implicit.d.mts +0 -6
  506. package/dist/api-contract-discovery/response-contract-implicit.mjs +0 -120
  507. package/dist/api-contract-discovery/response-contract-lenient.d.mts +0 -41
  508. package/dist/api-contract-discovery/response-contract-lenient.mjs +0 -52
  509. package/dist/api-contract-discovery/response-contract-media.d.mts +0 -3
  510. package/dist/api-contract-discovery/response-contract-media.mjs +0 -46
  511. package/dist/api-contract-discovery/response-contract-object-symbols.d.mts +0 -3
  512. package/dist/api-contract-discovery/response-contract-object-symbols.mjs +0 -80
  513. package/dist/api-contract-discovery/response-contract-property-mutations.d.mts +0 -5
  514. package/dist/api-contract-discovery/response-contract-property-mutations.mjs +0 -84
  515. package/dist/api-contract-discovery/response-contract-registration.d.mts +0 -11
  516. package/dist/api-contract-discovery/response-contract-registration.mjs +0 -65
  517. package/dist/api-contract-discovery/response-contract-registry.d.mts +0 -7
  518. package/dist/api-contract-discovery/response-contract-registry.mjs +0 -124
  519. package/dist/api-contract-discovery/response-contract-route-analysis.d.mts +0 -12
  520. package/dist/api-contract-discovery/response-contract-route-analysis.mjs +0 -65
  521. package/dist/api-contract-discovery/response-contract-route-syntax.d.mts +0 -7
  522. package/dist/api-contract-discovery/response-contract-route-syntax.mjs +0 -41
  523. package/dist/api-contract-discovery/response-contract-status.d.mts +0 -27
  524. package/dist/api-contract-discovery/response-contract-status.mjs +0 -82
  525. package/dist/api-contract-discovery/response-contract-symbols.d.mts +0 -5
  526. package/dist/api-contract-discovery/response-contract-symbols.mjs +0 -82
  527. package/dist/api-contract-discovery/response-contract-types.d.mts +0 -23
  528. package/dist/api-contract-discovery/response-contract-types.mjs +0 -1
  529. package/dist/api-contract-discovery/test-setup.test-helpers.d.mts +0 -3
  530. package/dist/api-contract-discovery/test-setup.test-helpers.mjs +0 -2
  531. /package/dist/{api-contract-discovery/header-contract-types.mjs → post-publication-inventory/readers/public-view-options.mjs} +0 -0
  532. /package/dist/{api-contract-discovery/query-contract-types.mjs → post-publication-inventory/readers/source-options.mjs} +0 -0
@@ -1,108 +0,0 @@
1
- import ts from '../contract-schema/typescript-api.mjs';
2
- import { discoverRequestValidationFacts } from './request-validation-facts.mjs';
3
- /** Synthetic library modules shared by the request-validation fixtures. */
4
- export const librarySources = {
5
- 'lib/validation.ts': `
6
- export function validateInput(ctx: any, operation: string, input?: any): boolean {
7
- if (ctx.query.limit && input && operation) ctx.throw(400)
8
- return true
9
- }
10
- export function validatePage(ctx: any, operation: string, options?: any): boolean {
11
- if (ctx.query.limit && operation && options) ctx.throw(400)
12
- return true
13
- }
14
- `,
15
- 'lib/factory.ts': `
16
- import { validateInput } from './validation'
17
- export function createThingHandler(options: any) {
18
- return (ctx: any) => {
19
- if (options.mode) validateInput(ctx, options.operation, { path: ctx.params })
20
- ctx.status = 204
21
- }
22
- }
23
- `,
24
- 'lib/reexport.ts': `export { validateInput as checkInput } from './validation'`,
25
- 'lib/keys.ts': `export const LIST_KEY = 'GET:/api/items'`,
26
- };
27
- export const validators = [
28
- {
29
- module: 'lib/validation.ts',
30
- exportName: 'validateInput',
31
- operationArgument: 1,
32
- carriers: { kind: 'input-object', argument: 2 },
33
- },
34
- {
35
- module: 'lib/validation',
36
- exportName: 'validatePage',
37
- operationArgument: 1,
38
- carriers: {
39
- kind: 'fixed',
40
- carriers: ['query'],
41
- optionCarriers: [{ argument: 2, property: 'path', carrier: 'path' }],
42
- },
43
- },
44
- ];
45
- const factories = [
46
- {
47
- module: 'lib/factory.ts',
48
- exportName: 'createThingHandler',
49
- optionsArgument: 0,
50
- operationProperty: 'operation',
51
- carriers: ['path', 'body'],
52
- },
53
- ];
54
- const ROOT = '/virtual/';
55
- /** Builds a program whose files can import each other, relatively or through `@lib/*`. */
56
- export function buildModuleProgram(files) {
57
- const sources = new Map(Object.entries(files).map(([path, text]) => [
58
- `${ROOT}${path}`,
59
- path.startsWith('global/') ? text : `${text}\nexport {}\n`,
60
- ]));
61
- const options = {
62
- module: ts.ModuleKind.ESNext,
63
- moduleResolution: ts.ModuleResolutionKind.Bundler,
64
- baseUrl: ROOT,
65
- paths: { '@lib/*': ['lib/*'] },
66
- skipLibCheck: true,
67
- strict: true,
68
- target: ts.ScriptTarget.ESNext,
69
- };
70
- const host = ts.createCompilerHost(options, true);
71
- const getSourceFile = host.getSourceFile.bind(host);
72
- host.getSourceFile = (requested, languageVersion, ...rest) => {
73
- const text = sources.get(requested);
74
- return text === undefined
75
- ? getSourceFile(requested, languageVersion, ...rest)
76
- : ts.createSourceFile(requested, text, languageVersion, true, ts.ScriptKind.TS);
77
- };
78
- host.fileExists = (requested) => sources.has(requested) || ts.sys.fileExists(requested);
79
- host.directoryExists = (requested) => [...sources.keys()].some((path) => path.startsWith(`${requested.replace(/\/$/, '')}/`)) ||
80
- !!ts.sys.directoryExists?.(requested);
81
- host.readFile = (requested) => sources.get(requested) ?? ts.sys.readFile(requested);
82
- const program = ts.createProgram([...sources.keys()], options, host);
83
- return {
84
- program,
85
- sourceFile(path) {
86
- const sourceFile = program.getSourceFile(`${ROOT}${path}`);
87
- const diagnostics = [
88
- ...program.getSyntacticDiagnostics(sourceFile),
89
- ...program.getSemanticDiagnostics(sourceFile),
90
- ];
91
- if (diagnostics.length > 0)
92
- throw new Error(diagnostics
93
- .map((item) => ts.flattenDiagnosticMessageText(item.messageText, '\n'))
94
- .join('\n'));
95
- return sourceFile;
96
- },
97
- };
98
- }
99
- /** Runs discovery over the given files with the shared configuration. */
100
- export function discover(built, paths, overrides = {}) {
101
- return discoverRequestValidationFacts({
102
- program: built.program,
103
- sourceFiles: paths.map((path) => built.sourceFile(path)),
104
- validators,
105
- factories,
106
- ...overrides,
107
- });
108
- }
@@ -1,2 +0,0 @@
1
- import type { AmbiguousAttributionFact } from './response-contract-lenient.mts';
2
- export declare function sortAttributionFacts(facts: readonly AmbiguousAttributionFact[]): AmbiguousAttributionFact[];
@@ -1,18 +0,0 @@
1
- export function sortAttributionFacts(facts) {
2
- return [...facts].toSorted((left, right) => {
3
- const first = parseSourceLocation(left.sourceLocation);
4
- const second = parseSourceLocation(right.sourceLocation);
5
- if (first.path !== second.path)
6
- return first.path < second.path ? -1 : 1;
7
- return first.line - second.line || first.column - second.column;
8
- });
9
- }
10
- function parseSourceLocation(location) {
11
- const columnSeparator = location.lastIndexOf(':');
12
- const lineSeparator = location.lastIndexOf(':', columnSeparator - 1);
13
- return {
14
- path: location.slice(0, lineSeparator),
15
- line: Number(location.slice(lineSeparator + 1, columnSeparator)),
16
- column: Number(location.slice(columnSeparator + 1)),
17
- };
18
- }
@@ -1,3 +0,0 @@
1
- import ts from '../contract-schema/typescript-api.mts';
2
- import { type HandlerBindings, type AmbiguousHandlerBindings } from './response-contract-route-analysis.mts';
3
- export declare function ambiguousRoutesForCall(node: ts.Node, checker: ts.TypeChecker, handlerBindings: HandlerBindings, ambiguousBindings: AmbiguousHandlerBindings): readonly string[] | undefined;
@@ -1,23 +0,0 @@
1
- import ts from '../contract-schema/typescript-api.mjs';
2
- import { executableProtocolPath } from './protocol-execution-path.mjs';
3
- import { attributionFunctionSymbol, attributionSymbol } from './response-contract-symbols.mjs';
4
- import { isInlineRouteHandler } from './response-contract-route-syntax.mjs';
5
- import {} from './response-contract-route-analysis.mjs';
6
- export function ambiguousRoutesForCall(node, checker, handlerBindings, ambiguousBindings) {
7
- let current = node;
8
- while (current) {
9
- if (isInlineRouteHandler(current))
10
- return undefined;
11
- const symbol = attributionFunctionSymbol(current, checker);
12
- if (symbol) {
13
- const resolved = attributionSymbol(symbol, checker);
14
- const routes = ambiguousBindings.get(resolved);
15
- if (routes)
16
- return executableProtocolPath(node, checker, current) ? routes : undefined;
17
- if (handlerBindings.has(resolved))
18
- return undefined;
19
- }
20
- current = current.parent;
21
- }
22
- return undefined;
23
- }
@@ -1,3 +0,0 @@
1
- import ts from '../contract-schema/typescript-api.mts';
2
- export type ImplicitResponseCallLabel = 'ctx.json()' | 'ctx.pipeline()' | 'ctx.response.xml()' | 'ctx.response.buffer()' | 'ctx.response.empty()';
3
- export declare function implicitResponseCallLabel(call: ts.CallExpression, excludeDynamicErrorObjects?: boolean, checker?: ts.TypeChecker): ImplicitResponseCallLabel | undefined;
@@ -1,37 +0,0 @@
1
- import ts from '../contract-schema/typescript-api.mjs';
2
- import { isInErrorBranch } from './response-contract-error-branch.mjs';
3
- import { isXmlResponseCall } from './response-contract-media.mjs';
4
- import { containsResponseMarker } from './response-contract-registration.mjs';
5
- import { isContextMethod, isContextResponseBufferCall, isContextResponseEmptyCall, } from './response-contract-route-analysis.mjs';
6
- import { unwrapTransparentExpression } from './response-contract-route-syntax.mjs';
7
- export function implicitResponseCallLabel(call, excludeDynamicErrorObjects = false, checker) {
8
- if (isContextMethod(call.expression, 'json')) {
9
- if (!call.arguments[0] || isInErrorBranch(call, excludeDynamicErrorObjects, checker))
10
- return undefined;
11
- return 'ctx.json()';
12
- }
13
- if (isStreamJsonPipeline(call, excludeDynamicErrorObjects))
14
- return isInErrorBranch(call, excludeDynamicErrorObjects, checker) ? undefined : 'ctx.pipeline()';
15
- if (excludeDynamicErrorObjects && isInErrorBranch(call, true, checker))
16
- return undefined;
17
- if (isXmlResponseCall(call))
18
- return call.arguments[0] ? 'ctx.response.xml()' : undefined;
19
- if (isContextResponseBufferCall(call.expression))
20
- return 'ctx.response.buffer()';
21
- if (isContextResponseEmptyCall(call.expression))
22
- return 'ctx.response.empty()';
23
- if (isContextMethod(call.expression, 'pipeline') && !containsResponseMarker(call))
24
- return 'ctx.pipeline()';
25
- return undefined;
26
- }
27
- function isStreamJsonPipeline(call, unwrapArguments) {
28
- if (!isContextMethod(call.expression, 'pipeline'))
29
- return false;
30
- const originalBody = call.arguments[0];
31
- const pipelineBody = originalBody && (unwrapArguments ? unwrapTransparentExpression(originalBody) : originalBody);
32
- return (!!pipelineBody &&
33
- ts.isCallExpression(pipelineBody) &&
34
- ts.isIdentifier(pipelineBody.expression) &&
35
- pipelineBody.expression.text === 'streamJsonObject' &&
36
- !!pipelineBody.arguments[0]);
37
- }
@@ -1,7 +0,0 @@
1
- import ts from '../contract-schema/typescript-api.mts';
2
- export declare function responseMarker(expression: ts.Expression): 'apiOpenApiRawResponse' | 'apiResponse' | 'apiNoContent' | undefined;
3
- export declare function isContextMethod(expression: ts.Expression, method: string): boolean;
4
- /** Detects the framework's explicit no-body signal independently of the response status. */
5
- export declare function isContextResponseEmptyCall(expression: ts.Expression): boolean;
6
- /** Detects `ctx.response.buffer(...)`: a raw pass-through body whose shape can't be statically extracted. */
7
- export declare function isContextResponseBufferCall(expression: ts.Expression): boolean;
@@ -1,28 +0,0 @@
1
- import ts from '../contract-schema/typescript-api.mjs';
2
- export function responseMarker(expression) {
3
- if (!ts.isIdentifier(expression))
4
- return undefined;
5
- if (expression.text === 'apiOpenApiRawResponse' ||
6
- expression.text === 'apiResponse' ||
7
- expression.text === 'apiNoContent')
8
- return expression.text;
9
- return undefined;
10
- }
11
- export function isContextMethod(expression, method) {
12
- return (ts.isPropertyAccessExpression(expression) &&
13
- ts.isIdentifier(expression.expression) &&
14
- expression.expression.text === 'ctx' &&
15
- expression.name.text === method);
16
- }
17
- /** Detects the framework's explicit no-body signal independently of the response status. */
18
- export function isContextResponseEmptyCall(expression) {
19
- if (!ts.isPropertyAccessExpression(expression) || expression.name.text !== 'empty')
20
- return false;
21
- return isContextMethod(expression.expression, 'response');
22
- }
23
- /** Detects `ctx.response.buffer(...)`: a raw pass-through body whose shape can't be statically extracted. */
24
- export function isContextResponseBufferCall(expression) {
25
- if (!ts.isPropertyAccessExpression(expression) || expression.name.text !== 'buffer')
26
- return false;
27
- return isContextMethod(expression.expression, 'response');
28
- }
@@ -1,15 +0,0 @@
1
- import ts from '../contract-schema/typescript-api.mts';
2
- /**
3
- * Detects a hand-rolled early-return error guard: `ctx.setStatus(NNN >= 400)` followed by a
4
- * response body call in the same block (e.g. `auth-me.mts`'s `ctx.setStatus(401); return
5
- * ctx.json({error})` before its `ctx.json({user})` success body). Skipping these keeps the
6
- * bare implicit key free for the route's actual success body instead of locking onto whichever
7
- * error branch happens to appear first in document order.
8
- *
9
- * Deliberately narrow: only a *direct* sibling `ExpressionStatement` counts, not a nested one
10
- * inside an earlier sibling's own subtree (e.g. inside an earlier, unrelated `if` guard's own
11
- * block). Recursing into nested subtrees would flag a trailing success statement that follows
12
- * two independent, self-contained early-return guards, even though neither guard's error status
13
- * is in effect on the path that reaches the trailing statement.
14
- */
15
- export declare function isInErrorBranch(call: ts.CallExpression, excludeDynamicErrorObjects?: boolean, checker?: ts.TypeChecker): boolean;
@@ -1,150 +0,0 @@
1
- import ts from '../contract-schema/typescript-api.mjs';
2
- import { isContextMethod } from './response-contract-route-analysis.mjs';
3
- import { potentiallyExecuted } from './protocol-executable-path.mjs';
4
- import { unwrapTransparentExpression } from './response-contract-route-syntax.mjs';
5
- import { responseBodyExpression } from './response-contract-registration.mjs';
6
- /**
7
- * Detects a hand-rolled early-return error guard: `ctx.setStatus(NNN >= 400)` followed by a
8
- * response body call in the same block (e.g. `auth-me.mts`'s `ctx.setStatus(401); return
9
- * ctx.json({error})` before its `ctx.json({user})` success body). Skipping these keeps the
10
- * bare implicit key free for the route's actual success body instead of locking onto whichever
11
- * error branch happens to appear first in document order.
12
- *
13
- * Deliberately narrow: only a *direct* sibling `ExpressionStatement` counts, not a nested one
14
- * inside an earlier sibling's own subtree (e.g. inside an earlier, unrelated `if` guard's own
15
- * block). Recursing into nested subtrees would flag a trailing success statement that follows
16
- * two independent, self-contained early-return guards, even though neither guard's error status
17
- * is in effect on the path that reaches the trailing statement.
18
- */
19
- export function isInErrorBranch(call, excludeDynamicErrorObjects = false, checker) {
20
- let statement = call;
21
- while (!ts.isStatement(statement))
22
- statement = statement.parent;
23
- if (!excludeDynamicErrorObjects)
24
- return precededByErrorStatus(statement);
25
- const latestStatus = latestStatusSetter(statement);
26
- if (!latestStatus)
27
- return false;
28
- if (isBareErrorStatusStatement(latestStatus, true))
29
- return true;
30
- return isErrorObjectJson(call, checker) && isDynamicStatusStatement(latestStatus);
31
- }
32
- /**
33
- * Walks outward through enclosing blocks so a `ctx.setStatus(>=400)` set before the branch's own
34
- * containing statement — not just a direct sibling in the same block — still marks the branch as
35
- * an error path. Needed for a shared helper like `data-request.mts`'s `sendActiveRequestConflict`,
36
- * which sets one error status up front, then branches into two differently-shaped `ctx.json`
37
- * bodies nested one block deeper.
38
- */
39
- function precededByErrorStatus(statement) {
40
- return precededByStatus(statement, isBareErrorStatusStatement);
41
- }
42
- function precededByStatus(statement, matches) {
43
- const block = statement.parent;
44
- if (!ts.isBlock(block))
45
- return false;
46
- const index = block.statements.indexOf(statement);
47
- if (block.statements.slice(0, index).some(matches))
48
- return true;
49
- const enclosing = block.parent;
50
- return ts.isStatement(enclosing) ? precededByStatus(enclosing, matches) : false;
51
- }
52
- function latestStatusSetter(statement) {
53
- const block = statement.parent;
54
- if (!ts.isBlock(block))
55
- return undefined;
56
- const index = block.statements.indexOf(statement);
57
- for (let previous = index - 1; previous >= 0; previous--) {
58
- const candidate = block.statements[previous];
59
- if (isStatusSetterStatement(candidate)) {
60
- if (potentiallyExecuted(candidate))
61
- return candidate;
62
- continue;
63
- }
64
- if (mayConditionallySetStatus(candidate))
65
- return undefined;
66
- }
67
- const enclosing = block.parent;
68
- return ts.isStatement(enclosing) ? latestStatusSetter(enclosing) : undefined;
69
- }
70
- function mayConditionallySetStatus(statement) {
71
- if (ts.isFunctionDeclaration(statement) ||
72
- ts.isInterfaceDeclaration(statement) ||
73
- ts.isTypeAliasDeclaration(statement) ||
74
- ts.isImportDeclaration(statement))
75
- return false;
76
- let found = false;
77
- const inspect = (node) => {
78
- if (node !== statement && isNestedFunction(node))
79
- return;
80
- if (ts.isCallExpression(node) &&
81
- isContextMethod(node.expression, 'setStatus') &&
82
- potentiallyExecuted(node))
83
- found = true;
84
- ts.forEachChild(node, inspect);
85
- };
86
- inspect(statement);
87
- return found;
88
- }
89
- function isNestedFunction(node) {
90
- return (ts.isFunctionDeclaration(node) ||
91
- ts.isFunctionExpression(node) ||
92
- ts.isArrowFunction(node) ||
93
- ts.isMethodDeclaration(node) ||
94
- ts.isGetAccessorDeclaration(node) ||
95
- ts.isSetAccessorDeclaration(node) ||
96
- ts.isConstructorDeclaration(node));
97
- }
98
- function isStatusSetterStatement(statement) {
99
- return (ts.isExpressionStatement(statement) &&
100
- ts.isCallExpression(statement.expression) &&
101
- isContextMethod(statement.expression.expression, 'setStatus'));
102
- }
103
- function isDynamicStatusStatement(statement) {
104
- const status = statement.expression.arguments[0];
105
- return !!status && !ts.isNumericLiteral(unwrapTransparentExpression(status));
106
- }
107
- function isErrorObjectJson(call, checker) {
108
- const body = responseBodyExpression(call, true);
109
- const errorObject = body && resolveConstObjectAlias(unwrapTransparentExpression(body), checker);
110
- return (!!errorObject &&
111
- ts.isObjectLiteralExpression(errorObject) &&
112
- errorObject.properties.some((property) => {
113
- if (ts.isSpreadAssignment(property) || ts.isMethodDeclaration(property))
114
- return false;
115
- // Every remaining object-literal member has a name; spread members were excluded above.
116
- const name = property.name;
117
- if (ts.isIdentifier(name) || ts.isStringLiteral(name))
118
- return name.text === 'error';
119
- if (!ts.isComputedPropertyName(name))
120
- return false;
121
- const key = unwrapTransparentExpression(name.expression);
122
- return ts.isStringLiteral(key) && key.text === 'error';
123
- }));
124
- }
125
- function resolveConstObjectAlias(expression, checker, seen = new Set()) {
126
- if (!checker || !ts.isIdentifier(expression))
127
- return expression;
128
- const symbol = checker.getSymbolAtLocation(expression);
129
- if (!symbol || seen.has(symbol))
130
- return expression;
131
- seen.add(symbol);
132
- const declaration = symbol.valueDeclaration;
133
- if (!declaration ||
134
- !ts.isVariableDeclaration(declaration) ||
135
- !declaration.initializer ||
136
- !ts.isVariableDeclarationList(declaration.parent) ||
137
- !(declaration.parent.flags & ts.NodeFlags.Const))
138
- return expression;
139
- return resolveConstObjectAlias(unwrapTransparentExpression(declaration.initializer), checker, seen);
140
- }
141
- function isBareErrorStatusStatement(statement, unwrapStatus = false) {
142
- if (!ts.isExpressionStatement(statement))
143
- return false;
144
- const expression = statement.expression;
145
- if (!ts.isCallExpression(expression) || !isContextMethod(expression.expression, 'setStatus'))
146
- return false;
147
- const statusArgument = expression.arguments[0];
148
- const status = statusArgument && (unwrapStatus ? unwrapTransparentExpression(statusArgument) : statusArgument);
149
- return !!status && ts.isNumericLiteral(status) && Number(status.text) >= 400;
150
- }
@@ -1,3 +0,0 @@
1
- import ts from '../contract-schema/typescript-api.mts';
2
- import type { AmbiguousHandlerBindings, HandlerBindings } from './response-contract-route-analysis.mts';
3
- export declare function collectHandlerBindings(sourceFiles: readonly ts.SourceFile[], checker: ts.TypeChecker, ambiguousBindings?: AmbiguousHandlerBindings): HandlerBindings;
@@ -1,126 +0,0 @@
1
- import ts from '../contract-schema/typescript-api.mjs';
2
- import { executableProtocolPath } from './protocol-execution-path.mjs';
3
- import { potentiallyExecuted } from './protocol-executable-path.mjs';
4
- import { attributionSymbol, resolveSymbol } from './response-contract-symbols.mjs';
5
- import { findMutatedBindings, findMutatedProperties, } from './response-contract-property-mutations.mjs';
6
- import { handlerArgumentSymbols, isMutatedPropertyAccess, } from './response-contract-handler-calls.mjs';
7
- import { HTTP_METHODS, propertyName, routeTemplateFromExpression, unwrapTransparentExpression, visit, } from './response-contract-route-syntax.mjs';
8
- import { destructuredPropertyImplementationSymbol, propertyImplementationSymbol, } from './response-contract-object-symbols.mjs';
9
- export function collectHandlerBindings(sourceFiles, checker, ambiguousBindings) {
10
- const bindingsBySymbol = new Map();
11
- const attributionBindingsBySymbol = new Map();
12
- const mutatedProperties = ambiguousBindings
13
- ? findMutatedProperties(sourceFiles, checker)
14
- : undefined;
15
- const mutatedBindings = ambiguousBindings ? findMutatedBindings(sourceFiles, checker) : undefined;
16
- for (const sourceFile of sourceFiles) {
17
- visit(sourceFile, (node) => {
18
- if (!ts.isCallExpression(node))
19
- return;
20
- const method = propertyName(node.expression)?.toUpperCase();
21
- if (!method || !HTTP_METHODS.has(method))
22
- return;
23
- const routeTemplate = routeTemplateFromExpression(node.expression);
24
- if (!routeTemplate)
25
- return;
26
- const binding = { method, routeTemplate };
27
- for (const symbol of handlerArgumentSymbols(node, checker)) {
28
- const resolved = resolveSymbol(symbol, checker);
29
- const candidates = bindingsBySymbol.get(resolved) ?? [];
30
- candidates.push(binding);
31
- bindingsBySymbol.set(resolved, candidates);
32
- }
33
- if (ambiguousBindings) {
34
- if (!potentiallyExecuted(node))
35
- return;
36
- if (!isExportedRouteBuilder(node) && !executableProtocolPath(node, checker))
37
- return;
38
- for (const symbol of handlerArgumentSymbols(node, checker, true, mutatedProperties)) {
39
- const propertySymbol = attributionSymbol(resolveSymbol(symbol, checker), checker);
40
- if (mutatedProperties?.has(propertySymbol))
41
- continue;
42
- const handlerSymbol = resolveHandlerSymbol(symbol, checker, mutatedProperties);
43
- const resolvedAttributionSymbol = attributionSymbol(handlerSymbol, checker);
44
- if (mutatedProperties?.has(resolvedAttributionSymbol))
45
- continue;
46
- if (mutatedBindings?.has(resolvedAttributionSymbol))
47
- continue;
48
- const attributionCandidates = attributionBindingsBySymbol.get(resolvedAttributionSymbol) ?? [];
49
- attributionCandidates.push(binding);
50
- attributionBindingsBySymbol.set(resolvedAttributionSymbol, attributionCandidates);
51
- }
52
- }
53
- });
54
- }
55
- const bindings = new Map();
56
- for (const [symbol, candidates] of bindingsBySymbol) {
57
- const [first] = candidates;
58
- const unambiguous = candidates.every((candidate) => candidate.method === first.method && candidate.routeTemplate === first.routeTemplate);
59
- if (unambiguous) {
60
- bindings.set(symbol, first);
61
- }
62
- }
63
- if (ambiguousBindings) {
64
- for (const [symbol, candidates] of attributionBindingsBySymbol) {
65
- const [first] = candidates;
66
- const unambiguous = candidates.every((candidate) => candidate.method === first.method && candidate.routeTemplate === first.routeTemplate);
67
- if (!unambiguous) {
68
- ambiguousBindings.set(symbol, [
69
- ...new Set(candidates.map(({ method, routeTemplate }) => `${method}:${routeTemplate}`)),
70
- ].toSorted());
71
- }
72
- }
73
- }
74
- return bindings;
75
- }
76
- function isExportedRouteBuilder(node) {
77
- let current = node.parent;
78
- while (current) {
79
- if (ts.isFunctionLike(current))
80
- return (ts.isFunctionDeclaration(current) &&
81
- !!(ts.getCombinedModifierFlags(current) &
82
- (ts.ModifierFlags.Export | ts.ModifierFlags.Default)));
83
- current = current.parent;
84
- }
85
- return false;
86
- }
87
- function resolveHandlerSymbol(symbol, checker, mutatedProperties) {
88
- const seen = new Set();
89
- let current = resolveSymbol(symbol, checker);
90
- while (!seen.has(current)) {
91
- seen.add(current);
92
- const declaration = current.valueDeclaration;
93
- if (declaration && ts.isBindingElement(declaration)) {
94
- const value = destructuredPropertyImplementationSymbol(declaration, checker);
95
- if (!value)
96
- return current;
97
- current = resolveSymbol(value, checker);
98
- continue;
99
- }
100
- if (declaration && ts.isShorthandPropertyAssignment(declaration)) {
101
- const value = checker.getShorthandAssignmentValueSymbol(declaration);
102
- if (!value)
103
- return current;
104
- current = resolveSymbol(value, checker);
105
- continue;
106
- }
107
- if (!declaration || !ts.isVariableDeclaration(declaration) || !declaration.initializer)
108
- return current;
109
- if (!ts.isVariableDeclarationList(declaration.parent) ||
110
- !(declaration.parent.flags & ts.NodeFlags.Const))
111
- return current;
112
- const initializer = unwrapTransparentExpression(declaration.initializer);
113
- if (ts.isPropertyAccessExpression(initializer) &&
114
- isMutatedPropertyAccess(initializer, checker, mutatedProperties))
115
- return current;
116
- const next = ts.isIdentifier(initializer)
117
- ? checker.getSymbolAtLocation(initializer)
118
- : ts.isPropertyAccessExpression(initializer)
119
- ? propertyImplementationSymbol(initializer, checker)
120
- : undefined;
121
- if (!next)
122
- return current;
123
- current = resolveSymbol(next, checker);
124
- }
125
- return current;
126
- }
@@ -1,3 +0,0 @@
1
- import ts from '../contract-schema/typescript-api.mts';
2
- export declare function handlerArgumentSymbols(node: ts.CallExpression, checker: ts.TypeChecker, unwrapArguments?: boolean, mutatedProperties?: ReadonlySet<ts.Symbol>): ts.Symbol[];
3
- export declare function isMutatedPropertyAccess(expression: ts.Expression, checker: ts.TypeChecker, mutatedProperties: ReadonlySet<ts.Symbol> | undefined): boolean;
@@ -1,81 +0,0 @@
1
- import ts from '../contract-schema/typescript-api.mjs';
2
- import { executableProtocolPath } from './protocol-execution-path.mjs';
3
- import { attributionSymbol, resolveSymbol } from './response-contract-symbols.mjs';
4
- import { propertyImplementationSymbol } from './response-contract-object-symbols.mjs';
5
- import { isInlineRouteHandler, unwrapTransparentExpression, } from './response-contract-route-syntax.mjs';
6
- export function handlerArgumentSymbols(node, checker, unwrapArguments = false, mutatedProperties) {
7
- const symbols = [];
8
- for (const originalArgument of node.arguments) {
9
- const argument = unwrapArguments
10
- ? unwrapTransparentExpression(originalArgument)
11
- : originalArgument;
12
- if (ts.isIdentifier(argument)) {
13
- const symbol = checker.getSymbolAtLocation(argument);
14
- if (symbol)
15
- symbols.push(symbol);
16
- continue;
17
- }
18
- if (unwrapArguments && ts.isPropertyAccessExpression(argument)) {
19
- const mutatedSymbol = mutatedPropertyAccessSymbol(argument, checker, mutatedProperties);
20
- if (mutatedSymbol) {
21
- symbols.push(mutatedSymbol);
22
- continue;
23
- }
24
- const symbol = propertyImplementationSymbol(argument, checker);
25
- if (symbol)
26
- symbols.push(symbol);
27
- continue;
28
- }
29
- if (!isFunctionLike(argument))
30
- continue;
31
- visitHandlerCalls(argument, argument, checker, unwrapArguments, (child) => {
32
- const callee = unwrapArguments
33
- ? unwrapTransparentExpression(child.expression)
34
- : child.expression;
35
- const mutatedSymbol = mutatedPropertyAccessSymbol(callee, checker, mutatedProperties);
36
- if (mutatedSymbol) {
37
- symbols.push(mutatedSymbol);
38
- return;
39
- }
40
- const symbol = handlerSymbol(callee, checker, unwrapArguments);
41
- if (symbol)
42
- symbols.push(symbol);
43
- });
44
- }
45
- return symbols;
46
- }
47
- export function isMutatedPropertyAccess(expression, checker, mutatedProperties) {
48
- return !!mutatedPropertyAccessSymbol(expression, checker, mutatedProperties);
49
- }
50
- function mutatedPropertyAccessSymbol(expression, checker, mutatedProperties) {
51
- if (!mutatedProperties || !ts.isPropertyAccessExpression(expression))
52
- return undefined;
53
- const contextual = checker.getSymbolAtLocation(expression.name);
54
- return contextual &&
55
- mutatedProperties.has(attributionSymbol(resolveSymbol(contextual, checker), checker))
56
- ? contextual
57
- : undefined;
58
- }
59
- function handlerSymbol(expression, checker, resolvePropertyImplementation) {
60
- if (resolvePropertyImplementation && ts.isPropertyAccessExpression(expression))
61
- return propertyImplementationSymbol(expression, checker);
62
- return checker.getSymbolAtLocation(expression);
63
- }
64
- function visitHandlerCalls(node, root, checker, attributeNestedCalls, onCall) {
65
- if (node !== root && isInlineRouteHandler(node))
66
- return;
67
- const callee = ts.isCallExpression(node)
68
- ? attributeNestedCalls
69
- ? unwrapTransparentExpression(node.expression)
70
- : node.expression
71
- : undefined;
72
- if (ts.isCallExpression(node) &&
73
- !!callee &&
74
- (ts.isIdentifier(callee) || (attributeNestedCalls && ts.isPropertyAccessExpression(callee))) &&
75
- executableProtocolPath(node, checker, attributeNestedCalls ? root : undefined))
76
- onCall(node);
77
- ts.forEachChild(node, (child) => visitHandlerCalls(child, root, checker, attributeNestedCalls, onCall));
78
- }
79
- function isFunctionLike(node) {
80
- return ts.isArrowFunction(node) || ts.isFunctionExpression(node);
81
- }