diff --git a/components/data/buckets.js b/components/data/buckets.js new file mode 100644 index 00000000000..a171d271885 --- /dev/null +++ b/components/data/buckets.js @@ -0,0 +1,70 @@ +import IconGettingStarted from '../icons/GettingStarted' +import IconTutorials from '../icons/Tutorials' +import IconUseCases from '../icons/UseCases' +import IconGuide from '../icons/Guide' +import IconSpec from '../icons/Spec' +import IconUsers from '../icons/Users' + +export const buckets = [ + { + name: 'concepts', + title: 'Concepts', + description: 'Our Concepts section defines the concepts of AsyncAPI features and capabilities.', + link: '/docs/concepts', + className: 'bg-secondary-200', + borderClassName: 'border-secondary-200', + Icon: IconGettingStarted, + }, + { + name: 'tutorials', + title: 'Tutorials', + description: 'Our Tutorials section teaches beginner processes with AsyncAPI, guiding you from Point A to Point B.', + link: '/docs/tutorials', + className: 'bg-pink-100', + borderClassName: 'border-pink-100', + Icon: IconTutorials, + }, + { + name: 'guides', + title: 'Guides', + description: "Our Guides section teaches AsyncAPI's capabilities at a high level.", + link: '/docs/guides', + className: 'bg-primary-200', + borderClassName: 'border-primary-200', + Icon: IconGuide, + }, + { + name: 'tools', + title: 'Tools', + description: 'Our Tools section documents the AsyncAPI tools ecosystem.', + link: '/docs/tools', + className: 'bg-green-200', + borderClassName: 'border-green-200', + Icon: IconUseCases, + }, + { + name: 'reference', + title: 'Reference', + description: 'Our Reference section documents the AsyncAPI specification.', + link: '/docs/reference', + className: 'bg-yellow-200', + borderClassName: 'border-yellow-200', + Icon: IconSpec, + }, + { + name: 'community', + title: 'Community', + description: 'Our Community section documents the community guidelines and resources.', + link: '/docs/community', + className: 'bg-orange-200', + borderClassName: 'border-orange-200', + Icon: IconUsers, + }, +].map(bucket => { + // we need such a mapping for some parts of website, e.g navigation blocks use the `icon` property, not `Icon` etc. + return { + ...bucket, + href: bucket.link, + icon: bucket.Icon, + }; +}); diff --git a/components/docs/DocsCards.js b/components/docs/DocsCards.js index 8a5f21c6a59..39aa1bd733a 100644 --- a/components/docs/DocsCards.js +++ b/components/docs/DocsCards.js @@ -2,54 +2,12 @@ import Link from 'next/link'; import Heading from '../typography/Heading'; import Paragraph from '../typography/Paragraph'; -import IconGettingStarted from '../icons/GettingStarted' -import IconTutorials from '../icons/Tutorials' -import IconUseCases from '../icons/UseCases' -import IconGuide from '../icons/Guide' -import IconSpec from '../icons/Spec' - -const cards = [ - { - title: 'Concepts', - description: 'Our Concepts section defines the concepts of AsyncAPI features and capabilities.', - link: '/docs/concepts', - className: 'bg-secondary-200', - Icon: IconGettingStarted, - }, - { - title: 'Tutorials', - description: 'Our Tutorials section teaches beginner processes with AsyncAPI, guiding you from Point A to Point B.', - link: '/docs/tutorials', - className: 'bg-pink-100', - Icon: IconTutorials, - }, - { - title: 'Tools', - description: 'Our Tools section documents the AsyncAPI tools ecosystem.', - link: '/docs/tools', - className: 'bg-green-200', - Icon: IconUseCases, - }, - { - title: 'Guides', - description: "Our Guides section teaches AsyncAPI's capabilities at a high level.", - link: '/docs/guides', - className: 'bg-primary-200', - Icon: IconGuide, - }, - { - title: 'Reference', - description: 'Our Reference section documents the AsyncAPI specification.', - link: '/docs/reference', - className: 'bg-yellow-200', - Icon: IconSpec, - } -]; +import { buckets } from '../data/buckets'; export function DocsCards() { return (
- {cards.map(card => ( + {buckets.map(card => ( ))}
diff --git a/components/icons/Users.js b/components/icons/Users.js new file mode 100644 index 00000000000..c46a89deb77 --- /dev/null +++ b/components/icons/Users.js @@ -0,0 +1,21 @@ +export default function IconUsers({ ...rest }) { + return ( + + + + + + + ); +} diff --git a/components/navigation/DocsNav.js b/components/navigation/DocsNav.js index d2de1f392d8..a975157c5ad 100644 --- a/components/navigation/DocsNav.js +++ b/components/navigation/DocsNav.js @@ -1,38 +1,20 @@ import DocsNavItem from './DocsNavItem'; +import IconHome from '../icons/Home'; -import IconHome from '../icons/Home' -import IconRocket from '../icons/Rocket' -import IconGradCap from '../icons/GradCap' -import IconPlant from '../icons/Plant' -import IconGuide from '../icons/Guide' -import IconPaper from '../icons/Paper' +import { buckets } from '../data/buckets'; -const buckets = { - 'welcome': { +const serializedBuckets = buckets.reduce((acc, bucket) => { + acc[bucket.name] = { + ...bucket, + className: `${bucket.className} ${bucket.borderClassName}`, + }; + return acc; +}, { + welcome: { icon: IconHome, className: 'bg-gray-300 border-gray-300', }, - 'concepts': { - icon: IconRocket, - className: 'bg-secondary-200 border-secondary-200', - }, - 'tutorials': { - icon: IconGradCap, - className: 'bg-pink-100 border-pink-100', - }, - 'tools': { - icon: IconPlant, - className: 'bg-green-200 border-green-200', - }, - 'guides': { - icon: IconGuide, - className: 'bg-primary-200 border-primary-200', - }, - 'reference': { - icon: IconPaper, - className: 'bg-yellow-200 border-yellow-200', - }, -}; +}); export default function DocsNav({ item, @@ -40,9 +22,11 @@ export default function DocsNav({ onClick = () => {}, }) { const subCategories = item.children; + const bucket = serializedBuckets[item.item.rootSectionId]; + return (
  • - +
      {Object.values(subCategories).map((subCategory) => (
    • diff --git a/components/navigation/LearningPanel.js b/components/navigation/LearningPanel.js index 3e5d5c2c6f4..d7fe4fdcea5 100644 --- a/components/navigation/LearningPanel.js +++ b/components/navigation/LearningPanel.js @@ -1,8 +1,8 @@ import FlyoutMenu from './FlyoutMenu' -import learningItems from './learningItems' +import { buckets } from '../data/buckets' export default function LearningPanel () { return ( - + ) } diff --git a/components/navigation/learningItems.js b/components/navigation/learningItems.js index 9172ee28612..65ba491f9a9 100644 --- a/components/navigation/learningItems.js +++ b/components/navigation/learningItems.js @@ -3,11 +3,13 @@ import IconGradCap from '../icons/GradCap' import IconPlant from '../icons/Plant' import IconGuide from '../icons/Guide' import IconPaper from '../icons/Paper' +import IconUsers from '../icons/Users' export default [ { href: '/docs/concepts', icon: IconRocket, className: 'bg-secondary-200', title: 'Concepts', description: 'Our Concepts section defines the concepts of AsyncAPI features and capabilities.' }, { href: '/docs/tutorials', icon: IconGradCap, className: 'bg-pink-100', title: 'Tutorials', description: 'Our Tutorials section teaches beginner processes with AsyncAPI, guiding you from Point A to Point B.' }, { href: '/docs/tools', icon: IconPlant, className: 'bg-green-200', title: 'Tools', description: 'Our Tools section documents the AsyncAPI tools ecosystem.' }, { href: '/docs/guides', icon: IconGuide, className: 'bg-primary-200', title: 'Guides', description: `Our Guides section teaches AsyncAPI's capabilities at a high level.` }, - { href: '/docs/reference', icon: IconPaper, className: 'bg-yellow-200', title: 'Reference', description: `Our Reference section documents the AsyncAPI specification.` } + { href: '/docs/reference', icon: IconPaper, className: 'bg-yellow-200', title: 'Reference', description: `Our Reference section documents the AsyncAPI specification.` }, + { href: '/docs/community', icon: IconUsers, className: 'bg-red-200', title: 'Community', description: `Our Community section documents the community guidelines and resources.` }, ] diff --git a/components/tabs/Tabs.js b/components/tabs/Tabs.js index 15c09cb0db6..dfaff2151ac 100644 --- a/components/tabs/Tabs.js +++ b/components/tabs/Tabs.js @@ -30,4 +30,4 @@ export default function Tabs({ tabs = [], className = '' }) { ); -} \ No newline at end of file +} diff --git a/config/meetings.json b/config/meetings.json index 1ce9374125b..80432da1f84 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -11,12 +11,6 @@ "url": "https://github.com/asyncapi/community/issues/625", "date": "2023-03-08T14:00:00.000Z" }, - { - "title": "Community Meeting", - "calLink": "https://www.google.com/calendar/event?eid=NmRyanI0ZGd2cHNqOG5qb3FvMWRlZG9oMmcgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/629", - "date": "2023-03-07T08:00:00.000Z" - }, { "title": "Spec 3.0 Meeting", "calLink": "https://www.google.com/calendar/event?eid=bjE2ZTdnZGJ1bHNxMWhrcW9rcjh0bGRxN3MgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", @@ -192,5 +186,12 @@ "url": "https://github.com/asyncapi/community/issues/747", "banner": "", "date": "2023-06-15T02:30:00.000Z" + }, + { + "title": "Spec 3.0 Docs Meeting", + "calLink": "https://www.google.com/calendar/event?eid=ajJoMTY5N2hpOWFlMTcyamFmbWttbTJlNG8gY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", + "url": "https://github.com/asyncapi/community/issues/749", + "banner": "", + "date": "2023-06-22T14:30:00.000Z" } ] \ No newline at end of file diff --git a/config/newsroom_videos.json b/config/newsroom_videos.json index 87b6954a716..2cad4f83764 100644 --- a/config/newsroom_videos.json +++ b/config/newsroom_videos.json @@ -1,32 +1,32 @@ [ { - "image_url": "https://i.ytimg.com/vi/52qqKE8jFlI/hqdefault.jpg", - "title": "Spec 3.0 (June 7th 2023)", - "description": "https://github.com/asyncapi/community/issues/734.", - "videoId": "52qqKE8jFlI" + "image_url": "https://i.ytimg.com/vi/mAISwYCZa2I/hqdefault.jpg", + "title": "Studio planning", + "description": "https://github.com/asyncapi/community/issues/745.", + "videoId": "mAISwYCZa2I" }, { - "image_url": "https://i.ytimg.com/vi/cIK6V28Rv3g/hqdefault.jpg", - "title": "Studio Vision & Plans (June 5th 2023)", - "description": "https://github.com/asyncapi/community/issues/728.", - "videoId": "cIK6V28Rv3g" + "image_url": "https://i.ytimg.com/vi/V3Op2A08UQs/hqdefault.jpg", + "title": "Headless Commerce: Streamlining Architecture", + "description": "https://github.com/asyncapi/community/issues/716.", + "videoId": "V3Op2A08UQs" }, { - "image_url": "https://i.ytimg.com/vi/0X7wnn41Vho/hqdefault.jpg", - "title": "Community Meeting (May 30th 2023)", - "description": "https://github.com/asyncapi/community/issues/715.", - "videoId": "0X7wnn41Vho" + "image_url": "https://i.ytimg.com/vi/LfKYDiqZDNA/hqdefault.jpg", + "title": "Let's talk about contributing: Mentorship Program FAQ", + "description": "https://github.com/asyncapi/community/issues/739.", + "videoId": "LfKYDiqZDNA" }, { - "image_url": "https://i.ytimg.com/vi/e0pQClU6QqU/hqdefault.jpg", - "title": "Spec 3.0 (May 24th 2023)", - "description": "https://github.com/asyncapi/community/issues/714.", - "videoId": "e0pQClU6QqU" + "image_url": "https://i.ytimg.com/vi/_zdXm90KvF0/hqdefault.jpg", + "title": "Community Meeting, Tuesday June 13th 2023", + "description": "https://github.com/asyncapi/community/issues/738.", + "videoId": "_zdXm90KvF0" }, { - "image_url": "https://i.ytimg.com/vi/l9Tp5eMTol4/hqdefault.jpg", - "title": "Community Health in Open-source", - "description": "Community health in open-source refers to the overall well-being of the individuals that contribute to a particular open-source ...", - "videoId": "l9Tp5eMTol4" + "image_url": "https://i.ytimg.com/vi/52qqKE8jFlI/hqdefault.jpg", + "title": "Spec 3.0 (June 7th 2023)", + "description": "https://github.com/asyncapi/community/issues/734.", + "videoId": "52qqKE8jFlI" } ] \ No newline at end of file diff --git a/pages/blog/the-new-era-approaches.md b/pages/blog/the-new-era-approaches.md new file mode 100644 index 00000000000..576936e2a82 --- /dev/null +++ b/pages/blog/the-new-era-approaches.md @@ -0,0 +1,257 @@ +--- +title: "The New Era Approaches" +date: 2023-06-10T06:00:00+01:00 +type: Communication +tags: + - Specification + - Announcement + - Release +cover: /img/posts/the-new-era-approaches.webp +authors: + - name: Jonas Lagoni + photo: /img/avatars/jonaslagoni.webp + link: https://www.linkedin.com/in/jonaslagoni/ +excerpt: "An update around AsyncAPI 3.0, where we are, what is remaining, release schedule, and a first look at 3.0" +featured: true +--- + +Back in [March 2022](https://www.asyncapi.com/blog/async-api-spec-3.0-release), you heard the first official words around AsyncAPI 3.0. Since then, a lot of people have been working diligently across many expertise to bring it to life. And with its current state, it's finally time to give an update on the progress. + +## Show Me the Money! +We are not going to give any lengthy description of features, fixes, and changes. Instead, I will just show you the money as a teaser. :wink: + +Below is an AsyncAPI v3 document that defines how you, a public application, can interact with my Smartylighting Streetlights system, where you can turn on a specific streetlight through WebSocket and get real-time information about environmental lighting conditions through Kafka. + +See how many features you can spot just from this example. Some changes are absent in the example, but I tried to cramp as many changes into it as possible. Below the example is a short list of changes you'll be able to fact-check your guess with. + +```yml +asyncapi: "3.0.0" +info: + title: Smartylighting Streetlights public API + version: "1.0.0" + description: | + The Smartylighting Streetlights public API allows you to remotely manage the city lights through Kafka and WebSocket. + + ### Check out its awesome features: + + * Turn a specific streetlight on 🌃 + * Receive real-time information about environmental lighting conditions 📈 + license: + name: Apache 2.0 + url: https://www.apache.org/licenses/LICENSE-2.0 + +servers: + kafka: + host: test.mykafkacluster.org:8092 + protocol: kafka-secure + description: Test Kafka broker + security: + - $ref: '#/components/securitySchemes/saslScram' + websocket: + host: test.websocket.org:1999 + protocol: ws + description: Test WebSocket server + +defaultContentType: application/json + +channels: + turnStreetlightOnChannel: + address: "/" + messages: + turnOn: + $ref: "#/components/messages/turnOn" + servers: + - $ref: "#/servers/websocket" + + turnStreetlightOnReplyChannel: + address: null + messages: + turnOnReply: + $ref: "#/components/messages/turnOnReply" + servers: + - $ref: "#/servers/websocket" + + lightMeasured: + description: The topic on which measured values may be produced and consumed. + address: "smartylighting.streetlights.1.0.event.{streetlightId}.lighting.measured" + parameters: + streetlightId: + $ref: "#/components/parameters/streetlightId" + messages: + lightMeasured: + $ref: "#/components/messages/lightMeasured" + servers: + - $ref: "#/servers/kafka" + +operations: + turnOn: + action: send + operationId: turnOn + channel: + $ref: "#/channels/turnStreetlightOnChannel" + reply: + channel: + $ref: "#/channels/turnStreetlightOnReplyChannel" + + lightMeasured: + action: receive + summary: Inform about environmental lighting conditions of a particular streetlight. + operationId: receiveLightMeasurement + channel: + $ref: "#/channels/lightMeasured" + traits: + - $ref: "#/components/operationTraits/kafka" + +components: + messages: + turnOn: + name: turnOn + title: Turn on + summary: Command a particular streetlight to turn the lights on. + payload: + $ref: "#/components/schemas/turnOnPayload" + + turnOnReply: + name: turnOnReply + title: Turn on reply + summary: Reply from turning on the lights + payload: + $ref: "#/components/schemas/turnOnReplyPayload" + + lightMeasured: + name: lightMeasured + title: Light measured + summary: Inform about environmental lighting conditions of a particular streetlight. + contentType: application/json + traits: + - $ref: "#/components/messageTraits/commonHeaders" + payload: + $ref: "#/components/schemas/lightMeasuredPayload" + + schemas: + turnOnPayload: + type: object + properties: + streetlightId: + description: The ID of the streetlight. + type: string + sentAt: + type: string + format: date-time + description: Date and time when the request was sent + + turnOnReplyPayload: + type: object + properties: + turnedOnTimestamp: + type: string + format: date-time + description: Date and time when the light was actually turned on. + + lightMeasuredPayload: + schemaFormat: "application/vnd.apache.avro;version=1.9.0" + schema: + type: record + name: User + namespace: com.company + doc: User information + fields: + - name: lumens + type: int + - name: sentAt + type: timestamp_ms + + securitySchemes: + saslScram: + type: scramSha256 + description: Provide your username and password for SASL/SCRAM authentication + + parameters: + streetlightId: + description: The ID of the streetlight. + + messageTraits: + commonHeaders: + headers: + type: object + properties: + my-app-header: + type: integer + minimum: 0 + maximum: 100 + + operationTraits: + kafka: + bindings: + kafka: + clientId: public +``` +As of the pre-release `v3.0.0-next-major-spec.12`, this is a valid AsyncAPI document. You can always find the most recent pre-release version here: https://www.asyncapi.com/docs/reference. + +All the changes in 3.0 up until now are the following: + +- Request/reply pattern. +- Introduce the new Channel Object, detached from operations. +- Introduce the new Operation object, detached from channels. +- Channels are no longer identified with address/topic/path. +- Optional channels. +- Schemas and schema formats are now naturally bound. +- Cleaned up the root object. +- Added additional meta fields for Server Object, Channel Object, Operation Object, and Operation Trait Object. +- External Documentation Object and Tag Object can now be reused and referenced. +- Unified referencing behavior. + +In due time we will give you a complete rundown about all the changes in 3.0 and extended documentation that explains the features in more in-depth, including a migration guide and release blog post. + +## The Remaining Effort + +The specification work is nearly done; only one change is still being discussed which is changing traits behavior to an inheritance that can be overwritten. + +However, at AsyncAPI, a specification is nothing without documentation and tools, which is why the majority of the remaining effort resolves just that. + +For documentation, you have probably noticed that since the first release of 2.0, we now have concepts, tutorials, and guides. Some of those docs will be updated due to 3.0. + +Regarding tooling, it's impossible to give you a clear overview of what exactly will support 3.0 right out the gate because there are many different code owners and contributors with individual priorities. So if you want a tool to support 3.0 right out the gate, please do head over to the issue and voice the need, add a :thumbsup:, write a comment, or maybe even contribute the needed changes! + +- [AsyncAPI CLI](https://github.com/asyncapi/cli/issues/629) +- [AsyncAPI asyncapi-react](https://github.com/asyncapi/asyncapi-react/issues/733) +- [AsyncAPI generator](https://github.com/asyncapi/generator/issues/979) +- [AsyncAPI studio](https://github.com/asyncapi/studio/issues/641) +- [AsyncAPI converter-js](https://github.com/asyncapi/converter-js/issues/110) +- [AsyncAPI vs-asyncapi-preview](https://github.com/asyncapi/vs-asyncapi-preview/issues/181) +- [AsyncAPI bundler](https://github.com/asyncapi/bundler/issues/133) +- [AsyncAPI diff](https://github.com/asyncapi/diff/issues/154) +- [AsyncAPI cupid](https://github.com/asyncapi/cupid/issues/171) +- [AsyncAPI glee](https://github.com/asyncapi/glee/issues/457) +- [AsyncAPI server-api](https://github.com/asyncapi/server-api/issues/294) +- [AsyncAPI modelina](https://github.com/asyncapi/modelina/issues/1376) +- [AsyncAPI dotnet-nats-template](https://github.com/asyncapi/dotnet-nats-template/issues/384) +- [AsyncAPI ts-nats-template](https://github.com/asyncapi/ts-nats-template/issues/545) +- [AsyncAPI python-paho-template](https://github.com/asyncapi/python-paho-template/issues/189) +- [AsyncAPI nodejs-ws-template](https://github.com/asyncapi/nodejs-ws-template/issues/294) +- [AsyncAPI java-template](https://github.com/asyncapi/java-template/issues/118) +- [AsyncAPI java-spring-cloud-stream-template](https://github.com/asyncapi/java-spring-cloud-stream-template/issues/336) +- [AsyncAPI go-watermill-template](https://github.com/asyncapi/go-watermill-template/issues/243) +- [AsyncAPI java-spring-template](https://github.com/asyncapi/java-spring-template/issues/308) +- [AsyncAPI markdown-template](https://github.com/asyncapi/markdown-template/issues/341) +- [AsyncAPI html-template](https://github.com/asyncapi/html-template/issues/430) + +The only tools we can say for sure that will support 3.0 right out the gate are the JS parser and the specification JSON Schema documents because they need to be updated for any specification change to be accepted :laughing: + +Currently, we are [using completed tasks as the release date for 3.0](https://github.com/asyncapi/spec/issues/944). Once all tasks are completed, we'll release 3.0. + + +## Release Date + +That leaves the big question... When is the release then? + +Honestly, we tried to stick with a release date, and more specifically, we thought the July release period (yes, next month). However as you can probably guess with the remaining work, that's most likely not going to happen. As we are learning, major changes take time, and schedules in open source are, hard, to say the least. :smile: + +While all the specification changes are most likely done by July, my best guess, right now, is for everything to be released in September. + +The more people help out, the faster it will get done. :wink: + +The next time you will hear from me will be the release blog post for 3.0. :wave: + +> Photo by Tim Marshall on Unsplash + diff --git a/pages/docs/community/_section.md b/pages/docs/community/_section.md index 8c647775929..6874743a00f 100644 --- a/pages/docs/community/_section.md +++ b/pages/docs/community/_section.md @@ -1,4 +1,4 @@ --- title: 'Community' weight: 6 ---- +--- \ No newline at end of file diff --git a/pages/docs/community/index.md b/pages/docs/community/index.md index e8a6835c7ac..57d4906396b 100644 --- a/pages/docs/community/index.md +++ b/pages/docs/community/index.md @@ -1,3 +1,4 @@ +--- title: Overview weight: 2 --- diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 85a0dae098f..08ee3bb9187 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.47.8 linux-x64 node-v18.16.0 +@asyncapi/cli/0.48.5 linux-x64 node-v18.16.0 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -91,7 +91,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.47.8/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.48.5/src/commands/bundle.ts)_ ## `asyncapi config` @@ -105,7 +105,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.47.8/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.48.5/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -234,7 +234,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.47.8/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.48.5/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -243,8 +243,8 @@ Find diff between two asyncapi files ``` USAGE $ asyncapi diff OLD NEW [-h] [-f json|yaml|yml] [-t breaking|non-breaking|unclassified|all] [-o ] - [-w] [--log-diagnostics] [--diagnostics-format json|stylish|junit|html|text|teamcity|pretty] [--fail-severity - error|warn|info|hint] + [--no-error] [-w] [--log-diagnostics] [--diagnostics-format json|stylish|junit|html|text|teamcity|pretty] + [--fail-severity error|warn|info|hint] ARGUMENTS OLD old spec path, URL or context-name @@ -264,12 +264,13 @@ FLAGS --fail-severity=(error|warn|info|hint) [default: error] diagnostics of this level or above will trigger a failure exit code --[no-]log-diagnostics log validation diagnostics or not + --no-error don't show error on breaking changes DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.47.8/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.48.5/src/commands/diff.ts)_ ## `asyncapi generate` @@ -283,7 +284,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.47.8/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.48.5/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -407,7 +408,7 @@ DESCRIPTION Creates a new asyncapi file ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.47.8/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.48.5/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -495,7 +496,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.47.8/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.48.5/src/commands/optimize.ts)_ ## `asyncapi start` @@ -509,7 +510,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.47.8/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.48.5/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -553,5 +554,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.47.8/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.48.5/src/commands/validate.ts)_ diff --git a/public/img/posts/the-new-era-approaches.webp b/public/img/posts/the-new-era-approaches.webp new file mode 100644 index 00000000000..b7dac59f05a Binary files /dev/null and b/public/img/posts/the-new-era-approaches.webp differ