diff --git a/.changeset/chilly-cars-itch.md b/.changeset/chilly-cars-itch.md new file mode 100644 index 0000000000..df4c7f9212 --- /dev/null +++ b/.changeset/chilly-cars-itch.md @@ -0,0 +1,5 @@ +--- +"@medusajs/medusa": patch +--- + +feat(OAS): sanitize circular reference for Redocly diff --git a/docs-util/redocly/config.yaml b/docs-util/redocly/config.yaml new file mode 100644 index 0000000000..75b593dc46 --- /dev/null +++ b/docs-util/redocly/config.yaml @@ -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 diff --git a/docs-util/redocly/plugins/decorators/circular-patch.js b/docs-util/redocly/plugins/decorators/circular-patch.js new file mode 100644 index 0000000000..b568e2003d --- /dev/null +++ b/docs-util/redocly/plugins/decorators/circular-patch.js @@ -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) + } + } + }, + }, + } +} diff --git a/docs-util/redocly/plugins/plugin.js b/docs-util/redocly/plugins/plugin.js new file mode 100644 index 0000000000..38ef77b32d --- /dev/null +++ b/docs-util/redocly/plugins/plugin.js @@ -0,0 +1,14 @@ +const CircularPatch = require("./decorators/circular-patch") + +const id = "plugin" + +const decorators = { + oas3: { + "circular-patch": CircularPatch, + }, +} + +module.exports = { + id, + decorators, +} diff --git a/package.json b/package.json index d9ffda83df..1b4cc85d6e 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/scripts/build-openapi.js b/scripts/build-openapi.js index 1ac078629a..0199309b27 100755 --- a/scripts/build-openapi.js +++ b/scripts/build-openapi.js @@ -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}`) diff --git a/yarn.lock b/yarn.lock index f3fb88c301..910f1443b3 100644 --- a/yarn.lock +++ b/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"