Skip to content

Add explicit schema reference resolution - #10

Merged
ChiragAgg5k merged 4 commits into
mainfrom
feat/resolve-schema-references
Sep 4, 2026
Merged

Add explicit schema reference resolution#10
ChiragAgg5k merged 4 commits into
mainfrom
feat/resolve-schema-references

Conversation

@ChiragAgg5k

Copy link
Copy Markdown
Member

What does this PR do?

Adds Specification::resolveSchema() for consumers that need the concrete type behind a local component schema reference.

The resolver:

  • follows chained OpenAPI 3 #/components/schemas/... references
  • supports Swagger 2 #/definitions/... references
  • detects cycles
  • leaves missing and external references unresolved
  • preserves the parser\u2019s existing behavior of retaining ReferenceSchema objects by default

This lets appwrite/sdk-generator infer transport behavior for referenced binary schemas without maintaining its own reference traversal.

Related to appwrite/sdk-generator#1871 and CLO-4377.

Test plan

  • composer check

@greptile-apps

greptile-apps Bot commented Sep 4, 2026

Copy link
Copy Markdown

Greptile Summary

Adds an explicit schema-reference resolver to the immutable specification model.

  • Resolves chained local OpenAPI 3 component and Swagger 2 definition references.
  • Preserves missing, external, and cyclic references.
  • Handles percent-encoded local schema names without treating encoded external references as local.
  • Documents the new API and adds coverage for resolution behavior.

Confidence Score: 5/5

The PR appears safe to merge; no new actionable issues or outstanding blocking findings remain.

The locality check now occurs before percent-decoding, so encoded external references remain unresolved while encoded local names resolve correctly. The earlier Swagger coverage thread was manually resolved without explanation.

Important Files Changed

Filename Overview
src/Specification.php Adds explicit local schema-reference traversal with locality, missing-target, and cycle guards.
tests/ParserTest.php Covers direct, chained, encoded, missing, external, encoded-external, and cyclic schema references.
README.md Documents explicit schema resolution while clarifying that unresolved references remain preserved.

Reviews (5): Last reviewed commit: "address greptile review feedback (greplo..." | Re-trigger Greptile

Comment thread src/Specification.php Outdated
Comment thread src/Specification.php Outdated
@ChiragAgg5k

Copy link
Copy Markdown
Member Author

@greptile review

Comment thread src/Specification.php
@ChiragAgg5k
ChiragAgg5k merged commit 725109d into main Sep 4, 2026
5 checks passed
@ChiragAgg5k
ChiragAgg5k deleted the feat/resolve-schema-references branch September 4, 2026 16:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant