Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Avoid falling back to MOD label when rendering oneOf/anyOf and title not defined #455

Merged
merged 5 commits into from
Feb 24, 2023

Conversation

sserrata
Copy link
Member

@sserrata sserrata commented Feb 24, 2023

Description

The schemas defined under the components section, when combined with polymorphism, are often rendered with a menu that allows the user to select which schema they want to see. In those cases, the label for each option can either be the schema title attribute of the schema key itself.

Previously, the docusaurus-openapi-docs plugin did not begin parsing the spec until after all $ref pointers were fully resolved, which left the component schema key unavailable when rendering anyOf or oneOf. In these cases, the default behavior of the plugin was to assigned generated labels following a pattern of MOD1, MOD2, MOD3, etc.

This PR introduces a preprocessing step to loadAndResolveSpec.ts that injects the title attribute if one does not already exist.

Note: if title is already defined the operation is skipped

Motivation and Context

Old behavior:

Screenshot 2023-02-24 at 8 51 43 AM

New behavior:

Screenshot 2023-02-24 at 8 52 20 AM

How Has This Been Tested?

Tested with Cloud Accounts OpenAPI spec and Petstore API.

  • Bug fix (non-breaking change which fixes an issue)

@sserrata sserrata added the bug Something isn't working label Feb 24, 2023
@github-actions
Copy link

github-actions bot commented Feb 24, 2023

Size Change: +10.4 kB (0%)

Total Size: 6.26 MB

