From ea2b1e4d14e546e9217fdd3d65bc2d55f46bd090 Mon Sep 17 00:00:00 2001 From: Ashish Padhy <100484401+Shurtu-gal@users.noreply.github.com> Date: Fri, 4 Aug 2023 14:28:36 +0530 Subject: [PATCH 1/9] fix: handle unexpected file formats (#639) --- apps/studio/src/components/Editor/EditorDropdown.tsx | 3 ++- apps/studio/src/services/editor.service.tsx | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/apps/studio/src/components/Editor/EditorDropdown.tsx b/apps/studio/src/components/Editor/EditorDropdown.tsx index 34cbd5ddf..bc7456c90 100644 --- a/apps/studio/src/components/Editor/EditorDropdown.tsx +++ b/apps/studio/src/components/Editor/EditorDropdown.tsx @@ -39,6 +39,7 @@ export const EditorDropdown: React.FunctionComponent = () = > { toast.promise(editorSvc.importFile(event.target.files), { @@ -53,7 +54,7 @@ export const EditorDropdown: React.FunctionComponent = () = error: (
- Failed to import document. + Failed to import document. Maybe the file type is invalid.
), diff --git a/apps/studio/src/services/editor.service.tsx b/apps/studio/src/services/editor.service.tsx index 9157bc83f..7b98a809a 100644 --- a/apps/studio/src/services/editor.service.tsx +++ b/apps/studio/src/services/editor.service.tsx @@ -131,6 +131,15 @@ export class EditorService extends AbstractService { if (!file) { return; } + + // Check if file is valid (only JSON and YAML are allowed currently) ----Change afterwards as per the requirement + if ( + file.type !== 'application/json' && + file.type !== 'application/x-yaml' && + file.type !== 'application/yaml' + ) { + throw new Error('Invalid file type'); + } const fileReader = new FileReader(); fileReader.onload = fileLoadedEvent => { From 4194fb3b22019c236931ac9afb3ec1026d72d4bd Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 7 Aug 2023 23:03:56 +0200 Subject: [PATCH 2/9] chore: update @asyncapi/go-watermill-template to 0.2.36 version (#765) --- apps/studio/package.json | 2 +- package-lock.json | 32 ++++++++++++++++---------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/apps/studio/package.json b/apps/studio/package.json index 9eb7ad2b1..c335f1e87 100644 --- a/apps/studio/package.json +++ b/apps/studio/package.json @@ -75,7 +75,7 @@ }, "devDependencies": { "@asyncapi/dotnet-nats-template": "^0.11.0", - "@asyncapi/go-watermill-template": "^0.2.35", + "@asyncapi/go-watermill-template": "^0.2.36", "@asyncapi/html-template": "^0.28.3", "@asyncapi/java-spring-cloud-stream-template": "^0.13.4", "@asyncapi/java-spring-template": "^0.29.0", diff --git a/package-lock.json b/package-lock.json index c2a88e835..48fdc43f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -507,7 +507,7 @@ }, "devDependencies": { "@asyncapi/dotnet-nats-template": "^0.11.0", - "@asyncapi/go-watermill-template": "^0.2.35", + "@asyncapi/go-watermill-template": "^0.2.36", "@asyncapi/html-template": "^0.28.3", "@asyncapi/java-spring-cloud-stream-template": "^0.13.4", "@asyncapi/java-spring-template": "^0.29.0", @@ -1098,15 +1098,15 @@ } }, "node_modules/@asyncapi/go-watermill-template": { - "version": "0.2.35", - "resolved": "https://registry.npmjs.org/@asyncapi/go-watermill-template/-/go-watermill-template-0.2.35.tgz", - "integrity": "sha512-2SAy8Wkjii7U8ck/5McIvo3g4MXIx6AwyjHx7FuLdsKls8kbS+Uh0Db+5n/YXAmZUHrLD3foqb7kpwyT+GtiIw==", + "version": "0.2.36", + "resolved": "https://registry.npmjs.org/@asyncapi/go-watermill-template/-/go-watermill-template-0.2.36.tgz", + "integrity": "sha512-PaRw+ISEgR90uLhYQtdhrX5VyvNMNm+gd5mjHA2TdM13B+WANiOKNtUGH6XV4ROTyz8DSkonoD03tyIXBkuoAw==", "dev": true, "dependencies": { "@asyncapi/generator-filters": "^2.0.0", "@asyncapi/generator-hooks": "^0.1.0", "@asyncapi/generator-react-sdk": "^0.2.23", - "@asyncapi/modelina": "^1.8.8" + "@asyncapi/modelina": "^1.8.9" } }, "node_modules/@asyncapi/html-template": { @@ -1314,9 +1314,9 @@ } }, "node_modules/@asyncapi/modelina": { - "version": "1.8.8", - "resolved": "https://registry.npmjs.org/@asyncapi/modelina/-/modelina-1.8.8.tgz", - "integrity": "sha512-Ba9e90/JLi95W2K8bb/ZzCp0ouynnode/WvNVN+GE5ofZKyxouptr2DiOIiPG//NNlockeWmlINBDcqOD503lQ==", + "version": "1.8.9", + "resolved": "https://registry.npmjs.org/@asyncapi/modelina/-/modelina-1.8.9.tgz", + "integrity": "sha512-5GxL7+6pewE/8LncowR3x41XKA+sF0OaRlIiAkVpxI6K80WWk3Xn3+iJ2fe1ZsQbwic35HlPeMI4/c+XlqL/eg==", "dev": true, "dependencies": { "@apidevtools/json-schema-ref-parser": "^9.0.9", @@ -34630,15 +34630,15 @@ } }, "@asyncapi/go-watermill-template": { - "version": "0.2.35", - "resolved": "https://registry.npmjs.org/@asyncapi/go-watermill-template/-/go-watermill-template-0.2.35.tgz", - "integrity": "sha512-2SAy8Wkjii7U8ck/5McIvo3g4MXIx6AwyjHx7FuLdsKls8kbS+Uh0Db+5n/YXAmZUHrLD3foqb7kpwyT+GtiIw==", + "version": "0.2.36", + "resolved": "https://registry.npmjs.org/@asyncapi/go-watermill-template/-/go-watermill-template-0.2.36.tgz", + "integrity": "sha512-PaRw+ISEgR90uLhYQtdhrX5VyvNMNm+gd5mjHA2TdM13B+WANiOKNtUGH6XV4ROTyz8DSkonoD03tyIXBkuoAw==", "dev": true, "requires": { "@asyncapi/generator-filters": "^2.0.0", "@asyncapi/generator-hooks": "^0.1.0", "@asyncapi/generator-react-sdk": "^0.2.23", - "@asyncapi/modelina": "^1.8.8" + "@asyncapi/modelina": "^1.8.9" } }, "@asyncapi/html-template": { @@ -34816,9 +34816,9 @@ } }, "@asyncapi/modelina": { - "version": "1.8.8", - "resolved": "https://registry.npmjs.org/@asyncapi/modelina/-/modelina-1.8.8.tgz", - "integrity": "sha512-Ba9e90/JLi95W2K8bb/ZzCp0ouynnode/WvNVN+GE5ofZKyxouptr2DiOIiPG//NNlockeWmlINBDcqOD503lQ==", + "version": "1.8.9", + "resolved": "https://registry.npmjs.org/@asyncapi/modelina/-/modelina-1.8.9.tgz", + "integrity": "sha512-5GxL7+6pewE/8LncowR3x41XKA+sF0OaRlIiAkVpxI6K80WWk3Xn3+iJ2fe1ZsQbwic35HlPeMI4/c+XlqL/eg==", "dev": true, "requires": { "@apidevtools/json-schema-ref-parser": "^9.0.9", @@ -35178,7 +35178,7 @@ "@asyncapi/avro-schema-parser": "^3.0.2", "@asyncapi/converter": "^1.3.1", "@asyncapi/dotnet-nats-template": "^0.11.0", - "@asyncapi/go-watermill-template": "^0.2.35", + "@asyncapi/go-watermill-template": "^0.2.36", "@asyncapi/html-template": "^0.28.3", "@asyncapi/java-spring-cloud-stream-template": "^0.13.4", "@asyncapi/java-spring-template": "^0.29.0", From 555076900dc0315590dad8df6aab045805492b16 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Tue, 8 Aug 2023 12:15:15 +0200 Subject: [PATCH 3/9] chore: update @asyncapi/go-watermill-template to 0.2.37 version (#766) --- apps/studio/package.json | 2 +- package-lock.json | 52 ++++++++++++++++++++-------------------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/apps/studio/package.json b/apps/studio/package.json index c335f1e87..3cfa99f5a 100644 --- a/apps/studio/package.json +++ b/apps/studio/package.json @@ -75,7 +75,7 @@ }, "devDependencies": { "@asyncapi/dotnet-nats-template": "^0.11.0", - "@asyncapi/go-watermill-template": "^0.2.36", + "@asyncapi/go-watermill-template": "^0.2.37", "@asyncapi/html-template": "^0.28.3", "@asyncapi/java-spring-cloud-stream-template": "^0.13.4", "@asyncapi/java-spring-template": "^0.29.0", diff --git a/package-lock.json b/package-lock.json index 48fdc43f3..a1f4cbc75 100644 --- a/package-lock.json +++ b/package-lock.json @@ -507,7 +507,7 @@ }, "devDependencies": { "@asyncapi/dotnet-nats-template": "^0.11.0", - "@asyncapi/go-watermill-template": "^0.2.36", + "@asyncapi/go-watermill-template": "^0.2.37", "@asyncapi/html-template": "^0.28.3", "@asyncapi/java-spring-cloud-stream-template": "^0.13.4", "@asyncapi/java-spring-template": "^0.29.0", @@ -1098,15 +1098,15 @@ } }, "node_modules/@asyncapi/go-watermill-template": { - "version": "0.2.36", - "resolved": "https://registry.npmjs.org/@asyncapi/go-watermill-template/-/go-watermill-template-0.2.36.tgz", - "integrity": "sha512-PaRw+ISEgR90uLhYQtdhrX5VyvNMNm+gd5mjHA2TdM13B+WANiOKNtUGH6XV4ROTyz8DSkonoD03tyIXBkuoAw==", + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/@asyncapi/go-watermill-template/-/go-watermill-template-0.2.37.tgz", + "integrity": "sha512-hU/2Z7onGMqGMyCm5v4sfeWa8zKEdJp3V6AtSK+c9WXZ4mV/va+WUj2im8T/ypkHy0OMeL1UsdhIgw7QwNqRhw==", "dev": true, "dependencies": { "@asyncapi/generator-filters": "^2.0.0", "@asyncapi/generator-hooks": "^0.1.0", "@asyncapi/generator-react-sdk": "^0.2.23", - "@asyncapi/modelina": "^1.8.9" + "@asyncapi/modelina": "^1.8.10" } }, "node_modules/@asyncapi/html-template": { @@ -1314,9 +1314,9 @@ } }, "node_modules/@asyncapi/modelina": { - "version": "1.8.9", - "resolved": "https://registry.npmjs.org/@asyncapi/modelina/-/modelina-1.8.9.tgz", - "integrity": "sha512-5GxL7+6pewE/8LncowR3x41XKA+sF0OaRlIiAkVpxI6K80WWk3Xn3+iJ2fe1ZsQbwic35HlPeMI4/c+XlqL/eg==", + "version": "1.8.10", + "resolved": "https://registry.npmjs.org/@asyncapi/modelina/-/modelina-1.8.10.tgz", + "integrity": "sha512-vpGJCcHJN26+jiJ/Xiua1U/pObipsV3vYDMutxEkFj1EgG6iOiSHZ1YmysqHxXHF/Zs60PjsqDDXWQ2t7bB89Q==", "dev": true, "dependencies": { "@apidevtools/json-schema-ref-parser": "^9.0.9", @@ -1324,7 +1324,7 @@ "@asyncapi/avro-schema-parser": "^3.0.2", "@asyncapi/openapi-schema-parser": "^3.0.4", "@asyncapi/parser": "^2.1.0", - "@asyncapi/raml-dt-schema-parser": "^4.0.2", + "@asyncapi/raml-dt-schema-parser": "^4.0.4", "@swc/core": "^1.3.5", "@swc/jest": "^0.2.23", "alterschema": "^1.1.2", @@ -1642,12 +1642,12 @@ } }, "node_modules/@asyncapi/raml-dt-schema-parser": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@asyncapi/raml-dt-schema-parser/-/raml-dt-schema-parser-4.0.3.tgz", - "integrity": "sha512-HYqFOS9wVhkmPLJ84dMP465yDXkElNQSiHb66NNHbNycfXqKTzqCTn7U9iy5w+pTfqKL1w98LlTz1K1jAez9aw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@asyncapi/raml-dt-schema-parser/-/raml-dt-schema-parser-4.0.4.tgz", + "integrity": "sha512-kKam4jwYYdwqoV5zkEb3YEb8VOrN0785fc4ByazxRd+BT/RnkQTLspjTY/akdDs9DLmU4ChP73Z0vqpek6wojA==", "dev": true, "dependencies": { - "@asyncapi/parser": "^2.0.3", + "@asyncapi/parser": "^2.1.0", "js-yaml": "^4.1.0", "ramldt2jsonschema": "^1.2.3", "webapi-parser": "^0.5.0" @@ -34630,15 +34630,15 @@ } }, "@asyncapi/go-watermill-template": { - "version": "0.2.36", - "resolved": "https://registry.npmjs.org/@asyncapi/go-watermill-template/-/go-watermill-template-0.2.36.tgz", - "integrity": "sha512-PaRw+ISEgR90uLhYQtdhrX5VyvNMNm+gd5mjHA2TdM13B+WANiOKNtUGH6XV4ROTyz8DSkonoD03tyIXBkuoAw==", + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/@asyncapi/go-watermill-template/-/go-watermill-template-0.2.37.tgz", + "integrity": "sha512-hU/2Z7onGMqGMyCm5v4sfeWa8zKEdJp3V6AtSK+c9WXZ4mV/va+WUj2im8T/ypkHy0OMeL1UsdhIgw7QwNqRhw==", "dev": true, "requires": { "@asyncapi/generator-filters": "^2.0.0", "@asyncapi/generator-hooks": "^0.1.0", "@asyncapi/generator-react-sdk": "^0.2.23", - "@asyncapi/modelina": "^1.8.9" + "@asyncapi/modelina": "^1.8.10" } }, "@asyncapi/html-template": { @@ -34816,9 +34816,9 @@ } }, "@asyncapi/modelina": { - "version": "1.8.9", - "resolved": "https://registry.npmjs.org/@asyncapi/modelina/-/modelina-1.8.9.tgz", - "integrity": "sha512-5GxL7+6pewE/8LncowR3x41XKA+sF0OaRlIiAkVpxI6K80WWk3Xn3+iJ2fe1ZsQbwic35HlPeMI4/c+XlqL/eg==", + "version": "1.8.10", + "resolved": "https://registry.npmjs.org/@asyncapi/modelina/-/modelina-1.8.10.tgz", + "integrity": "sha512-vpGJCcHJN26+jiJ/Xiua1U/pObipsV3vYDMutxEkFj1EgG6iOiSHZ1YmysqHxXHF/Zs60PjsqDDXWQ2t7bB89Q==", "dev": true, "requires": { "@apidevtools/json-schema-ref-parser": "^9.0.9", @@ -34826,7 +34826,7 @@ "@asyncapi/avro-schema-parser": "^3.0.2", "@asyncapi/openapi-schema-parser": "^3.0.4", "@asyncapi/parser": "^2.1.0", - "@asyncapi/raml-dt-schema-parser": "^4.0.2", + "@asyncapi/raml-dt-schema-parser": "^4.0.4", "@swc/core": "^1.3.5", "@swc/jest": "^0.2.23", "alterschema": "^1.1.2", @@ -35091,12 +35091,12 @@ } }, "@asyncapi/raml-dt-schema-parser": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@asyncapi/raml-dt-schema-parser/-/raml-dt-schema-parser-4.0.3.tgz", - "integrity": "sha512-HYqFOS9wVhkmPLJ84dMP465yDXkElNQSiHb66NNHbNycfXqKTzqCTn7U9iy5w+pTfqKL1w98LlTz1K1jAez9aw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@asyncapi/raml-dt-schema-parser/-/raml-dt-schema-parser-4.0.4.tgz", + "integrity": "sha512-kKam4jwYYdwqoV5zkEb3YEb8VOrN0785fc4ByazxRd+BT/RnkQTLspjTY/akdDs9DLmU4ChP73Z0vqpek6wojA==", "dev": true, "requires": { - "@asyncapi/parser": "^2.0.3", + "@asyncapi/parser": "^2.1.0", "js-yaml": "^4.1.0", "ramldt2jsonschema": "^1.2.3", "webapi-parser": "^0.5.0" @@ -35178,7 +35178,7 @@ "@asyncapi/avro-schema-parser": "^3.0.2", "@asyncapi/converter": "^1.3.1", "@asyncapi/dotnet-nats-template": "^0.11.0", - "@asyncapi/go-watermill-template": "^0.2.36", + "@asyncapi/go-watermill-template": "^0.2.37", "@asyncapi/html-template": "^0.28.3", "@asyncapi/java-spring-cloud-stream-template": "^0.13.4", "@asyncapi/java-spring-template": "^0.29.0", From 1476812927e80bf4eb1b5406e06e505aeff2011c Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Tue, 8 Aug 2023 18:40:01 +0200 Subject: [PATCH 4/9] fix: update @asyncapi/openapi-schema-parser to 3.0.4 version (#761) Co-authored-by: asyncapi-bot-eve %0ACo-authored-by: asyncapi-bot --- apps/studio/package.json | 2 +- package-lock.json | 151 ++++++++++++++++++++++++++++++++++++--- 2 files changed, 142 insertions(+), 11 deletions(-) diff --git a/apps/studio/package.json b/apps/studio/package.json index 3cfa99f5a..02ad7ea26 100644 --- a/apps/studio/package.json +++ b/apps/studio/package.json @@ -25,7 +25,7 @@ "dependencies": { "@asyncapi/avro-schema-parser": "^3.0.2", "@asyncapi/converter": "^1.3.1", - "@asyncapi/openapi-schema-parser": "^3.0.3", + "@asyncapi/openapi-schema-parser": "^3.0.4", "@asyncapi/parser": "^2.0.3", "@asyncapi/react-component": "^1.0.0-next.48", "@asyncapi/specs": "^4.2.1", diff --git a/package-lock.json b/package-lock.json index a1f4cbc75..d88aad2b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -484,7 +484,7 @@ "dependencies": { "@asyncapi/avro-schema-parser": "^3.0.2", "@asyncapi/converter": "^1.3.1", - "@asyncapi/openapi-schema-parser": "^3.0.3", + "@asyncapi/openapi-schema-parser": "^3.0.4", "@asyncapi/parser": "^2.0.3", "@asyncapi/react-component": "^1.0.0-next.48", "@asyncapi/specs": "^4.2.1", @@ -568,17 +568,49 @@ } }, "apps/studio/node_modules/@asyncapi/openapi-schema-parser": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@asyncapi/openapi-schema-parser/-/openapi-schema-parser-3.0.3.tgz", - "integrity": "sha512-R78pdOmkbWEnzYKAfx7PYUMJuR3hrReGJ0nfyUXs/nSz+yjH4kl2VHPmF2icKOpShdpv0nBkN0pup3w4D53FrQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@asyncapi/openapi-schema-parser/-/openapi-schema-parser-3.0.4.tgz", + "integrity": "sha512-nfZbL3dTpIQ3K+/V05FBpgOPi7dDWZkqZG8e7pKwtNhwZ0YLBFWTw6RpocztlBlcieFggxZqLm4BT5I1cQbK+Q==", "dependencies": { - "@asyncapi/parser": "^2.0.3", + "@asyncapi/parser": "^2.1.0", "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0", "ajv": "^8.11.0", "ajv-errors": "^3.0.0", "ajv-formats": "^2.1.1" } }, + "apps/studio/node_modules/@asyncapi/parser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-2.1.0.tgz", + "integrity": "sha512-78jjN3eW4ZmgJEa6Ap15lofzADCeItO4wHcAY2Jod3qLB1xf1zFDZQdtm3VSHYLeLhwoC1A33bAtzEf7M5P2bg==", + "dependencies": { + "@asyncapi/specs": "^5.1.0", + "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0", + "@stoplight/json-ref-resolver": "^3.1.5", + "@stoplight/spectral-core": "^1.16.1", + "@stoplight/spectral-functions": "^1.7.2", + "@stoplight/spectral-parsers": "^1.0.2", + "@types/json-schema": "^7.0.11", + "@types/urijs": "^1.19.19", + "ajv": "^8.11.0", + "ajv-errors": "^3.0.0", + "ajv-formats": "^2.1.1", + "avsc": "^5.7.5", + "js-yaml": "^4.1.0", + "jsonpath-plus": "^7.2.0", + "node-fetch": "2.6.7", + "ramldt2jsonschema": "^1.2.3", + "webapi-parser": "^0.5.0" + } + }, + "apps/studio/node_modules/@asyncapi/parser/node_modules/@asyncapi/specs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-5.1.0.tgz", + "integrity": "sha512-yffhETqehkim43luMnPKOwzY0D0YtU4bKpORIXIaid6p5Y5kDLrMGJaEPkNieQp03HMjhjFrnUPtT8kvqe0+aQ==", + "dependencies": { + "@types/json-schema": "^7.0.11" + } + }, "apps/studio/node_modules/@testing-library/react": { "version": "13.4.0", "dev": true, @@ -645,6 +677,25 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "apps/studio/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "apps/studio/node_modules/react-scripts": { "version": "5.0.1", "dev": true, @@ -785,11 +836,30 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "apps/studio/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, "apps/studio/node_modules/web-vitals": { "version": "3.3.2", "dev": true, "license": "Apache-2.0" }, + "apps/studio/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "apps/studio/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/@adobe/css-tools": { "version": "4.2.0", "license": "MIT" @@ -35186,7 +35256,7 @@ "@asyncapi/markdown-template": "^1.3.2", "@asyncapi/nodejs-template": "^0.13.1", "@asyncapi/nodejs-ws-template": "^0.9.33", - "@asyncapi/openapi-schema-parser": "^3.0.3", + "@asyncapi/openapi-schema-parser": "^3.0.4", "@asyncapi/parser": "^2.0.3", "@asyncapi/python-paho-template": "^0.2.13", "@asyncapi/react-component": "^1.0.0-next.48", @@ -35259,17 +35329,51 @@ } }, "@asyncapi/openapi-schema-parser": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@asyncapi/openapi-schema-parser/-/openapi-schema-parser-3.0.3.tgz", - "integrity": "sha512-R78pdOmkbWEnzYKAfx7PYUMJuR3hrReGJ0nfyUXs/nSz+yjH4kl2VHPmF2icKOpShdpv0nBkN0pup3w4D53FrQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@asyncapi/openapi-schema-parser/-/openapi-schema-parser-3.0.4.tgz", + "integrity": "sha512-nfZbL3dTpIQ3K+/V05FBpgOPi7dDWZkqZG8e7pKwtNhwZ0YLBFWTw6RpocztlBlcieFggxZqLm4BT5I1cQbK+Q==", "requires": { - "@asyncapi/parser": "^2.0.3", + "@asyncapi/parser": "^2.1.0", "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0", "ajv": "^8.11.0", "ajv-errors": "^3.0.0", "ajv-formats": "^2.1.1" } }, + "@asyncapi/parser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-2.1.0.tgz", + "integrity": "sha512-78jjN3eW4ZmgJEa6Ap15lofzADCeItO4wHcAY2Jod3qLB1xf1zFDZQdtm3VSHYLeLhwoC1A33bAtzEf7M5P2bg==", + "requires": { + "@asyncapi/specs": "^5.1.0", + "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0", + "@stoplight/json-ref-resolver": "^3.1.5", + "@stoplight/spectral-core": "^1.16.1", + "@stoplight/spectral-functions": "^1.7.2", + "@stoplight/spectral-parsers": "^1.0.2", + "@types/json-schema": "^7.0.11", + "@types/urijs": "^1.19.19", + "ajv": "^8.11.0", + "ajv-errors": "^3.0.0", + "ajv-formats": "^2.1.1", + "avsc": "^5.7.5", + "js-yaml": "^4.1.0", + "jsonpath-plus": "^7.2.0", + "node-fetch": "2.6.7", + "ramldt2jsonschema": "^1.2.3", + "webapi-parser": "^0.5.0" + }, + "dependencies": { + "@asyncapi/specs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-5.1.0.tgz", + "integrity": "sha512-yffhETqehkim43luMnPKOwzY0D0YtU4bKpORIXIaid6p5Y5kDLrMGJaEPkNieQp03HMjhjFrnUPtT8kvqe0+aQ==", + "requires": { + "@types/json-schema": "^7.0.11" + } + } + } + }, "@testing-library/react": { "version": "13.4.0", "dev": true, @@ -35304,6 +35408,14 @@ "supports-color": "^8.0.0" } }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, "react-scripts": { "version": "5.0.1", "dev": true, @@ -35397,9 +35509,28 @@ "has-flag": "^4.0.0" } }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, "web-vitals": { "version": "3.3.2", "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } } } }, From 94215e661d4a51a680b079c14c7439cdac0ff964 Mon Sep 17 00:00:00 2001 From: samz Date: Wed, 9 Aug 2023 15:08:10 +0200 Subject: [PATCH 5/9] feat: add spec 3.0 validation support (#747) --- .changeset/selfish-ducks-hear.md | 5 + apps/studio/package.json | 4 +- apps/studio/src/components/Content.tsx | 8 +- .../Modals/Settings/SettingsModal.tsx | 20 +- apps/studio/src/components/Sidebar.tsx | 16 +- .../src/components/Template/HTMLWrapper.tsx | 8 + .../src/components/Terminal/TerminalTabs.tsx | 7 +- apps/studio/src/services/parser.service.ts | 3 +- .../src/services/specification.service.ts | 24 +- apps/studio/src/state/settings.state.ts | 2 + apps/studio/src/types.ts | 2 +- package-lock.json | 4331 +++++++---------- package.json | 3 +- 13 files changed, 1815 insertions(+), 2618 deletions(-) create mode 100644 .changeset/selfish-ducks-hear.md diff --git a/.changeset/selfish-ducks-hear.md b/.changeset/selfish-ducks-hear.md new file mode 100644 index 000000000..49594621e --- /dev/null +++ b/.changeset/selfish-ducks-hear.md @@ -0,0 +1,5 @@ +--- +"@asyncapi/studio": minor +--- + +Support spec V3.0.0 in studio diff --git a/apps/studio/package.json b/apps/studio/package.json index 02ad7ea26..efd5ac8e9 100644 --- a/apps/studio/package.json +++ b/apps/studio/package.json @@ -26,9 +26,9 @@ "@asyncapi/avro-schema-parser": "^3.0.2", "@asyncapi/converter": "^1.3.1", "@asyncapi/openapi-schema-parser": "^3.0.4", - "@asyncapi/parser": "^2.0.3", + "@asyncapi/parser": "^2.1.0-next-major-spec.3", "@asyncapi/react-component": "^1.0.0-next.48", - "@asyncapi/specs": "^4.2.1", + "@asyncapi/specs": "^6.0.0-next-major-spec.6", "@ebay/nice-modal-react": "^1.2.10", "@headlessui/react": "^1.7.4", "@hookstate/core": "^4.0.0-rc21", diff --git a/apps/studio/src/components/Content.tsx b/apps/studio/src/components/Content.tsx index f9cb6f4ae..40c68a8d7 100644 --- a/apps/studio/src/components/Content.tsx +++ b/apps/studio/src/components/Content.tsx @@ -5,7 +5,7 @@ import { Template } from './Template'; import { VisualiserTemplate } from './Visualiser'; import { debounce } from '../helpers'; -import { usePanelsState } from '../state'; +import { usePanelsState, useDocumentsState, useSettingsState } from '../state'; import type { FunctionComponent } from 'react'; @@ -13,8 +13,10 @@ interface ContentProps {} export const Content: FunctionComponent = () => { // eslint-disable-line sonarjs/cognitive-complexity const { show, secondaryPanelType } = usePanelsState(); - - const navigationEnabled = show.primarySidebar; + const document = useDocumentsState(state => state.documents['asyncapi']?.document) || null; + const v3Enabled = useSettingsState(state => state.editor.v3support) || false; + const isV3 = document?.version() === '3.0.0' && v3Enabled; + const navigationEnabled = isV3 ? false : show.primarySidebar; const editorEnabled = show.primaryPanel; const viewEnabled = show.secondaryPanel; const viewType = secondaryPanelType; diff --git a/apps/studio/src/components/Modals/Settings/SettingsModal.tsx b/apps/studio/src/components/Modals/Settings/SettingsModal.tsx index e343e568d..085fdc45e 100644 --- a/apps/studio/src/components/Modals/Settings/SettingsModal.tsx +++ b/apps/studio/src/components/Modals/Settings/SettingsModal.tsx @@ -62,12 +62,14 @@ export const SettingsModal = create(({ activeTab = 'editor' const [governanceHints, setGovernanceHints] = useState(settings.governance.show.hints); const [autoRendering, setAutoRendering] = useState(settings.templates.autoRendering); const [confirmDisabled, setConfirmDisabled] = useState(true); + const [v3support, setV3support] = useState(settings.editor.v3support); const createNewState = (): SettingsState => { return { editor: { autoSaving, savingDelay, + v3support }, governance: { show: { @@ -86,7 +88,7 @@ export const SettingsModal = create(({ activeTab = 'editor' const newState = createNewState(); const isThisSameObjects = settingsSvc.isEqual(newState); setConfirmDisabled(isThisSameObjects); - }, [autoSaving, savingDelay, autoRendering, governanceWarnings, governanceInformations, governanceHints]); + }, [autoSaving, savingDelay, autoRendering, governanceWarnings, governanceInformations, governanceHints, v3support]); const onCancel = useCallback(() => { modal.hide(); @@ -129,7 +131,21 @@ export const SettingsModal = create(({ activeTab = 'editor' Save automatically after each change in the document or manually. -
+
+
+ + setV3support(v)} + /> +
+
+