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

[Enhancement] Add versioning support to OpenAPI docs plugin #125

Merged
merged 20 commits into from
Jun 9, 2022

Conversation

sserrata
Copy link
Member

@sserrata sserrata commented Jun 8, 2022

Description

This PR introduces a set of CLI commands for generating, cleaning, and managing versioned OpenAPI docs.

Motivation and Context

It isn't uncommon for OpenAPI specifications to be versioned along with the APIs they represent. The OpenAPI docs plugin should be capable of supporting this use case since it will be a common one.

How Has This Been Tested?

This PR introduces a versioned Petstore API in the demo, which has also been thoroughly tested locally.

Screenshots (if appropriate)

New CLI commands included below:

$ docusaurus --help
Usage: docusaurus <command> [options]

Options:
  -V, --version                                            output the version number
  -h, --help                                               display help for command

Commands:
  build [options] [siteDir]                                Build website.
  swizzle [options] [themeName] [componentName] [siteDir]  Wraps or ejects the original theme files into website folder
                                                           for customization.
  deploy [options] [siteDir]                               Deploy website to GitHub pages.
  start [options] [siteDir]                                Start the development server.
  serve [options] [siteDir]                                Serve website locally.
  clear [siteDir]                                          Remove build artifacts.
  write-translations [options] [siteDir]                   Extract required translations of your site.
  write-heading-ids [options] [siteDir] [files...]         Generate heading ids in Markdown content.
  docs:version <version>                                   Tag a new docs version
  gen-api-docs <id>                                        Generates OpenAPI docs in MDX file format and sidebar.js (if
                                                           enabled).
  gen-api-docs:version <id:version>                        Generates versioned OpenAPI docs in MDX file format,
                                                           versions.js and sidebar.js (if enabled).
  clean-api-docs <id>                                      Clears the generated OpenAPI docs MDX files and sidebar.js (if
                                                           enabled).
  clean-api-docs:version <id:version>                      Clears the versioned, generated OpenAPI docs MDX files,
                                                           versions.json and sidebar.js (if enabled).

TODO

  • Improve dropdown version selector styling/component
  • Use demo site for documenting the plugin

@sserrata sserrata added the enhancement New feature or request label Jun 8, 2022
@github-actions
Copy link

github-actions bot commented Jun 9, 2022

Size Change: +378 kB (+14%) ⚠️

Total Size: 3.17 MB

