Files
medusa-store/package.json
Patrick 53532df8d5 feat(OAS): sanitize circular reference for Redocly (#3198)
### What

Add OAS build step to patch known circular references that prevent Redocly from rendering the API documentation.

### Why

We've encountered crashing and loading issues with Redocly when the OAS contained circular references. We have been working around the limitation by omitting some known problematic $ref in our source OAS. We wish to move away from this strategy in order to always explicitly include $ref in our OAS.

### How

We are introducing a custom Redocly CLI plugin that will replace `$ref` by `type: object` base on a configurable set of instructions. These instructions can be modified in `docs-util/redocly/config.yaml`

We are adding a `redocly bundle` step in the current OAS build process in order to sanitize problematic circular references.

We updated the redocly-cli package version in order to ensure that plugins are supported.

### Test

We will use [Cart.payment](fd5c185159/packages/medusa/src/models/cart.ts (L72-L74)) to ensure that the new process is properly sanitizing.

* Run `yarn openapi:generate`
* Open `docs/api/store/components/schemas/Cart.yaml`
  * Expect the `payment` property to have been sanitized to `type: object`
* Run `yarn redocly preview-docs docs/api/store/openapi.yaml --config=docs-util/redocly/config.yaml`
* Visit http://127.0.0.1:8080/#tag/Cart/operation/GetCartsCart
  * In the response, expect cart.payment to not list the properties of the Payment schema.
2023-02-08 13:01:03 +00:00

98 lines
3.9 KiB
JSON

{
"name": "root",
"private": true,
"workspaces": {
"packages": [
"packages/*",
"integration-tests/**/*"
]
},
"devDependencies": {
"@babel/core": "^7.12.7",
"@babel/eslint-parser": "^7.15.8",
"@babel/node": "^7.12.6",
"@babel/plugin-proposal-class-properties": "^7.10.4",
"@babel/plugin-transform-classes": "^7.10.4",
"@babel/plugin-transform-instanceof": "^7.10.4",
"@babel/plugin-transform-runtime": "^7.11.5",
"@babel/preset-env": "^7.11.5",
"@babel/preset-react": "^7.18.6",
"@babel/register": "^7.11.5",
"@babel/runtime": "^7.11.2",
"@redocly/cli": "1.0.0-beta.123",
"@typescript-eslint/eslint-plugin": "^5.36.2",
"@typescript-eslint/parser": "^5.36.2",
"axios": "^0.21.4",
"axios-mock-adapter": "^1.19.0",
"babel-jest": "^26.6.3",
"babel-preset-medusa-package": "^1.0.0",
"cross-env": "^7.0.3",
"eslint": "^8.23.0",
"eslint-config-google": "^0.14.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-markdown": "^3.0.0",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-react": "^7.31.11",
"express": "^4.17.1",
"get-port": "^5.1.1",
"husky": "^7.0.4",
"import-from": "^3.0.0",
"jest": "^26.6.3",
"lint-staged": "^11.2.6",
"microbundle": "^0.13.3",
"pg-god": "^1.0.12",
"prettier": "^2.7.1",
"resolve-cwd": "^3.0.0",
"ts-jest": "^26.5.6",
"ts-node": "^10.9.1",
"turbo": "^1.6.3",
"typedoc": "0.23.10",
"typedoc-frontmatter-plugin": "link:docs-util/typedoc-plugins/typedoc-frontmatter-plugin",
"typedoc-monorepo-link-types": "^0.0.2",
"typedoc-plugin-markdown": "^3.13.4",
"typedoc-plugin-merge-modules": "^4.0.1",
"typedoc-plugin-reference-excluder": "^1.0.0",
"typeorm": "^0.2.31"
},
"lint-staged": {
"*.{js,jsx,ts,tsx}": "yarn run lint",
"*.{md,yaml,yml}": "prettier --write"
},
"scripts": {
"hooks:install": "husky install",
"hooks:uninstall": "husky uninstall",
"build": "turbo run build --no-daemon",
"lint": "eslint --ignore-path .eslintignore --ext .js,.ts,.tsx .",
"lint:docs": "eslint -c docs/.eslintrc.js --ignore-path docs/.eslintignore docs/content",
"prettier": "prettier",
"jest": "jest",
"test": "turbo run test --no-daemon --filter=!integration-tests-api --filter=!integration-tests-plugins --filter=!integration-tests-repositories",
"test:integration": "turbo run test --no-daemon --filter=integration-tests-api --filter=integration-tests-plugins --filter=integration-tests-repositories",
"test:integration:api": "turbo run test --no-daemon --filter=integration-tests-api",
"test:integration:plugins": "turbo run test --no-daemon --filter=integration-tests-plugins",
"test:integration:repositories": "turbo run test --no-daemon --filter=integration-tests-repositories",
"openapi:generate": "node ./scripts/build-openapi.js",
"generate:services": "typedoc --options typedoc.services.js",
"generate:js-client": "typedoc --options typedoc.js-client.js",
"generate:entities": "typedoc --options typedoc.entities.js",
"release:snapshot": "changeset publish --no-git-tags --snapshot --tag snapshot",
"generate:announcement": "node ./scripts/doc-change-release.js",
"develop": "ts-node --transpile-only ./integration-tests/development/server.js",
"develop:create:db": "ts-node --transpile-only ./integration-tests/development/create-database.js",
"release:next": "changeset publish --no-git-tags --snapshot --tag next",
"version:next": "changeset version --snapshot next",
"check:freshness": "node ./scripts/freshness-check.js"
},
"dependencies": {
"@changesets/changelog-github": "^0.4.8",
"@changesets/cli": "^2.26.0",
"@linear/sdk": "^1.22.0",
"@octokit/core": "^4.0.5",
"global": "^4.4.0",
"import-from": "^3.0.0",
"oas-normalize": "^5.0.1",
"swagger-inline": "^3.2.3"
},
"packageManager": "yarn@3.2.1"
}