Filename Size Change
demo/build/assets/js/06e5f0f0.********.js 27.4 kB +68 B (0%)
demo/build/assets/js/0d832478.********.js 28.7 kB +190 B (+1%)
demo/build/assets/js/12693653.********.js 28.2 kB +190 B (+1%)
demo/build/assets/js/1a8cc2a6.********.js 13.2 kB +40 B (0%)
demo/build/assets/js/1e6c5cae.********.js 38 kB +306 B (+1%)
demo/build/assets/js/1f818248.********.js 12.2 kB +34 B (0%)
demo/build/assets/js/2bb7a9e5.********.js 21.5 kB +120 B (+1%)
demo/build/assets/js/3946f914.********.js 36.7 kB +452 B (+1%)
demo/build/assets/js/3e0d14e9.********.js 25.1 kB +190 B (+1%)
demo/build/assets/js/40a238b6.********.js 28.2 kB +190 B (+1%)
demo/build/assets/js/466ac800.********.js 46.3 kB +680 B (+1%)
demo/build/assets/js/4964e910.********.js 26.3 kB +285 B (+1%)
demo/build/assets/js/49bd3d39.********.js 17.9 kB +188 B (+1%)
demo/build/assets/js/66c76a57.********.js 38.2 kB +306 B (+1%)
demo/build/assets/js/68b61ac5.********.js 47.6 kB +490 B (+1%)
demo/build/assets/js/69a61f78.********.js 27 kB +285 B (+1%)
demo/build/assets/js/73b594ee.********.js 37.9 kB +306 B (+1%)
demo/build/assets/js/77264a1a.********.js 36.6 kB +452 B (+1%)
demo/build/assets/js/785615ec.********.js 21.4 kB +120 B (+1%)
demo/build/assets/js/7ca3ae45.********.js 19 kB +188 B (+1%)
demo/build/assets/js/7ed7dafe.********.js 28.6 kB +190 B (+1%)
demo/build/assets/js/86c45737.********.js 27.6 kB +120 B (0%)
demo/build/assets/js/8961c7a6.********.js 26.8 kB +120 B (0%)
demo/build/assets/js/91696e06.********.js 38.2 kB +306 B (+1%)
demo/build/assets/js/94589c06.********.js 22.2 kB +260 B (+1%)
demo/build/assets/js/97810f3c.********.js 27.5 kB +190 B (+1%)
demo/build/assets/js/9b5caaf3.********.js 28.1 kB +190 B (+1%)
demo/build/assets/js/9c42c0f3.********.js 36.8 kB +306 B (+1%)
demo/build/assets/js/aa2f1ec7.********.js 25.8 kB +190 B (+1%)
demo/build/assets/js/ab6072f2.********.js 27 kB +285 B (+1%)
demo/build/assets/js/ae7f40a3.********.js 47.6 kB +490 B (+1%)
demo/build/assets/js/b4ebd305.********.js 19 kB +188 B (+1%)
demo/build/assets/js/b5c059ef.********.js 36.8 kB +306 B (+1%)
demo/build/assets/js/c65697f5.********.js 27.5 kB +285 B (+1%)
demo/build/assets/js/cf07762b.********.js 27.6 kB +120 B (0%)
demo/build/assets/js/dd696920.********.js 27.5 kB +190 B (+1%)
demo/build/assets/js/e015ccf9.********.js 28.1 kB +190 B (+1%)
demo/build/assets/js/eae14b71.********.js 35.5 kB +452 B (+1%)
demo/build/assets/js/eaf4471e.********.js 13.1 kB +40 B (0%)
demo/build/assets/js/f212caf7.********.js 26.7 kB +120 B (0%)
demo/build/assets/js/f4486b6b.********.js 12.1 kB +40 B (0%)
demo/build/assets/js/f84e10c2.********.js 20.3 kB +260 B (+1%)
demo/build/assets/js/fcd67c8d.********.js 20.3 kB +193 B (+1%)
demo/build/assets/js/fe97f0d1.********.js 22.2 kB +260 B (+1%)
ℹ️ View Unchanged
Filename Size
demo/.docusaurus/globalData.json 19.2 kB
demo/build/assets/css/styles.********.css 109 kB
demo/build/assets/js/006e727e.********.js 15.3 kB
demo/build/assets/js/05f64ae1.********.js 2.81 kB
demo/build/assets/js/06b64fc1.********.js 575 B
demo/build/assets/js/081bfb0d.********.js 10.1 kB
demo/build/assets/js/09e07b87.********.js 2.97 kB
demo/build/assets/js/14eb3368.********.js 9.26 kB
demo/build/assets/js/1639936b.********.js 5.29 kB
demo/build/assets/js/16577668.********.js 387 B
demo/build/assets/js/177e86db.********.js 11.9 kB
demo/build/assets/js/19d75775.********.js 9.87 kB
demo/build/assets/js/1a4e3797.********.js 77.6 kB
demo/build/assets/js/1be78505.********.js 10.6 kB
demo/build/assets/js/1c54f54e.********.js 10.9 kB
demo/build/assets/js/1e6ff21d.********.js 12 kB
demo/build/assets/js/2c860537.********.js 7.33 kB
demo/build/assets/js/3136173c.********.js 361 B
demo/build/assets/js/326c3861.********.js 11.2 kB
demo/build/assets/js/3720c009.********.js 1.44 kB
demo/build/assets/js/3893.********.js 1.07 kB
demo/build/assets/js/39d00f16.********.js 13.3 kB
demo/build/assets/js/41cd56a1.********.js 11.3 kB
demo/build/assets/js/423cd203.********.js 14.3 kB
demo/build/assets/js/4261.********.js 463 B
demo/build/assets/js/4670.********.js 104 B
demo/build/assets/js/46afcded.********.js 8.21 kB
demo/build/assets/js/46e5c6ac.********.js 6.86 kB
demo/build/assets/js/47abaca6.********.js 2.88 kB
demo/build/assets/js/4935.********.js 1.05 kB
demo/build/assets/js/4b891ed6.********.js 12.5 kB
demo/build/assets/js/4b901b1a.********.js 350 B
demo/build/assets/js/4c5e977b.********.js 43.1 kB
demo/build/assets/js/55960ee5.********.js 383 B
demo/build/assets/js/55a6d13f.********.js 15.3 kB
demo/build/assets/js/56717cba.********.js 2.97 kB
demo/build/assets/js/57f1a671.********.js 12.5 kB
demo/build/assets/js/58ff8b1e.********.js 20.9 kB
demo/build/assets/js/597ddc40.********.js 10.6 kB
demo/build/assets/js/5fb917be.********.js 2.56 kB
demo/build/assets/js/63fc267d.********.js 11.4 kB
demo/build/assets/js/6842.********.js 3.2 MB
demo/build/assets/js/6a105426.********.js 354 B
demo/build/assets/js/8003.********.js 5.45 kB
demo/build/assets/js/85d3c400.********.js 2.9 kB
demo/build/assets/js/85ec4403.********.js 4.67 kB
demo/build/assets/js/86b273b1.********.js 11.7 kB
demo/build/assets/js/86c346b0.********.js 538 B
demo/build/assets/js/8777.********.js 76.5 kB
demo/build/assets/js/881db345.********.js 394 B
demo/build/assets/js/8ab9b16e.********.js 11.1 kB
demo/build/assets/js/8d4e78cd.********.js 2.83 kB
demo/build/assets/js/8f36b2a3.********.js 172 B
demo/build/assets/js/8f441c78.********.js 13.2 kB
demo/build/assets/js/9127.********.js 104 B
demo/build/assets/js/93304a97.********.js 5.41 kB
demo/build/assets/js/935f2afb.********.js 34.1 kB
demo/build/assets/js/967247e2.********.js 11.8 kB
demo/build/assets/js/a40c6d71.********.js 8.77 kB
demo/build/assets/js/a476e24e.********.js 344 B
demo/build/assets/js/a5491aaa.********.js 400 B
demo/build/assets/js/a6cd895f.********.js 21.9 kB
demo/build/assets/js/a728d93a.********.js 11.1 kB
demo/build/assets/js/ab09fd5c.********.js 21.9 kB
demo/build/assets/js/b89b49f4.********.js 6.1 kB
demo/build/assets/js/bead4b8e.********.js 3.02 kB
demo/build/assets/js/bf271e74.********.js 401 B
demo/build/assets/js/c5644638.********.js 337 B
demo/build/assets/js/c7a5be9f.********.js 11.3 kB
demo/build/assets/js/c7ded1cb.********.js 2.95 kB
demo/build/assets/js/cef3f2e2.********.js 5.8 kB
demo/build/assets/js/common.********.js 389 kB
demo/build/assets/js/d63c7029.********.js 2.92 kB
demo/build/assets/js/df203c0f.********.js 1.8 kB
demo/build/assets/js/e01f8d18.********.js 9.84 kB
demo/build/assets/js/e2ce9793.********.js 397 B
demo/build/assets/js/e5e5340c.********.js 2.48 kB
demo/build/assets/js/e8b309fb.********.js 577 B
demo/build/assets/js/ecc39b49.********.js 172 B
demo/build/assets/js/ee308fa3.********.js 10.3 kB
demo/build/assets/js/f65290a6.********.js 11.6 kB
demo/build/assets/js/f8409a7e.********.js 34.5 kB
demo/build/assets/js/main.********.js 473 kB
demo/build/assets/js/runtime~main.********.js 9.15 kB
demo/build/index.html 89.8 kB

compressed-size-action

@github-actions
Copy link

github-actions bot commented Feb 24, 2023

Visit the preview URL for this PR (updated for commit 2d81638):

https://docusaurus-openapi-36b86--pr455-nx1afpg4.web.app

(expires Sun, 26 Mar 2023 14:16:54 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

@sserrata
Copy link
Member Author

After removing title attributes from petstore.yaml:

Screenshot 2023-02-24 at 9 20 31 AM

@sserrata sserrata merged commit 31d36c1 into main Feb 24, 2023
@sserrata sserrata deleted the component-keys branch February 24, 2023 16:34
sserrata added a commit that referenced this pull request Feb 27, 2023
…not defined (#455)

* Add preprocessing step to inject title attribute to component schema if none exists

* Add CloudAccounts for testing

* Remove CloudAccounts from demo

* Remove title attribute from components schemas

* Revert back to petstore
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants