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.
This commit is contained in:
5
.changeset/chilly-cars-itch.md
Normal file
5
.changeset/chilly-cars-itch.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@medusajs/medusa": patch
|
||||
---
|
||||
|
||||
feat(OAS): sanitize circular reference for Redocly
|
||||
97
docs-util/redocly/config.yaml
Normal file
97
docs-util/redocly/config.yaml
Normal file
@@ -0,0 +1,97 @@
|
||||
plugins:
|
||||
- "./plugins/plugin.js"
|
||||
|
||||
# Allows to replace a $ref with `type: object` in order to avoid infinite loops
|
||||
# when Redocly attempts to render circular references.
|
||||
decorators:
|
||||
plugin/circular-patch:
|
||||
verbose: true
|
||||
schemas:
|
||||
Address:
|
||||
- Customer
|
||||
Cart:
|
||||
- Customer
|
||||
- Order
|
||||
- Payment
|
||||
ClaimItem:
|
||||
- ClaimOrder
|
||||
ClaimOrder:
|
||||
- Fulfillment
|
||||
- Order
|
||||
- Return
|
||||
Customer:
|
||||
- Order
|
||||
DraftOrder:
|
||||
- Cart
|
||||
- Order
|
||||
Fulfillment:
|
||||
- ClaimOrder
|
||||
- Order
|
||||
- Swap
|
||||
GiftCard:
|
||||
- Order
|
||||
GiftCardTransaction:
|
||||
- GiftCard
|
||||
- Order
|
||||
LineItem:
|
||||
- Cart
|
||||
- ClaimOrder
|
||||
- Order
|
||||
- OrderEdit
|
||||
- Swap
|
||||
Order:
|
||||
- Cart
|
||||
- ClaimOrder
|
||||
- Customer
|
||||
- DraftOrder
|
||||
- Fulfillment
|
||||
- OrderEdit
|
||||
- Payment
|
||||
- Refund
|
||||
- Return
|
||||
- Swap
|
||||
OrderEdit:
|
||||
- Order
|
||||
Payment:
|
||||
- Cart
|
||||
- Order
|
||||
- Swap
|
||||
Refund:
|
||||
- Order
|
||||
- Payment
|
||||
Return:
|
||||
- ClaimOrder
|
||||
- Order
|
||||
- Swap
|
||||
ShippingMethod:
|
||||
- Cart
|
||||
- ClaimOrder
|
||||
- Order
|
||||
- Payment
|
||||
- Return
|
||||
- Swap
|
||||
Swap:
|
||||
- Cart
|
||||
- Fulfillment
|
||||
- Order
|
||||
- Payment
|
||||
- Return
|
||||
|
||||
# Similar config to /www/docs/docusaurus.config.js > redocusaurus
|
||||
# Allows to emulate rendering of API public documentation when using `yarn redocly preview-docs openapi.yaml`
|
||||
theme.openapi:
|
||||
theme:
|
||||
colors:
|
||||
primary:
|
||||
dart: "#242526"
|
||||
sidebar:
|
||||
width: "250px"
|
||||
disableSearch: true
|
||||
expandResponses: "200,204"
|
||||
generatedPayloadSamplesMaxDepth: 4
|
||||
hideDownloadButton: true
|
||||
hideRequestPayloadSample: true
|
||||
nativeScrollbars: true
|
||||
requiredPropsFirst: true
|
||||
showObjectSchemaExamples: true
|
||||
sortTagsAlphabetically: true
|
||||
87
docs-util/redocly/plugins/decorators/circular-patch.js
Normal file
87
docs-util/redocly/plugins/decorators/circular-patch.js
Normal file
@@ -0,0 +1,87 @@
|
||||
module.exports = CircularPatch
|
||||
|
||||
/**
|
||||
* Since ref() is triggered upon reaching a $ref OAS line (leaf),
|
||||
* we want to inverse `schemas` instructions in order to optimize iterators.
|
||||
*/
|
||||
function preparePatches(schemas) {
|
||||
const patches = []
|
||||
const patchesObj = {}
|
||||
for (const schemaToPatch in schemas) {
|
||||
for (const schemaName of schemas[schemaToPatch]) {
|
||||
if (!patchesObj[schemaName]) {
|
||||
patchesObj[schemaName] = {
|
||||
schemaName,
|
||||
schemaPointer: `#/components/schemas/${schemaName}`,
|
||||
schemaToPatchPointers: [],
|
||||
}
|
||||
}
|
||||
const schemaToPatchPointer = `#/components/schemas/${schemaToPatch}`
|
||||
if (
|
||||
!patchesObj[schemaName].schemaToPatchPointers.includes(
|
||||
schemaToPatchPointer
|
||||
)
|
||||
) {
|
||||
patchesObj[schemaName].schemaToPatchPointers.push(schemaToPatchPointer)
|
||||
}
|
||||
}
|
||||
}
|
||||
for (const key in patchesObj) {
|
||||
patches.push(patchesObj[key])
|
||||
}
|
||||
return patches
|
||||
}
|
||||
|
||||
function applyPatch(node, schemaName) {
|
||||
delete node["$ref"]
|
||||
node.type = "object"
|
||||
if (!node.description && schemaName) {
|
||||
node.description = `${schemaName} object.`
|
||||
}
|
||||
}
|
||||
|
||||
function CircularPatch({ schemas = {}, verbose = false }) {
|
||||
const logs = []
|
||||
const patches = preparePatches(schemas)
|
||||
const refPathPrefix = "#/components/schemas/"
|
||||
const refPathPrefixLength = refPathPrefix.length
|
||||
const refPathPrefixRegex = /#\/components\/schemas\/\w+/
|
||||
return {
|
||||
ref(ref, ctx, resolved) {
|
||||
if (
|
||||
ctx.type.name.toLowerCase() !== "schema" ||
|
||||
!resolved?.location?.pointer
|
||||
) {
|
||||
return
|
||||
}
|
||||
for (const patch of patches) {
|
||||
if (resolved.location.pointer !== patch.schemaPointer) {
|
||||
continue
|
||||
}
|
||||
const ctxSchemaPointer =
|
||||
ctx.location.pointer.match(refPathPrefixRegex)[0]
|
||||
if (!patch.schemaToPatchPointers.includes(ctxSchemaPointer)) {
|
||||
continue
|
||||
}
|
||||
applyPatch(ref)
|
||||
if (verbose) {
|
||||
logs.push(
|
||||
`${ctxSchemaPointer.substring(refPathPrefixLength)} patch $ref to ${
|
||||
patch.schemaName
|
||||
}`
|
||||
)
|
||||
}
|
||||
}
|
||||
},
|
||||
Root: {
|
||||
leave() {
|
||||
if (verbose) {
|
||||
logs.sort()
|
||||
for (const log of logs) {
|
||||
console.debug(log)
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
14
docs-util/redocly/plugins/plugin.js
Normal file
14
docs-util/redocly/plugins/plugin.js
Normal file
@@ -0,0 +1,14 @@
|
||||
const CircularPatch = require("./decorators/circular-patch")
|
||||
|
||||
const id = "plugin"
|
||||
|
||||
const decorators = {
|
||||
oas3: {
|
||||
"circular-patch": CircularPatch,
|
||||
},
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
id,
|
||||
decorators,
|
||||
}
|
||||
@@ -19,7 +19,7 @@
|
||||
"@babel/preset-react": "^7.18.6",
|
||||
"@babel/register": "^7.11.5",
|
||||
"@babel/runtime": "^7.11.2",
|
||||
"@redocly/cli": "latest",
|
||||
"@redocly/cli": "1.0.0-beta.123",
|
||||
"@typescript-eslint/eslint-plugin": "^5.36.2",
|
||||
"@typescript-eslint/parser": "^5.36.2",
|
||||
"axios": "^0.21.4",
|
||||
|
||||
@@ -56,7 +56,11 @@ swaggerInline(
|
||||
if (!isDryRun) {
|
||||
fs.writeFileSync("./docs/api/store-spec3.yaml", gen)
|
||||
exec(
|
||||
"rm -rf docs/api/store/ && yarn run -- redocly split docs/api/store-spec3.yaml --outDir=docs/api/store/",
|
||||
[
|
||||
"rm -rf docs/api/store/",
|
||||
"yarn run -- redocly bundle docs/api/store-spec3.yaml -o docs/api/store-spec3.yaml --config=docs-util/redocly/config.yaml",
|
||||
"yarn run -- redocly split docs/api/store-spec3.yaml --outDir=docs/api/store/",
|
||||
].join(" && "),
|
||||
(error, stdout, stderr) => {
|
||||
if (error) {
|
||||
throw new Error(`error: ${error.message}`)
|
||||
@@ -123,7 +127,11 @@ swaggerInline(
|
||||
if (!isDryRun) {
|
||||
fs.writeFileSync("./docs/api/admin-spec3.yaml", gen)
|
||||
exec(
|
||||
"rm -rf docs/api/admin/ && yarn run -- redocly split docs/api/admin-spec3.yaml --outDir=docs/api/admin/",
|
||||
[
|
||||
"rm -rf docs/api/admin/",
|
||||
"yarn run -- redocly bundle docs/api/admin-spec3.yaml -o docs/api/admin-spec3.yaml --config=docs-util/redocly/config.yaml",
|
||||
"yarn run -- redocly split docs/api/admin-spec3.yaml --outDir=docs/api/admin/",
|
||||
].join(" && "),
|
||||
(error, stdout, stderr) => {
|
||||
if (error) {
|
||||
throw new Error(`error: ${error.message}`)
|
||||
|
||||
326
yarn.lock
326
yarn.lock
@@ -408,7 +408,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/helper-annotate-as-pure@npm:^7.18.6":
|
||||
"@babel/helper-annotate-as-pure@npm:^7.16.0, @babel/helper-annotate-as-pure@npm:^7.18.6":
|
||||
version: 7.18.6
|
||||
resolution: "@babel/helper-annotate-as-pure@npm:7.18.6"
|
||||
dependencies:
|
||||
@@ -582,7 +582,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.0.0-beta.49, @babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.12.13, @babel/helper-module-imports@npm:^7.18.6":
|
||||
"@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.0.0-beta.49, @babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.12.13, @babel/helper-module-imports@npm:^7.16.0, @babel/helper-module-imports@npm:^7.18.6":
|
||||
version: 7.18.6
|
||||
resolution: "@babel/helper-module-imports@npm:7.18.6"
|
||||
dependencies:
|
||||
@@ -2092,7 +2092,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/traverse@npm:^7.20.10, @babel/traverse@npm:^7.20.12, @babel/traverse@npm:^7.20.13":
|
||||
"@babel/traverse@npm:^7.20.10, @babel/traverse@npm:^7.20.12, @babel/traverse@npm:^7.20.13, @babel/traverse@npm:^7.4.5":
|
||||
version: 7.20.13
|
||||
resolution: "@babel/traverse@npm:7.20.13"
|
||||
dependencies:
|
||||
@@ -2503,7 +2503,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@emotion/is-prop-valid@npm:0.8.8":
|
||||
"@emotion/is-prop-valid@npm:0.8.8, @emotion/is-prop-valid@npm:^0.8.8":
|
||||
version: 0.8.8
|
||||
resolution: "@emotion/is-prop-valid@npm:0.8.8"
|
||||
dependencies:
|
||||
@@ -2567,14 +2567,14 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@emotion/stylis@npm:0.8.5":
|
||||
"@emotion/stylis@npm:0.8.5, @emotion/stylis@npm:^0.8.4":
|
||||
version: 0.8.5
|
||||
resolution: "@emotion/stylis@npm:0.8.5"
|
||||
checksum: f109e3f11cb0d48e8658aaa23578c5bcfe35e297819cfb089a3de6ba8dc0f89b0960474922690c6028df5d2e1895b4967f2fb280642c030054c312f1e137ce26
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@emotion/unitless@npm:0.7.5":
|
||||
"@emotion/unitless@npm:0.7.5, @emotion/unitless@npm:^0.7.4":
|
||||
version: 0.7.5
|
||||
resolution: "@emotion/unitless@npm:0.7.5"
|
||||
checksum: 4d0d94f53cb97b4481bbfa394953e1899a0b877644642ba9dd7247c27eb8c48e14e22aeb11411d7d9874685ad85dd5fb5b50eb78c6d8840eb56a84b92dcef2f4
|
||||
@@ -5859,44 +5859,49 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@redocly/ajv@npm:^8.6.4":
|
||||
version: 8.6.4
|
||||
resolution: "@redocly/ajv@npm:8.6.4"
|
||||
"@redocly/ajv@npm:^8.11.0":
|
||||
version: 8.11.0
|
||||
resolution: "@redocly/ajv@npm:8.11.0"
|
||||
dependencies:
|
||||
fast-deep-equal: ^3.1.1
|
||||
json-schema-traverse: ^1.0.0
|
||||
require-from-string: ^2.0.2
|
||||
uri-js: ^4.2.2
|
||||
checksum: 07ffbd7480962506e696b675e4fb4b53d188e0871312a75be2d569f3ea081ed9982db6d4575f3c955adcad4742c2af45eb01dc5968937467658bec5500d6a47b
|
||||
checksum: 7ee77a8304b54189e903c30248282f81638e2bb7dcf8b7cb80e078966999c4de4eb6dabe6ac8406b5c8fe7a1443540e2bd0009d975ac285d38c2426157bc774d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@redocly/cli@npm:latest":
|
||||
version: 1.0.0-beta.105
|
||||
resolution: "@redocly/cli@npm:1.0.0-beta.105"
|
||||
"@redocly/cli@npm:1.0.0-beta.123":
|
||||
version: 1.0.0-beta.123
|
||||
resolution: "@redocly/cli@npm:1.0.0-beta.123"
|
||||
dependencies:
|
||||
"@redocly/openapi-core": 1.0.0-beta.105
|
||||
"@redocly/openapi-core": 1.0.0-beta.123
|
||||
assert-node-version: ^1.0.3
|
||||
chokidar: ^3.5.1
|
||||
colorette: ^1.2.0
|
||||
glob: ^7.1.6
|
||||
glob-promise: ^3.4.0
|
||||
handlebars: ^4.7.6
|
||||
mobx: ^6.3.2
|
||||
portfinder: ^1.0.26
|
||||
react: ^17.0.1
|
||||
react-dom: ^17.0.1
|
||||
redoc: ~2.0.0
|
||||
simple-websocket: ^9.0.0
|
||||
styled-components: 5.3.3
|
||||
yargs: 17.0.1
|
||||
bin:
|
||||
openapi: bin/cli.js
|
||||
redocly: bin/cli.js
|
||||
checksum: 1431b538c7e541cdbcf27784942a32f834f6430cf7385e3dae21f764bde4fb097ab6b69e209c3ee0ba01b2aca07f4edab3a4d46b7670677cb64aba42fc45d01e
|
||||
checksum: dfc2e86894c48acecc3f40f4fd114d21863eb58a7ed7796cdc95926fa47b0d11067ba08838d6b9459f47056b06c9b25ea5c7cfb940e2878336901726528f0f2c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@redocly/openapi-core@npm:1.0.0-beta.105":
|
||||
version: 1.0.0-beta.105
|
||||
resolution: "@redocly/openapi-core@npm:1.0.0-beta.105"
|
||||
"@redocly/openapi-core@npm:1.0.0-beta.123, @redocly/openapi-core@npm:^1.0.0-beta.104":
|
||||
version: 1.0.0-beta.123
|
||||
resolution: "@redocly/openapi-core@npm:1.0.0-beta.123"
|
||||
dependencies:
|
||||
"@redocly/ajv": ^8.6.4
|
||||
"@redocly/ajv": ^8.11.0
|
||||
"@types/node": ^14.11.8
|
||||
colorette: ^1.2.0
|
||||
js-levenshtein: ^1.1.6
|
||||
@@ -5906,7 +5911,7 @@ __metadata:
|
||||
node-fetch: ^2.6.1
|
||||
pluralize: ^8.0.0
|
||||
yaml-ast-parser: 0.0.43
|
||||
checksum: e7ba983158815ead9bf40f813bef5beef6646564e31a50cde50400d19b56194a7af0ce50225080422efe63240167b572846bb894cb18a9c2972648784acf9b7c
|
||||
checksum: c19938ea966e96da688a3a5ab61d84d761c82c5c29e6a56513fdc07b393d8159fe925c1835ed0504ad5c460bf067179d5ba4fff9a2990d3f856fc95fe615c2e9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -10842,6 +10847,21 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"babel-plugin-styled-components@npm:>= 1.12.0":
|
||||
version: 2.0.7
|
||||
resolution: "babel-plugin-styled-components@npm:2.0.7"
|
||||
dependencies:
|
||||
"@babel/helper-annotate-as-pure": ^7.16.0
|
||||
"@babel/helper-module-imports": ^7.16.0
|
||||
babel-plugin-syntax-jsx: ^6.18.0
|
||||
lodash: ^4.17.11
|
||||
picomatch: ^2.3.0
|
||||
peerDependencies:
|
||||
styled-components: ">= 2"
|
||||
checksum: 1c639742fb177f36648077a44fd473fe050aa5c664a16ecaa8e366426c44520c2a0011682b90f5b62f3c4317c22938410a6044b7cd99eaba831c00d41a2395c1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"babel-plugin-syntax-jsx@npm:^6.18.0":
|
||||
version: 6.18.0
|
||||
resolution: "babel-plugin-syntax-jsx@npm:6.18.0"
|
||||
@@ -11991,6 +12011,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"camelize@npm:^1.0.0":
|
||||
version: 1.0.1
|
||||
resolution: "camelize@npm:1.0.1"
|
||||
checksum: 4c9ac55efd356d37ac483bad3093758236ab686192751d1c9daa43188cc5a07b09bd431eb7458a4efd9ca22424bba23253e7b353feb35d7c749ba040de2385fb
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"can-use-dom@npm:^0.1.0":
|
||||
version: 0.1.0
|
||||
resolution: "can-use-dom@npm:0.1.0"
|
||||
@@ -12338,6 +12365,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"classnames@npm:^2.3.1":
|
||||
version: 2.3.2
|
||||
resolution: "classnames@npm:2.3.2"
|
||||
checksum: cd50ead57b4f97436aaa9f9885c6926323efc7c2bea8e3d4eb10e4e972aa6a1cfca1c7a0e06f8a199ca7498d4339e30bb6002e589e61c9f21248cbf3e8b0b18d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"clean-css@npm:^4.2.3":
|
||||
version: 4.2.4
|
||||
resolution: "clean-css@npm:4.2.4"
|
||||
@@ -12573,6 +12607,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"clsx@npm:^1.1.0":
|
||||
version: 1.2.1
|
||||
resolution: "clsx@npm:1.2.1"
|
||||
checksum: 34dead8bee24f5e96f6e7937d711978380647e936a22e76380290e35486afd8634966ce300fc4b74a32f3762c7d4c0303f442c3e259f4ce02374eb0c82834f27
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cluster-key-slot@npm:^1.1.0":
|
||||
version: 1.1.0
|
||||
resolution: "cluster-key-slot@npm:1.1.0"
|
||||
@@ -13534,6 +13575,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"css-color-keywords@npm:^1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "css-color-keywords@npm:1.0.0"
|
||||
checksum: af205a86c68e0051846ed91eb3e30b4517e1904aac040013ff1d742019b3f9369ba5658ba40901dbbc121186fc4bf0e75a814321cc3e3182fbb2feb81c6d9cb7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"css-declaration-sorter@npm:^6.3.0":
|
||||
version: 6.3.0
|
||||
resolution: "css-declaration-sorter@npm:6.3.0"
|
||||
@@ -13621,6 +13669,17 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"css-to-react-native@npm:^3.0.0":
|
||||
version: 3.1.0
|
||||
resolution: "css-to-react-native@npm:3.1.0"
|
||||
dependencies:
|
||||
camelize: ^1.0.0
|
||||
css-color-keywords: ^1.0.0
|
||||
postcss-value-parser: ^4.0.2
|
||||
checksum: 30e91d063b8c57cab84ca0e16750d64a8e497c65673c793c7270e258dcd5af773d70542f8db07a14e645249619a9479020f4f890f78ff27d1bfc4610c67ad11f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"css-tree@npm:^1.1.2, css-tree@npm:^1.1.3":
|
||||
version: 1.1.3
|
||||
resolution: "css-tree@npm:1.1.3"
|
||||
@@ -13995,6 +14054,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"decko@npm:^1.2.0":
|
||||
version: 1.2.0
|
||||
resolution: "decko@npm:1.2.0"
|
||||
checksum: bae2187734b6faa9db1cf53b04bb107f79a55735d85c7511f941d7fd1cac36991ad2048dee8451dcbcb4efa23a46e5dfd46f71a51585457cd5b912869b5d346b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"decode-uri-component@npm:^0.2.0":
|
||||
version: 0.2.0
|
||||
resolution: "decode-uri-component@npm:0.2.0"
|
||||
@@ -14551,6 +14617,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"dompurify@npm:^2.2.8":
|
||||
version: 2.4.3
|
||||
resolution: "dompurify@npm:2.4.3"
|
||||
checksum: 4c93f5bc8855bbe7dcb33487c0b252a00309fbd8a6d0ec280abbc3af695b43d1bf7f526c2f323fa697314b0b3de3511c756005dddc6ed90d1a1440a3d6ff89d9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"domutils@npm:^2.5.2, domutils@npm:^2.8.0":
|
||||
version: 2.8.0
|
||||
resolution: "domutils@npm:2.8.0"
|
||||
@@ -16096,7 +16169,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"eventemitter3@npm:^4.0.0, eventemitter3@npm:^4.0.4":
|
||||
"eventemitter3@npm:^4.0.0, eventemitter3@npm:^4.0.4, eventemitter3@npm:^4.0.7":
|
||||
version: 4.0.7
|
||||
resolution: "eventemitter3@npm:4.0.7"
|
||||
checksum: 5f6d97cbcbac47be798e6355e3a7639a84ee1f7d9b199a07017f1d2f1e2fe236004d14fa5dfaeba661f94ea57805385e326236a6debbc7145c8877fbc0297c6b
|
||||
@@ -17119,6 +17192,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"foreach@npm:^2.0.4":
|
||||
version: 2.0.6
|
||||
resolution: "foreach@npm:2.0.6"
|
||||
checksum: dc79f83997ac986dadbc95b4035ce8b86699fb654eb85446b0ad779fe69d567fc9894075e460243ca8bc20adb8fd178ad203aef66dc3c620ac78b18a4cb7059c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"foreground-child@npm:^2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "foreground-child@npm:2.0.0"
|
||||
@@ -19006,7 +19086,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"hoist-non-react-statics@npm:^3.3.0":
|
||||
"hoist-non-react-statics@npm:^3.0.0, hoist-non-react-statics@npm:^3.3.0":
|
||||
version: 3.3.2
|
||||
resolution: "hoist-non-react-statics@npm:3.3.2"
|
||||
dependencies:
|
||||
@@ -22869,6 +22949,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"json-pointer@npm:0.6.2, json-pointer@npm:^0.6.2":
|
||||
version: 0.6.2
|
||||
resolution: "json-pointer@npm:0.6.2"
|
||||
dependencies:
|
||||
foreach: ^2.0.4
|
||||
checksum: 47f6103032c0340b3392cb650e0ec817f785eccb553407da13fae85bc535483c9b359d7e756de4ed73130172c28d2b02f8beb53a700a98b12e72c7bf70e734b7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"json-schema-traverse@npm:^0.4.1":
|
||||
version: 0.4.1
|
||||
resolution: "json-schema-traverse@npm:0.4.1"
|
||||
@@ -24266,6 +24355,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"mark.js@npm:^8.11.1":
|
||||
version: 8.11.1
|
||||
resolution: "mark.js@npm:8.11.1"
|
||||
checksum: 5e69e776db61abdd857b5cbb7070c8a3b1b0e5c12bf077fcd5a8c6f17b1f85ed65275aba5662b57136d1b9f82b54bb34d4ef4220f7703c9a7ab806ae1e208cff
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"markdown-escapes@npm:^1.0.0":
|
||||
version: 1.0.4
|
||||
resolution: "markdown-escapes@npm:1.0.4"
|
||||
@@ -24312,6 +24408,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"marked@npm:^4.0.15":
|
||||
version: 4.2.12
|
||||
resolution: "marked@npm:4.2.12"
|
||||
bin:
|
||||
marked: bin/marked.js
|
||||
checksum: ce8a2d0def715480f23ade1ee72ad74c9cdfe614442da88dac22049500566cf3e6a1fa41e70c4061bb378beba9896bb4bd542f58aa4a30c1f431e553a461ffe6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"marked@npm:^4.0.18":
|
||||
version: 4.0.18
|
||||
resolution: "marked@npm:4.0.18"
|
||||
@@ -25931,6 +26036,45 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"mobx-react-lite@npm:^3.4.0":
|
||||
version: 3.4.0
|
||||
resolution: "mobx-react-lite@npm:3.4.0"
|
||||
peerDependencies:
|
||||
mobx: ^6.1.0
|
||||
react: ^16.8.0 || ^17 || ^18
|
||||
peerDependenciesMeta:
|
||||
react-dom:
|
||||
optional: true
|
||||
react-native:
|
||||
optional: true
|
||||
checksum: 7aa64fb8740d48de23c370385331063f0a0821a87ed7a1eb0324305e8ef2f5173806c3e5ff2bfb7696e5b80faf19de11e2d3c0b64268df21895d4eec4816e325
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"mobx-react@npm:^7.2.0":
|
||||
version: 7.6.0
|
||||
resolution: "mobx-react@npm:7.6.0"
|
||||
dependencies:
|
||||
mobx-react-lite: ^3.4.0
|
||||
peerDependencies:
|
||||
mobx: ^6.1.0
|
||||
react: ^16.8.0 || ^17 || ^18
|
||||
peerDependenciesMeta:
|
||||
react-dom:
|
||||
optional: true
|
||||
react-native:
|
||||
optional: true
|
||||
checksum: 60f619edb999b9c66a86baa7ab5cf8b1f3651c85c16f2aa8adf3c0c553d52bc0ec083bbd42e8fe0c785f2435a7b1afdf20f103553b80bbf6d28616f160baa144
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"mobx@npm:^6.3.2":
|
||||
version: 6.7.0
|
||||
resolution: "mobx@npm:6.7.0"
|
||||
checksum: 91c09333073a6103d62cfcce133817402723eead9500a85ace8f39404b86ffdba19e9fc792fc626a9c872eeeae8437c445f80eedf6914f7f950b83d44f795b03
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"moment-timezone@npm:^0.5.31":
|
||||
version: 0.5.34
|
||||
resolution: "moment-timezone@npm:0.5.34"
|
||||
@@ -27167,6 +27311,16 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"openapi-sampler@npm:^1.3.0":
|
||||
version: 1.3.1
|
||||
resolution: "openapi-sampler@npm:1.3.1"
|
||||
dependencies:
|
||||
"@types/json-schema": ^7.0.7
|
||||
json-pointer: 0.6.2
|
||||
checksum: f394298c62decd027f418671e65c1aaee98be206788f4ba575c3d4e383c41d05a10d81968aad8d51f52f4aaa6acbdb0f97d0d192da06c8d7424e772cd13d2814
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"opencollective-postinstall@npm:^2.0.0":
|
||||
version: 2.0.3
|
||||
resolution: "opencollective-postinstall@npm:2.0.3"
|
||||
@@ -27811,6 +27965,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"path-browserify@npm:^1.0.1":
|
||||
version: 1.0.1
|
||||
resolution: "path-browserify@npm:1.0.1"
|
||||
checksum: 8b8c3fd5c66bd340272180590ae4ff139769e9ab79522e2eb82e3d571a89b8117c04147f65ad066dccfb42fcad902e5b7d794b3d35e0fd840491a8ddbedf8c66
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"path-case@npm:^3.0.4":
|
||||
version: 3.0.4
|
||||
resolution: "path-case@npm:3.0.4"
|
||||
@@ -27965,6 +28126,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"perfect-scrollbar@npm:^1.5.5":
|
||||
version: 1.5.5
|
||||
resolution: "perfect-scrollbar@npm:1.5.5"
|
||||
checksum: 10f0c3a1205328b22e232be4ee9f0e832e96fb5b6c524d1d04e11f97ad910018c1c0659af145e0ae0dc2b41e67a96df12787de5366ff5ba86034339071ca722b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"performance-now@npm:^2.1.0":
|
||||
version: 2.1.0
|
||||
resolution: "performance-now@npm:2.1.0"
|
||||
@@ -28255,7 +28423,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"polished@npm:^4.2.2":
|
||||
"polished@npm:^4.1.3, polished@npm:^4.2.2":
|
||||
version: 4.2.2
|
||||
resolution: "polished@npm:4.2.2"
|
||||
dependencies:
|
||||
@@ -28780,7 +28948,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0":
|
||||
"postcss-value-parser@npm:^4.0.2, postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0":
|
||||
version: 4.2.0
|
||||
resolution: "postcss-value-parser@npm:4.2.0"
|
||||
checksum: f4142a4f56565f77c1831168e04e3effd9ffcc5aebaf0f538eee4b2d465adfd4b85a44257bb48418202a63806a7da7fe9f56c330aebb3cac898e46b4cbf49161
|
||||
@@ -29114,7 +29282,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"prop-types@npm:^15.0.0, prop-types@npm:^15.6.0, prop-types@npm:^15.6.1, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1":
|
||||
"prop-types@npm:^15.0.0, prop-types@npm:^15.5.0, prop-types@npm:^15.6.0, prop-types@npm:^15.6.1, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1":
|
||||
version: 15.8.1
|
||||
resolution: "prop-types@npm:15.8.1"
|
||||
dependencies:
|
||||
@@ -29611,7 +29779,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"react-dom@npm:^17.0.2":
|
||||
"react-dom@npm:^17.0.1, react-dom@npm:^17.0.2":
|
||||
version: 17.0.2
|
||||
resolution: "react-dom@npm:17.0.2"
|
||||
dependencies:
|
||||
@@ -29836,6 +30004,18 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"react-tabs@npm:^3.2.2":
|
||||
version: 3.2.3
|
||||
resolution: "react-tabs@npm:3.2.3"
|
||||
dependencies:
|
||||
clsx: ^1.1.0
|
||||
prop-types: ^15.5.0
|
||||
peerDependencies:
|
||||
react: ^16.3.0 || ^17.0.0-0
|
||||
checksum: 1891471b3708ceb3292c05fa51cc9ea7fb40c2f85b9c7494d368d563d73cd6c4ae6e65e06c42fc9595f637885f42685a64581a54832a1675526f2631a35b8d3b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"react-textarea-autosize@npm:^7.1.0":
|
||||
version: 7.1.2
|
||||
resolution: "react-textarea-autosize@npm:7.1.2"
|
||||
@@ -29872,7 +30052,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"react@npm:^17.0.2":
|
||||
"react@npm:^17.0.1, react@npm:^17.0.2":
|
||||
version: 17.0.2
|
||||
resolution: "react@npm:17.0.2"
|
||||
dependencies:
|
||||
@@ -30101,6 +30281,42 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"redoc@npm:~2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "redoc@npm:2.0.0"
|
||||
dependencies:
|
||||
"@redocly/openapi-core": ^1.0.0-beta.104
|
||||
classnames: ^2.3.1
|
||||
decko: ^1.2.0
|
||||
dompurify: ^2.2.8
|
||||
eventemitter3: ^4.0.7
|
||||
json-pointer: ^0.6.2
|
||||
lunr: ^2.3.9
|
||||
mark.js: ^8.11.1
|
||||
marked: ^4.0.15
|
||||
mobx-react: ^7.2.0
|
||||
openapi-sampler: ^1.3.0
|
||||
path-browserify: ^1.0.1
|
||||
perfect-scrollbar: ^1.5.5
|
||||
polished: ^4.1.3
|
||||
prismjs: ^1.27.0
|
||||
prop-types: ^15.7.2
|
||||
react-tabs: ^3.2.2
|
||||
slugify: ~1.4.7
|
||||
stickyfill: ^1.1.1
|
||||
style-loader: ^3.3.1
|
||||
swagger2openapi: ^7.0.6
|
||||
url-template: ^2.0.8
|
||||
peerDependencies:
|
||||
core-js: ^3.1.4
|
||||
mobx: ^6.0.4
|
||||
react: ^16.8.4 || ^17.0.0
|
||||
react-dom: ^16.8.4 || ^17.0.0
|
||||
styled-components: ^4.1.1 || ^5.1.1
|
||||
checksum: 85efe6fa97aa9932c6cea72f726086c8af14f5058b67aeccf011111548a96b55b5c31237d28c0a5a16934d223117982e80ea81cc9a39879b23b5acfa1b18df04
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"redux-thunk@npm:^2.4.0":
|
||||
version: 2.4.1
|
||||
resolution: "redux-thunk@npm:2.4.1"
|
||||
@@ -30931,7 +31147,7 @@ __metadata:
|
||||
"@changesets/cli": ^2.26.0
|
||||
"@linear/sdk": ^1.22.0
|
||||
"@octokit/core": ^4.0.5
|
||||
"@redocly/cli": latest
|
||||
"@redocly/cli": 1.0.0-beta.123
|
||||
"@typescript-eslint/eslint-plugin": ^5.36.2
|
||||
"@typescript-eslint/parser": ^5.36.2
|
||||
axios: ^0.21.4
|
||||
@@ -31825,6 +32041,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"slugify@npm:~1.4.7":
|
||||
version: 1.4.7
|
||||
resolution: "slugify@npm:1.4.7"
|
||||
checksum: 27d31bac7bd28a7a702ab7b18996d2a41086d81a97cdc5487f131d7cedb009a745bcd10c8b263e48deb9f055e6c5a6b0bdb37f1156d5dd29b66f8ba981945302
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"smart-buffer@npm:^4.2.0":
|
||||
version: 4.2.0
|
||||
resolution: "smart-buffer@npm:4.2.0"
|
||||
@@ -32351,6 +32574,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"stickyfill@npm:^1.1.1":
|
||||
version: 1.1.1
|
||||
resolution: "stickyfill@npm:1.1.1"
|
||||
checksum: 8f11804fd3bba852cf3277dc4d6366a2bd592d3f7f3d9ab30b7adab4190a20e1296960b5107257081645b0d28afcbbab9f80e347cc425f2cd72b0a4f6917b4ab
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"store2@npm:^2.12.0, store2@npm:^2.7.1":
|
||||
version: 2.13.2
|
||||
resolution: "store2@npm:2.13.2"
|
||||
@@ -32812,6 +33042,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"style-loader@npm:^3.3.1":
|
||||
version: 3.3.1
|
||||
resolution: "style-loader@npm:3.3.1"
|
||||
peerDependencies:
|
||||
webpack: ^5.0.0
|
||||
checksum: b325f4ce5d0ee9797878d9db42a5c45ef6d757ad42de85bc550ef90c2fb78b762bbdff3214ddf1f4c8e1307fe1879fc47ea34ee48f8f56191309f8fc28f4d2b6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"style-to-object@npm:0.3.0, style-to-object@npm:^0.3.0":
|
||||
version: 0.3.0
|
||||
resolution: "style-to-object@npm:0.3.0"
|
||||
@@ -32821,6 +33060,28 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"styled-components@npm:5.3.3":
|
||||
version: 5.3.3
|
||||
resolution: "styled-components@npm:5.3.3"
|
||||
dependencies:
|
||||
"@babel/helper-module-imports": ^7.0.0
|
||||
"@babel/traverse": ^7.4.5
|
||||
"@emotion/is-prop-valid": ^0.8.8
|
||||
"@emotion/stylis": ^0.8.4
|
||||
"@emotion/unitless": ^0.7.4
|
||||
babel-plugin-styled-components: ">= 1.12.0"
|
||||
css-to-react-native: ^3.0.0
|
||||
hoist-non-react-statics: ^3.0.0
|
||||
shallowequal: ^1.1.0
|
||||
supports-color: ^5.5.0
|
||||
peerDependencies:
|
||||
react: ">= 16.8.0"
|
||||
react-dom: ">= 16.8.0"
|
||||
react-is: ">= 16.8.0"
|
||||
checksum: 0fda77406c668a16c753f0778850a90d5fbeae419791dac533e3f67e77f8c767d89022626aafa169fffe8b0873e15bf71126b2bab945dc98af6079d8b90e7488
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"stylehacks@npm:^5.1.0":
|
||||
version: 5.1.0
|
||||
resolution: "stylehacks@npm:5.1.0"
|
||||
@@ -32984,7 +33245,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"swagger2openapi@npm:^7.0.8":
|
||||
"swagger2openapi@npm:^7.0.6, swagger2openapi@npm:^7.0.8":
|
||||
version: 7.0.8
|
||||
resolution: "swagger2openapi@npm:7.0.8"
|
||||
dependencies:
|
||||
@@ -34918,6 +35179,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"url-template@npm:^2.0.8":
|
||||
version: 2.0.8
|
||||
resolution: "url-template@npm:2.0.8"
|
||||
checksum: 56a15057eacbcf05d52b0caed8279c8451b3dd9d32856a1fdd91c6dc84dcb1646f12bafc756b7ade62ca5b1564da8efd7baac5add35868bafb43eb024c62805b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"url@npm:0.10.3":
|
||||
version: 0.10.3
|
||||
resolution: "url@npm:0.10.3"
|
||||
|
||||
Reference in New Issue
Block a user