Filename Size Change
demo/.docusaurus/globalData.json 20 kB +10.2 kB (+104%) 🆘
demo/build/assets/css/styles.********.css 85.1 kB +1.06 kB (+1%)
demo/build/assets/js/01a85c17.********.js 0 B -3.71 kB (removed) 🏆
demo/build/assets/js/031793e1.********.js 0 B -215 B (removed) 🏆
demo/build/assets/js/05f64ae1.********.js 2.97 kB -2.17 kB (-42%) 🎉
demo/build/assets/js/06e5f0f0.********.js 29.7 kB -7.03 kB (-19%) 👏
demo/build/assets/js/096bfee4.********.js 0 B -260 B (removed) 🏆
demo/build/assets/js/0ccfb8d7.********.js 0 B -449 B (removed) 🏆
demo/build/assets/js/0e384e19.********.js 0 B -5.92 kB (removed) 🏆
demo/build/assets/js/14eb3368.********.js 9.5 kB -86 B (-1%)
demo/build/assets/js/1639936b.********.js 4.35 kB -2.43 kB (-36%) 🎉
demo/build/assets/js/18c41134.********.js 14.5 kB -2.36 kB (-14%) 👏
demo/build/assets/js/1e4232ab.********.js 3.27 kB -2.35 kB (-42%) 🎉
demo/build/assets/js/1f391b9e.********.js 0 B -4.86 kB (removed) 🏆
demo/build/assets/js/1f818248.********.js 12 kB -7.03 kB (-37%) 🎉
demo/build/assets/js/2610c6ee.********.js 18.1 kB -7.03 kB (-28%) 🎉
demo/build/assets/js/2a3d8b7d.********.js 11.8 kB -7.03 kB (-37%) 🎉
demo/build/assets/js/2b60538e.********.js 16 kB -7.03 kB (-31%) 🎉
demo/build/assets/js/2c860537.********.js 7.04 kB -7.03 kB (-50%) 🏆
demo/build/assets/js/2ee3fbbb.********.js 11.2 kB -7.03 kB (-38%) 🎉
demo/build/assets/js/30a24c52.********.js 0 B -208 B (removed) 🏆
demo/build/assets/js/36675a4b.********.js 22.4 kB -7.03 kB (-24%) 🎉
demo/build/assets/js/3818.********.js 0 B -118 kB (removed) 🏆
demo/build/assets/js/393be207.********.js 0 B -3.08 kB (removed) 🏆
demo/build/assets/js/39d00f16.********.js 9.97 kB -2.46 kB (-20%) 🎉
demo/build/assets/js/47abaca6.********.js 3.06 kB -2.17 kB (-41%) 🎉
demo/build/assets/js/4983.********.js 0 B -20 kB (removed) 🏆
demo/build/assets/js/499.********.js 0 B -9.7 kB (removed) 🏆
demo/build/assets/js/4bdd3fbe.********.js 15.5 kB -7.03 kB (-31%) 🎉
demo/build/assets/js/4c9e35b1.********.js 0 B -256 B (removed) 🏆
demo/build/assets/js/533a09ca.********.js 2.61 kB -2.36 kB (-47%) 🎉
demo/build/assets/js/59362658.********.js 0 B -5.14 kB (removed) 🏆
demo/build/assets/js/5c868d36.********.js 3.36 kB -2.35 kB (-41%) 🎉
demo/build/assets/js/5fb917be.********.js 2.62 kB -7.02 kB (-73%) 🏆
demo/build/assets/js/608ae6a4.********.js 0 B -262 B (removed) 🏆
demo/build/assets/js/66406991.********.js 0 B -256 B (removed) 🏆
demo/build/assets/js/6875c492.********.js 0 B -1.56 kB (removed) 🏆
demo/build/assets/js/6b63c616.********.js 20.8 kB -7.03 kB (-25%) 🎉
demo/build/assets/js/73664a40.********.js 0 B -7.18 kB (removed) 🏆
demo/build/assets/js/7633a546.********.js 10.1 kB -7.03 kB (-41%) 🎉
demo/build/assets/js/7661071f.********.js 0 B -5.23 kB (removed) 🏆
demo/build/assets/js/7a6145e6.********.js 0 B -416 B (removed) 🏆
demo/build/assets/js/7a7d82e8.********.js 17.3 kB -7.03 kB (-29%) 🎉
demo/build/assets/js/814f3328.********.js 0 B -392 B (removed) 🏆
demo/build/assets/js/822bd8ab.********.js 2.99 kB -2.36 kB (-44%) 🎉
demo/build/assets/js/838d665e.********.js 0 B -180 B (removed) 🏆
demo/build/assets/js/85ec4403.********.js 4.56 kB -7.03 kB (-61%) 🏆
demo/build/assets/js/8717b14a.********.js 0 B -3.98 kB (removed) 🏆
demo/build/assets/js/8ab9b16e.********.js 9.76 kB -7.03 kB (-42%) 🎉
demo/build/assets/js/8d4e78cd.********.js 2.97 kB -2.17 kB (-42%) 🎉
demo/build/assets/js/925b3f96.********.js 0 B -4.22 kB (removed) 🏆
demo/build/assets/js/93304a97.********.js 4.47 kB -2.45 kB (-35%) 🎉
demo/build/assets/js/935f2afb.********.js 34.8 kB +13.7 kB (+65%) 🆘
demo/build/assets/js/9747.********.js 0 B -1.17 MB (removed) 🏆
demo/build/assets/js/9c58e5d3.********.js 16.6 kB -7.03 kB (-30%) 🎉
demo/build/assets/js/9e4087bc.********.js 0 B -1.7 kB (removed) 🏆
demo/build/assets/js/a6aa9e1f.********.js 0 B -987 B (removed) 🏆
demo/build/assets/js/a6cd895f.********.js 20.6 kB -7.03 kB (-25%) 🎉
demo/build/assets/js/a7023ddc.********.js 0 B -375 B (removed) 🏆
demo/build/assets/js/a80da1cf.********.js 0 B -219 B (removed) 🏆
demo/build/assets/js/b2b675dd.********.js 0 B -245 B (removed) 🏆
demo/build/assets/js/b2f554cd.********.js 0 B -8.79 kB (removed) 🏆
demo/build/assets/js/b802b434.********.js 0 B -411 B (removed) 🏆
demo/build/assets/js/b8b62e90.********.js 19.8 kB -7.03 kB (-26%) 🎉
demo/build/assets/js/bf9a5101.********.js 17.8 kB -7.03 kB (-28%) 🎉
demo/build/assets/js/c2838c41.********.js 17.3 kB -7.03 kB (-29%) 🎉
demo/build/assets/js/c4f5d8e4.********.js 0 B -72.7 kB (removed) 🏆
demo/build/assets/js/c800bce3.********.js 0 B -556 B (removed) 🏆
demo/build/assets/js/c844b82d.********.js 0 B -441 B (removed) 🏆
demo/build/assets/js/ccc49370.********.js 0 B -15 kB (removed) 🏆
demo/build/assets/js/cfd5b083.********.js 0 B -415 B (removed) 🏆
demo/build/assets/js/d69e68dd.********.js 10.5 kB -7.03 kB (-40%) 🎉
demo/build/assets/js/d90c1c35.********.js 11.2 kB -7.03 kB (-39%) 🎉
demo/build/assets/js/d9f32620.********.js 0 B -5.23 kB (removed) 🏆
demo/build/assets/js/dd696920.********.js 16.7 kB -7.03 kB (-30%) 🎉
demo/build/assets/js/dff1c289.********.js 4 kB -2.35 kB (-37%) 🎉
demo/build/assets/js/e16015ca.********.js 0 B -206 B (removed) 🏆
demo/build/assets/js/e273c56f.********.js 0 B -4.22 kB (removed) 🏆
demo/build/assets/js/e44a2883.********.js 5.33 kB -2.35 kB (-31%) 🎉
demo/build/assets/js/e5cbb61f.********.js 0 B -181 B (removed) 🏆
demo/build/assets/js/e5e5340c.********.js 2.55 kB -7.05 kB (-73%) 🏆
demo/build/assets/js/e6f78ab2.********.js 8.86 kB -7.03 kB (-44%) 🎉
demo/build/assets/js/ea88f2a1.********.js 0 B -474 B (removed) 🏆
demo/build/assets/js/eff95040.********.js 20.3 kB -7.03 kB (-26%) 🎉
demo/build/assets/js/f4f34a3a.********.js 0 B -5.14 kB (removed) 🏆
demo/build/assets/js/f55d3e7a.********.js 2.83 kB -2.35 kB (-45%) 🎉
demo/build/assets/js/fdd24af5.********.js 10 kB -7.03 kB (-41%) 🎉
demo/build/assets/js/main.********.js 408 kB +20.6 kB (+5%) 🔍
demo/build/assets/js/runtime~main.********.js 8.91 kB +1.04 kB (+13%) ⚠️
demo/build/index.html 76.7 kB +1.75 kB (+2%)
demo/build/assets/js/06b64fc1.********.js 583 B +583 B (new file) 🆕
demo/build/assets/js/081bfb0d.********.js 9.92 kB +9.92 kB (new file) 🆕
demo/build/assets/js/09e07b87.********.js 3.16 kB +3.16 kB (new file) 🆕
demo/build/assets/js/112df51d.********.js 20.4 kB +20.4 kB (new file) 🆕
demo/build/assets/js/16577668.********.js 395 B +395 B (new file) 🆕
demo/build/assets/js/1676ff52.********.js 10.3 kB +10.3 kB (new file) 🆕
demo/build/assets/js/16ed3e0d.********.js 19.9 kB +19.9 kB (new file) 🆕
demo/build/assets/js/1e71f858.********.js 17.4 kB +17.4 kB (new file) 🆕
demo/build/assets/js/1f3711ab.********.js 17.9 kB +17.9 kB (new file) 🆕
demo/build/assets/js/21b83554.********.js 10.2 kB +10.2 kB (new file) 🆕
demo/build/assets/js/25b7fcf3.********.js 16.2 kB +16.2 kB (new file) 🆕
demo/build/assets/js/2da0bfe8.********.js 17.9 kB +17.9 kB (new file) 🆕
demo/build/assets/js/326c3861.********.js 10.1 kB +10.1 kB (new file) 🆕
demo/build/assets/js/374f9103.********.js 15.6 kB +15.6 kB (new file) 🆕
demo/build/assets/js/4109.********.js 1.19 MB +1.19 MB (new file) 🆕
demo/build/assets/js/4851c287.********.js 11.3 kB +11.3 kB (new file) 🆕
demo/build/assets/js/4964e910.********.js 16.8 kB +16.8 kB (new file) 🆕
demo/build/assets/js/49d625b5.********.js 17.5 kB +17.5 kB (new file) 🆕
demo/build/assets/js/52efb675.********.js 10.2 kB +10.2 kB (new file) 🆕
demo/build/assets/js/55b55784.********.js 8.9 kB +8.9 kB (new file) 🆕
demo/build/assets/js/56717cba.********.js 3.12 kB +3.12 kB (new file) 🆕
demo/build/assets/js/58ff8b1e.********.js 20.7 kB +20.7 kB (new file) 🆕
demo/build/assets/js/6102b0bc.********.js 22.5 kB +22.5 kB (new file) 🆕
demo/build/assets/js/64ad353b.********.js 20.9 kB +20.9 kB (new file) 🆕
demo/build/assets/js/6dbe9da1.********.js 19.8 kB +19.8 kB (new file) 🆕
demo/build/assets/js/6eec44b8.********.js 8.96 kB +8.96 kB (new file) 🆕
demo/build/assets/js/71f1585f.********.js 11.3 kB +11.3 kB (new file) 🆕
demo/build/assets/js/7933a256.********.js 20.3 kB +20.3 kB (new file) 🆕
demo/build/assets/js/835a9617.********.js 11.3 kB +11.3 kB (new file) 🆕
demo/build/assets/js/840731c0.********.js 10.6 kB +10.6 kB (new file) 🆕
demo/build/assets/js/8463bcfe.********.js 16.1 kB +16.1 kB (new file) 🆕
demo/build/assets/js/85d3c400.********.js 3.06 kB +3.06 kB (new file) 🆕
demo/build/assets/js/86c346b0.********.js 546 B +546 B (new file) 🆕
demo/build/assets/js/881db345.********.js 402 B +402 B (new file) 🆕
demo/build/assets/js/892ce721.********.js 20.9 kB +20.9 kB (new file) 🆕
demo/build/assets/js/8f441c78.********.js 10.1 kB +10.1 kB (new file) 🆕
demo/build/assets/js/935b44fb.********.js 18.2 kB +18.2 kB (new file) 🆕
demo/build/assets/js/97810f3c.********.js 16.8 kB +16.8 kB (new file) 🆕
demo/build/assets/js/9e2a7edc.********.js 22.6 kB +22.6 kB (new file) 🆕
demo/build/assets/js/a5491aaa.********.js 400 B +400 B (new file) 🆕
demo/build/assets/js/a6f84189.********.js 11.8 kB +11.8 kB (new file) 🆕
demo/build/assets/js/a728d93a.********.js 9.85 kB +9.85 kB (new file) 🆕
demo/build/assets/js/ab09fd5c.********.js 20.7 kB +20.7 kB (new file) 🆕
demo/build/assets/js/bceea4ca.********.js 10.1 kB +10.1 kB (new file) 🆕
demo/build/assets/js/bead4b8e.********.js 3.21 kB +3.21 kB (new file) 🆕
demo/build/assets/js/bf271e74.********.js 401 B +401 B (new file) 🆕
demo/build/assets/js/c2b8341d.********.js 17.4 kB +17.4 kB (new file) 🆕
demo/build/assets/js/c5c41c27.********.js 17.4 kB +17.4 kB (new file) 🆕
demo/build/assets/js/c7ded1cb.********.js 3.12 kB +3.12 kB (new file) 🆕
demo/build/assets/js/common.********.js 125 kB +125 kB (new file) 🆕
demo/build/assets/js/d63c7029.********.js 3.07 kB +3.07 kB (new file) 🆕
demo/build/assets/js/dbf42779.********.js 18.3 kB +18.3 kB (new file) 🆕
demo/build/assets/js/e165a18a.********.js 11.3 kB +11.3 kB (new file) 🆕
demo/build/assets/js/e2ce9793.********.js 434 B +434 B (new file) 🆕
demo/build/assets/js/e53a20a4.********.js 11.9 kB +11.9 kB (new file) 🆕
demo/build/assets/js/e65a1271.********.js 15.5 kB +15.5 kB (new file) 🆕
demo/build/assets/js/e8b309fb.********.js 585 B +585 B (new file) 🆕
demo/build/assets/js/f30e634b.********.js 16.8 kB +16.8 kB (new file) 🆕
demo/build/assets/js/f8409a7e.********.js 30.1 kB +30.1 kB (new file) 🆕
demo/build/assets/js/fcb807fc.********.js 10.6 kB +10.6 kB (new file) 🆕
demo/build/assets/js/ffc99614.********.js 16.7 kB +16.7 kB (new file) 🆕
ℹ️ View Unchanged
Filename Size Change
demo/build/assets/js/1be78505.********.js 11.4 kB 0 B
demo/build/assets/js/4c5e977b.********.js 31.5 kB -1 B (0%)
demo/build/assets/js/8287.********.js 1.09 kB 0 B
demo/build/assets/js/ecc39b49.********.js 180 B 0 B

compressed-size-action

@sserrata sserrata requested a review from csestito June 9, 2022 00:03
@github-actions
Copy link

github-actions bot commented Jun 9, 2022

Visit the preview URL for this PR (updated for commit 4ca8e10):

https://docusaurus-openapi-36b86--pr125-p3ineo8j.web.app

(expires Sat, 09 Jul 2022 18:53:42 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

@sserrata sserrata removed the request for review from csestito June 9, 2022 17:38
@sserrata sserrata merged commit 19c9f7c into main Jun 9, 2022
@sserrata sserrata deleted the add-versioning branch June 9, 2022 22:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants